From 2d9d65e5503f24a6960d2e6ed011e08d7fe8edae Mon Sep 17 00:00:00 2001 From: Iamgoofball Date: Thu, 7 Apr 2016 19:20:42 -0700 Subject: [PATCH 001/265] Fluorosulfuric SACid :cl: Iamgoofball & Super Aggro Crag tweak: Fluorosulfuric Acid now has doubled acid power. experimental: Fluorosulfuric Acid now does BONUS burn damage scaling on the time it's been inside the consumer. /:cl: --- code/modules/reagents/chemistry/reagents/toxin_reagents.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index a216e2ecdd2..a9dce456941 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -695,4 +695,7 @@ description = "Fluorosulfuric acid is a an extremely corrosive chemical substance." color = "#8E18A9" // rgb: 142, 24, 169 toxpwr = 2 - acidpwr = 20 + acidpwr = 42//0 +/datum/reagent/toxin/acid/fluacid/on_mob_life(mob/living/M) + M.adjustBurnLoss(current_cycle/10) // MY INSIDES ARE MELTING HELP + ..() From 57cf5927d6abbab9289fa662af8cbb4419c8fbd3 Mon Sep 17 00:00:00 2001 From: Iamgoofball Date: Fri, 8 Apr 2016 23:54:23 -0700 Subject: [PATCH 002/265] Update toxin_reagents.dm --- code/modules/reagents/chemistry/reagents/toxin_reagents.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index a9dce456941..f3ea013dd23 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -695,7 +695,7 @@ description = "Fluorosulfuric acid is a an extremely corrosive chemical substance." color = "#8E18A9" // rgb: 142, 24, 169 toxpwr = 2 - acidpwr = 42//0 + acidpwr = 42.0 /datum/reagent/toxin/acid/fluacid/on_mob_life(mob/living/M) - M.adjustBurnLoss(current_cycle/10) // MY INSIDES ARE MELTING HELP + M.adjustFireLoss(current_cycle/10) // MY INSIDES ARE MELTING HELP ..() From bf8c12758bf06327be71e4814715e9aa231671df Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 10 Apr 2016 00:07:33 -0400 Subject: [PATCH 003/265] Update mob_helpers.dm --- code/modules/mob/mob_helpers.dm | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 75a6afd8309..e0b1e175b21 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -127,7 +127,7 @@ if(rand(1,2)==2) if(lowertext(newletter)=="o") newletter="u" - if(lowertext(newletter)=="s") + if(lowertext(newletter)=="t") newletter="ch" if(lowertext(newletter)=="a") newletter="ah" @@ -135,15 +135,15 @@ newletter="oo" if(lowertext(newletter)=="c") newletter=" NAR " - if(lowertext(newletter)=="t") + if(lowertext(newletter)=="s") newletter=" SIE " if(rand(1,4)==4) if(newletter==" ") - newletter=" GLORY " + newletter=" no hope... " if(newletter=="H") - newletter=" HAIL " + newletter=" IT COMES... " - switch(rand(1,10)) + switch(rand(1,15)) if(1) newletter="'" if(2) @@ -152,6 +152,8 @@ newletter="fth" if(4) newletter="nglu" + if(5) + newletter="glor" newphrase+="[newletter]";counter-=1 return newphrase From 16b0a2a01454b5e359094b14b7fbbf96df7d3439 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 10 Apr 2016 00:08:15 -0400 Subject: [PATCH 004/265] Update runes.dm --- code/game/gamemodes/cult/runes.dm | 76 +++++++++++++++---------------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 2904f067736..68462938164 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -200,7 +200,7 @@ var/list/teleport_runes = list() "Your vision blurs, and you suddenly appear somewhere else.") user.forceMove(get_turf(selected_rune)) - +/* var/list/teleport_other_runes = list() //Rite of Forced Translocation: Warps the target to a random teleport rune with the same keyword. /obj/effect/rune/teleport_other @@ -271,12 +271,11 @@ var/list/teleport_other_runes = list() icon_state = "5" color = rgb(0, 0, 255) - /obj/effect/rune/summon_tome/invoke(mob/living/user) visible_message("A frayed tome materializes on the surface of [src], which dissolves into nothing.") new /obj/item/weapon/tome(get_turf(src)) qdel(src) - +*/ //Rite of Enlightenment: Converts a normal crewmember to the cult. Faster for every cultist nearby. /obj/effect/rune/convert @@ -310,6 +309,7 @@ var/list/teleport_other_runes = list() new_cultist.visible_message("[new_cultist] writhes in pain as the markings below them glow a bloody red!", \ "AAAAAAAAAAAAAA-") ticker.mode.add_cultist(new_cultist.mind) + new /obj/item/weapon/tome(get_turf(src)) new_cultist.mind.special_role = "Cultist" new_cultist << "Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible, truth. The veil of reality has been ripped away \ and something evil takes root." @@ -416,7 +416,7 @@ var/list/teleport_other_runes = list() //Ritual of Dimensional Rending: Calls forth the avatar of Nar-Sie upon the station. /obj/effect/rune/narsie - cultist_name = "Call Forth The Geometer" + cultist_name = "Summon Nar-Sie" cultist_desc = "Tears apart dimensional barriers, calling forth the avatar of the Geometer." invocation = null req_cultists = 9 @@ -573,7 +573,7 @@ var/list/teleport_other_runes = list() if(M.stat == DEAD) M.visible_message("[M] twitches.") - +/* //Rite of Obscurity: Turns all runes within a 3-tile radius invisible or reveals them again. /obj/effect/rune/hide_runes cultist_name = "Veil Runes" @@ -619,7 +619,7 @@ var/list/teleport_other_runes = list() invocation = "By'o isit!" icon_state = "4" color = rgb(0, 150, 0) - +*/ /obj/effect/rune/make_runes_fake/invoke(mob/living/user) visible_message("[src] flares brightly, then slowly dulls and appears mundane.") for(var/obj/effect/rune/R in range(3,src)) @@ -732,7 +732,7 @@ var/list/teleport_other_runes = list() var/mob/living/carbon/C = user C.apply_damage(2, BRUTE, pick("l_arm", "r_arm")) - +/* //Rite of the Shadowed Mind: Deafens, blinds and mutes all non-cultists nearby. /obj/effect/rune/deafen cultist_name = "Debilitate" @@ -770,6 +770,7 @@ var/list/teleport_other_runes = list() M.Stun(3) M.flash_eyes(1,1) qdel(src) +*/ //Rite of Joined Souls: Summons a single cultist. /obj/effect/rune/summon cultist_name = "Summon Cultist" @@ -813,7 +814,7 @@ var/list/teleport_other_runes = list() //Rite of Binding: Turns a nearby rune and a paper on top of the rune to a talisman, if both are valid. /obj/effect/rune/imbue - cultist_name = "Bind Talisman" + cultist_name = "Create Talisman" cultist_desc = "Transforms papers and valid runes into talismans." invocation = null //no talisman made, no invocation. icon_state = "3" @@ -822,6 +823,9 @@ var/list/teleport_other_runes = list() /obj/effect/rune/imbue/invoke(mob/living/user) var/turf/T = get_turf(src) var/list/papers_on_rune = list() + var/entered_talisman_name + var/obj/item/weapon/paper/talisman/talisman_type + var/list/possible_talismans = list() for(var/obj/item/weapon/paper/P in T) if(!P.info) papers_on_rune.Add(P) @@ -831,37 +835,32 @@ var/list/teleport_other_runes = list() log_game("Talisman Imbue rune failed - no blank papers on rune") return var/obj/item/weapon/paper/paper_to_imbue = pick(papers_on_rune) - var/list/nearby_runes = list() - for(var/obj/effect/rune/R in orange(1,src)) - nearby_runes.Add(R) - if(!nearby_runes.len) - user << "There are no runes near [src]!" - fail_invoke() - log_game("Talisman Imbue rune failed - no nearby runes") + for(var/I in subtypesof(/obj/item/weapon/paper/talisman) - /obj/item/weapon/paper/talisman/malformed - /obj/item/weapon/paper/talisman/supply) + var/obj/item/weapon/paper/talisman/J = I + if(initial(J.cultist_name)) + possible_talismans.Add(initial(J.cultist_name)) //This is to allow the menu to let cultists select talismans by name + entered_talisman_name = input(user, "Choose a talisman to imbue.", "Talisman Choices") as null|anything in possible_talismans + if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated()) return - var/obj/effect/rune/picked_rune = pick(nearby_runes) - var/list/split_rune_type = splittext("[picked_rune.type]", "/") - var/imbue_type = split_rune_type[split_rune_type.len] - var/talisman_type = text2path("/obj/item/weapon/paper/talisman/[imbue_type]") - if(ispath(talisman_type)) - user.say("H'drak v'loso, mir'kanas verbot!") - var/obj/item/weapon/paper/talisman/TA = new talisman_type(get_turf(src)) - if(istype(picked_rune, /obj/effect/rune/teleport)) - var/obj/effect/rune/teleport/TR = picked_rune - var/obj/item/weapon/paper/talisman/teleport/TT = TA - TT.keyword = TR.keyword - else - user << "The chosen rune was not a valid target!" - fail_invoke() - log_game("Talisman Imbue rune failed - chosen rune invalid") + for(var/I in typesof(/obj/item/weapon/paper/talisman)) + var/obj/effect/rune/J = I + if(initial(J.cultist_name) == entered_talisman_name) + talisman_type = J + user.say("H'drak v'loso, mir'kanas verbot!") + visible_message("Dark power begins to channel into the paper!.") + if(!do_after(user, 150, target = get_turf(user))) return - visible_message("[picked_rune] crumbles to dust, and bloody images form themselves on [paper_to_imbue].") + var/obj/item/weapon/paper/talisman/TA = new talisman_type(get_turf(src)) + if(istype(TA, /obj/item/weapon/paper/talisman/teleport)) + var/the_keyword = stripped_input(usr, "Please enter a keyword for the talisman.", "Enter Keyword", "") + var/obj/item/weapon/paper/talisman/teleport/TELE = TA + TELE.keyword = the_keyword + visible_message("[src] crumbles to dust, and bloody images form themselves on [paper_to_imbue].") qdel(paper_to_imbue) - qdel(picked_rune) qdel(src) //Rite of Fabrication: Creates a construct shell out of 5 metal sheets. /obj/effect/rune/construct_shell - cultist_name = "Fabricate Shell" + cultist_name = "Summon Construct Shell" cultist_desc = "Turns five plasteel sheets into an empty construct shell, suitable for containing a soul shard." invocation = null //see below; doesn't say the invocation unless there's enough sheets. icon_state = "5" @@ -887,7 +886,7 @@ var/list/teleport_other_runes = list() log_game("Construct Shell rune failed - not enough plasteel sheets") return - +/* //Rite of Arming: Creates cult robes, a trophy rack, and a cult sword on the rune. /obj/effect/rune/armor cultist_name = "Summon Armaments" @@ -904,9 +903,9 @@ var/list/teleport_other_runes = list() user.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/cultpack(user), slot_back) user.put_in_hands(new /obj/item/weapon/melee/cultblade(user)) qdel(src) +*/ - -//Rite of Leeching: Deals brute damage to the target and heals the same amount to the invoker. +/*Rite of Leeching: Deals brute damage to the target and heals the same amount to the invoker. /obj/effect/rune/leeching cultist_name = "Drain Life" cultist_desc = "Drains the life of the target on the rune, restoring it to the user." @@ -934,7 +933,7 @@ var/list/teleport_other_runes = list() target << "You feel extremely weak." user.visible_message("Blood flows from the rune into [user]!", \ "[target]'s blood flows into you, healing your wounds and revitalizing your spirit.") - +*/ //Rite of Boiling Blood: Deals extremely high amounts of damage to non-cultists nearby /obj/effect/rune/blood_boil @@ -1008,7 +1007,7 @@ var/list/teleport_other_runes = list() for(var/obj/I in new_human) new_human.unEquip(I) new_human.dust() - +/* //Rite of Dimensional Corruption: Stops time around the rune for all non-cultists. /obj/effect/rune/timestop cultist_name = "Time Stop" @@ -1045,3 +1044,4 @@ var/list/teleport_other_runes = list() if(iscultist(M) || M.null_rod_check()) immune |= M ..() +*/ From bd3ec37e6701f3594b0f9b7a9d7e4ef6f0f54c83 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 10 Apr 2016 00:08:52 -0400 Subject: [PATCH 005/265] Update talisman.dm --- code/game/gamemodes/cult/talisman.dm | 30 +++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 022a4869d40..cf491cc6a66 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -160,7 +160,7 @@ Rite of Disorientation if(iscultist(user) && keyword) user << "Keyword: [keyword]" -//Rite of Knowledge: Same as rune, but has two uses +//Rite of Knowledge: Has two uses /obj/item/weapon/paper/talisman/summon_tome cultist_name = "Talisman of Tome Summoning" cultist_desc = "A one-use talisman that will call an untranslated tome from the archives of the Geometer." @@ -211,7 +211,7 @@ Rite of Disorientation cultist_name = "Talisman of Disguising" cultist_desc = "A talisman that will make nearby runes appear fake." invocation = "By'o nar'nar!" - health_cost = 3 + health_cost = 0 /obj/item/weapon/paper/talisman/make_runes_fake/invoke(mob/living/user) user.visible_message("Dust flows from [user]s hand.", \ @@ -236,14 +236,21 @@ Rite of Disorientation cultist_name = "Talisman of Stunning" cultist_desc = "A talisman that will stun and inhibit speech on a single target. To use, attack target directly." invocation = "Fuu ma'jin!" - health_cost = 15 + health_cost = 12 //Rite of Arming: Equips cultist armor on the user, where available /obj/item/weapon/paper/talisman/armor cultist_name = "Talisman of Arming" cultist_desc = "A talisman that will equip the invoker with cultist equipment if there is a slot to equip it to." invocation = "N'ath reth sh'yro eth draggathnor!" - health_cost = 3 + health_cost = 0 + +//Rite of Horrors: Breaks the mind of the victim with nightmarish hallucinations +/obj/item/weapon/paper/talisman/horror + cultist_name = "Talisman of Horrors" + cultist_desc = "A talisman that will break the mind of the victim with nightmarish hallucinations." + invocation = "Na' Md'lo 'Nab!" + health_cost = 0 /obj/item/weapon/paper/talisman/stun/attack_self(mob/living/user) if(iscultist(user)) @@ -261,15 +268,15 @@ Rite of Disorientation target.visible_message("[target]'s holy weapon absorbs the talisman's light!", \ "Your holy weapon absorbs the blinding light!") else - target.Weaken(9) - target.Stun(9) + target.Weaken(10) + target.Stun(10) target.flash_eyes(1,1) if(issilicon(target)) var/mob/living/silicon/S = target S.emp_act(1) if(iscarbon(target)) var/mob/living/carbon/C = target - C.silent += 4 + C.silent += 5 C.stuttering += 15 C.cultslurring += 15 C.Jitter(15) @@ -286,3 +293,12 @@ Rite of Disorientation user.equip_to_slot_or_del(new /obj/item/clothing/shoes/cult/alt(user), slot_shoes) user.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/cultpack(user), slot_back) user.put_in_hands(new /obj/item/weapon/melee/cultblade(user)) + +/obj/item/weapon/paper/talisman/horror/attack(mob/living/target, mob/living/user) + if(iscultist(user)) + user.visible_message("You disturb [target] with visons of the end!") + if(iscarbon(target)) + var/mob/living/carbon/H = target + H.reagents.add_reagent("mindbreaker", 30) + qdel(src) + return From 2e62fe6139f87939583a9bde3980ba797aa74be5 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 10 Apr 2016 00:09:45 -0400 Subject: [PATCH 006/265] Update ritual.dm --- code/game/gamemodes/cult/ritual.dm | 43 +++++++++++++++++------------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 7ba0a4c788f..34a3dc508d6 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -109,21 +109,24 @@ This file contains the arcane tome files as well as innate cultist emergency com have many different names, and almost all of them are known as Rites. The only rune that is not a Rite is the Ritual of Dimensional Rending, which can only be performed with nine cultists and calls \ forth the avatar of the Geometer herself (so long as she consents).

A rune's name and effects can be revealed by examining the rune.


" - text += "Teleport
The Rite of Translocation is a unique rite in that it requires a keyword before the scribing can begin. When invoked, the rune will \ + text += "Imbue Talisman
The Rite of Talisman Creation is one of the most important. It is the only way to create talismans. A blank sheet of paper must be on top of the rune, with a valid rune nearby. After \ + invoking it, the paper will be converted into a talisman, and the rune inlaid upon it.

" + + text += "Teleport
The Rite of Teleportation is a unique rite in that it requires a keyword before the scribing can begin. When invoked, the rune will \ search for other Rites of Translocation with the same keyword. Assuming one is found, the user will be instantaneously transported to the location of the other rune. If more than two runes are scribed \ with the same keyword, it will choose randomly between all eligible runes and send the invoker to one of them.

" - text += "Teleport Other
The Rite of Forced Translocation, like the Rite of Translocation, works by teleporting the person on the rune to one of the \ +// text += "Teleport Other
The Rite of Forced Translocation, like the Rite of Translocation, works by teleporting the person on the rune to one of the \ same keyword. However, this rune will only work on people other than the user, allowing the user to send any living creature somewhere else.

" - text += "Summon Tome
The Rite of Knowledge is a simplistic rune. When invoked, it will summon a single arcane tome to the rune's location before vanishing. \ +// text += "Summon Tome
The Rite of Knowledge is a simplistic rune. When invoked, it will summon a single arcane tome to the rune's location before vanishing. \

" - text += "Convert
The Rite of Enlightment is paramount to the success of the cult. It will allow you to convert normal crew members into cultists. \ + text += "Convert
The Rite of Conversion is paramount to the success of the cult. It will allow you to convert normal crew members into cultists. \ To do this, simply place the crew member upon the rune and invoke it. This rune requires two acolytes to use. If the target to be converted is loyalty-implanted or a certain assignment, they will \ be unable to be converted. People the Geometer wishes sacrificed will also be ineligible for conversion, and anyone with a shielding presence like the null rod will not be converted.

" - text += "Sacrifice
The Rite of Tribute is used to offer sacrifice to the Geometer. Simply place any living creature upon the rune and invoke it (this will not \ + text += "Sacrifice
The Rite of Sacrifice is used to offer tribute to the Geometer. Simply place any living creature upon the rune and invoke it (this will not \ target cultists!). If this creature has a mind, a soul shard will be created and the creature's soul transported to it. This rune is required if the cult's objectives include the sacrifice of a crew \ member.

" @@ -131,13 +134,13 @@ This file contains the arcane tome files as well as innate cultist emergency com the rune and the offering body adjacent to it. When the rune is invoked, the body to be sacrificed will turn to dust, the life force flowing into the revival target. Assuming the target is not moved \ within a few seconds, they will be brought back to life, healed of all ailments.

" - text += "Veil Runes
The Rite of Obscurity is a rite that will cause all nearby runes to become invisible. The runes will still be considered by other rites \ +// text += "Veil Runes
The Rite of Obscurity is a rite that will cause all nearby runes to become invisible. The runes will still be considered by other rites \ (such as the Rite of Translocation) but will be unusuable directly.(such as the Rite of Translocation) but will be unusuable directly. Use the same rite once more to reveal these runes once more.

" - text += "Reveal Runes
The Rite of True Sight is the foil of the Rite of Obscurity. It will turn all invisible runes visible once more, in addition to causing \ +// text += "Reveal Runes
The Rite of True Sight is the foil of the Rite of Obscurity. It will turn all invisible runes visible once more, in addition to causing \ all spirits nearby to become visible.

" - text += "Disguise Runes
Many crewmen enjoy drawing runes in crayon that resemble spell circles in order to play pranks on their fellow crewmen. The Rite of \ +// text += "Disguise Runes
Many crewmen enjoy drawing runes in crayon that resemble spell circles in order to play pranks on their fellow crewmen. The Rite of \ False Truths takes advantage of this very joke. When invoked, all nearby runes will appear dull, precisely resembling those drawn in crayon. They still cannot be cleaned by conventional means, so \ anyone trying to clean up the rune may become suspicious as it does not respond.

" @@ -153,30 +156,27 @@ This file contains the arcane tome files as well as innate cultist emergency com rune will draw a small amount of life force from the user and make the space above the rune completely dense, rendering it impassable to all but the most complex means. The rune may be invoked again to \ undo this effect and allow passage again.

" - text += "Debilitate
The Rite of the Shadowed Mind is simple. When invoked, it will cause all non-cultists that can see its rune to become deaf, blind and mute for a \ +// text += "Debilitate
The Rite of the Shadowed Mind is simple. When invoked, it will cause all non-cultists that can see its rune to become deaf, blind and mute for a \ considerable amount of time.

" - text += "Stun
Though the Rite of Blazing Light is weak when invoked normally, using it in conjuction with the Rite of Binding makes it much more powerful. \ +// text += "Stun
Though the Rite of Blazing Light is weak when invoked normally, using it in conjuction with the Rite of Binding makes it much more powerful. \ This rune will cause any non-cultists that can see the rune to become disoriented, disabling them for a short time.

" text += "Summon Cultist
The Rite of Joined Souls requires two acolytes to use. When invoked, it will allow the user to summon a single cultist to the rune from \ any location. This will deal a moderate amount of damage to all invokers.

" - text += "Imbue Talisman
The Rite of Binding is the only way to create talismans. A blank sheet of paper must be on top of the rune, with a valid rune nearby. After \ - invoking it, the paper will be converted into a talisman, and the rune inlaid upon it.

" - text += "Fabricate Shell
The Rite of Fabrication is the main way of creating construct shells. To use it, one must place five sheets of plasteel on top of the rune \ and invoke it. The sheets will them be twisted into a construct shell, ready to recieve a soul to occupy it.

" - text += "Summon Armaments
The Rite of Arming will equip the user with armored robes, a backpack, an eldrich longsword, and a pair of boots. Any items that cannot \ +// text += "Summon Armaments
The Rite of Arming will equip the user with armored robes, a backpack, an eldrich longsword, and a pair of boots. Any items that cannot \ be equipped will not be summoned.

" - text += "Drain Life
The Rite of Leeching will drain the life of any non-cultist above the rune and heal the invoker for the same amount.

" +// text += "Drain Life
The Rite of Leeching will drain the life of any non-cultist above the rune and heal the invoker for the same amount.

" text += "Blood Boil
The Rite of Boiling Blood may be considered one of the most dangerous rites composed by the cult of Nar-Sie. When invoked, it will do a \ massive amount of damage to all non-cultist viewers, but it will also emit an explosion upon invocation. Use with caution

" - text += "Time Stop
The Rite of Dimensional Corruption is a versatile rite that can be very strong when protecting our cult from the enemies of the Geometer. \ +// text += "Time Stop
The Rite of Dimensional Corruption is a versatile rite that can be very strong when protecting our cult from the enemies of the Geometer. \ As it is invoked, it will rend and reshape reality around itself, stopping time for all those who don't follow the teachings of the Geometer. However, it requires more than one ritual soul as a \ catalyst, and its power is bound to overflow and hurt its casters.

" @@ -185,7 +185,7 @@ This file contains the arcane tome files as well as innate cultist emergency com to reality is fragile - you must remain on top of the rune, and you will slowly take damage. Upon stepping off the rune, the spirits will dissipate, dropping their items to the ground. You may manifest \ multiple spirits with one rune, but you will rapidly take damage in doing so.

" - text += "Call Forth The Geometer
There is only one way to summon the avatar of Nar-Sie, and that is the Ritual of Dimensional Rending. This ritual, in \ + text += "Summon Nar-Sie
There is only one way to summon the avatar of Nar-Sie, and that is the Ritual of Dimensional Rending. This ritual, in \ comparison to other runes, is very large, requiring a 3x3 space of empty tiles to create. To invoke the rune, nine cultists must stand on the rune, so that all of them are within its circle. Then, \ simply invoke it. A brief tearing will be heard as the barrier between dimensions is torn open, and the avatar will come forth.


" @@ -208,6 +208,11 @@ This file contains the arcane tome files as well as innate cultist emergency com talisman functions differently from others. Rather than simply reading the words, the target must be attacked directly with the talisman. The talisman will then knock down the target for a long \ duration in addition to inhibiting their speech. Robotic lifeforms will suffer the effects of a heavy electromagnetic pulse instead." + text += "Talisman of Armaments
The Rite of Arming will equip the user with armored robes, a backpack, an eldrich longsword, and a pair of boots. Any items that cannot \ + be equipped will not be summoned.

" + + text += "Talisman of Horrors
The Rite of Horror will breaks your victim's mind with visions of the endtimes.

" + var/datum/browser/popup = new(user, "tome", "", 800, 600) popup.set_content(text) popup.open() @@ -246,11 +251,11 @@ This file contains the arcane tome files as well as innate cultist emergency com if(iscarbon(user)) var/mob/living/carbon/C = user C.apply_damage(0.1, BRUTE, pick("l_arm", "r_arm")) - if("Call Forth The Geometer" == entered_rune_name) + if("Summon Nar-Sie" == entered_rune_name) C.apply_damage(40, BRUTE, pick("l_arm", "r_arm")) var/area/A = get_area(src) var/locname = initial(A.name) - priority_announce("Figments from an eldritch god are being summoned by [user] into [locname] from an unknown dimension. Disrupt the ritual before it reaches a critical point.","Central Command Higher Dimensionsal Affairs") + priority_announce("Figments from an eldritch god are being summoned by [user] into [locname] from an unknown dimension. Disrupt the ritual at all costs!","Central Command Higher Dimensional Affairs", 'sound/AI/spanomalies.ogg') if(!do_after(user, 500, target = get_turf(user))) return if(!do_after(user, 50, target = get_turf(user))) From 8931986dcbdcacbfd5475773146b0a201e131d65 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 10 Apr 2016 08:43:33 -0400 Subject: [PATCH 007/265] Update ritual.dm --- code/game/gamemodes/cult/ritual.dm | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 34a3dc508d6..bf9bc0bd313 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -256,11 +256,17 @@ This file contains the arcane tome files as well as innate cultist emergency com var/area/A = get_area(src) var/locname = initial(A.name) priority_announce("Figments from an eldritch god are being summoned by [user] into [locname] from an unknown dimension. Disrupt the ritual at all costs!","Central Command Higher Dimensional Affairs", 'sound/AI/spanomalies.ogg') - if(!do_after(user, 500, target = get_turf(user))) + for(var/turf/B in orange (1, get_turf(user))) + var/turf/O = B + var/N = /obj/machinery/shield + N.color = 'red' + N.health = 100 + O.ChangeTurf(N) + if(!do_after(user, 400, target = get_turf(user))) return if(!do_after(user, 50, target = get_turf(user))) return - user.visible_message("[user] creates a strange circle in their own blood.", \ + user.visible_message("[user] creates a strange circle in their own blood.", \ "You finish drawing the arcane markings of the Geometer.") var/obj/effect/rune/R = new rune_to_scribe(get_turf(user)) if(chosen_keyword) From 07876d977a68c08bc98731d705cf2d9643f66ad1 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 10 Apr 2016 09:50:10 -0400 Subject: [PATCH 008/265] Update ritual.dm --- code/game/gamemodes/cult/ritual.dm | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index bf9bc0bd313..78c81face8d 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -212,7 +212,7 @@ This file contains the arcane tome files as well as innate cultist emergency com be equipped will not be summoned.

" text += "Talisman of Horrors
The Rite of Horror will breaks your victim's mind with visions of the endtimes.

" - + var/datum/browser/popup = new(user, "tome", "", 800, 600) popup.set_content(text) popup.open() @@ -223,7 +223,7 @@ This file contains the arcane tome files as well as innate cultist emergency com var/rune_to_scribe var/entered_rune_name var/list/possible_runes = list() - for(var/T in subtypesof(/obj/effect/rune) - /obj/effect/rune/malformed) + for(var/T in subtypesof(/obj/effect/rune) - /obj/effect/rune/malformed - /obj/effect/rune) var/obj/effect/rune/R = T if(initial(R.cultist_name)) possible_runes.Add(initial(R.cultist_name)) //This is to allow the menu to let cultists select runes by name rather than by object path. I don't know a better way to do this @@ -255,19 +255,21 @@ This file contains the arcane tome files as well as innate cultist emergency com C.apply_damage(40, BRUTE, pick("l_arm", "r_arm")) var/area/A = get_area(src) var/locname = initial(A.name) - priority_announce("Figments from an eldritch god are being summoned by [user] into [locname] from an unknown dimension. Disrupt the ritual at all costs!","Central Command Higher Dimensional Affairs", 'sound/AI/spanomalies.ogg') - for(var/turf/B in orange (1, get_turf(user))) - var/turf/O = B - var/N = /obj/machinery/shield - N.color = 'red' - N.health = 100 - O.ChangeTurf(N) + priority_announce("Figments from an eldritch god are being summoned by [user] into [locname] from an unknown dimension. Disrupt the ritual before it reaches a critical point.","Central Command Higher Dimensionsal Affairs") + for(var/turf/B in orange (1, user)) + var/obj/machinery/shield/N = new(B) + N.color = "red" + N.health = 60 if(!do_after(user, 400, target = get_turf(user))) + for(var/obj/machinery/shield/U in orange (1, user)) + qdel(U) return if(!do_after(user, 50, target = get_turf(user))) return - user.visible_message("[user] creates a strange circle in their own blood.", \ + user.visible_message("[user] creates a strange circle in their own blood.", \ "You finish drawing the arcane markings of the Geometer.") + for(var/obj/machinery/shield/S in orange (1, user)) + qdel(S) var/obj/effect/rune/R = new rune_to_scribe(get_turf(user)) if(chosen_keyword) R.keyword = chosen_keyword From cd89d37e67703412bc031188dbf833ddca86fb7e Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 10 Apr 2016 16:48:34 -0400 Subject: [PATCH 009/265] Update ritual.dm --- code/game/gamemodes/cult/ritual.dm | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 78c81face8d..7995613bbb4 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -89,7 +89,7 @@ This file contains the arcane tome files as well as innate cultist emergency com open_tome(user) /obj/item/weapon/tome/proc/open_tome(mob/user) - var/choice = alert(user,"You open the tome...",,"Commune","Scribe Rune","Read Tome") + var/choice = alert(user,"You open the tome...",,"Commune","Scribe Rune","Read Tome","Cancel") switch(choice) if("Read Tome") read_tome(user) @@ -100,6 +100,8 @@ This file contains the arcane tome files as well as innate cultist emergency com if(!input) return cultist_commune(user, 1, 0, input) + if("Cancel") + return /obj/item/weapon/tome/proc/read_tome(mob/user) var/text = "" @@ -112,15 +114,8 @@ This file contains the arcane tome files as well as innate cultist emergency com text += "Imbue Talisman
The Rite of Talisman Creation is one of the most important. It is the only way to create talismans. A blank sheet of paper must be on top of the rune, with a valid rune nearby. After \ invoking it, the paper will be converted into a talisman, and the rune inlaid upon it.

" - text += "Teleport
The Rite of Teleportation is a unique rite in that it requires a keyword before the scribing can begin. When invoked, the rune will \ - search for other Rites of Translocation with the same keyword. Assuming one is found, the user will be instantaneously transported to the location of the other rune. If more than two runes are scribed \ - with the same keyword, it will choose randomly between all eligible runes and send the invoker to one of them.

" - -// text += "Teleport Other
The Rite of Forced Translocation, like the Rite of Translocation, works by teleporting the person on the rune to one of the \ - same keyword. However, this rune will only work on people other than the user, allowing the user to send any living creature somewhere else.

" - -// text += "Summon Tome
The Rite of Knowledge is a simplistic rune. When invoked, it will summon a single arcane tome to the rune's location before vanishing. \ -

" + text += "Teleport
The Rite of Teleportation is a unique rite in that it requires a keyword before the scribing can begin. When invoked, search for other Rites of Translocation. \ + If any are found, the user can choose which rune to send to. Upon activation, the rune teleports everything above it to the selected rune.

".

" text += "Convert
The Rite of Conversion is paramount to the success of the cult. It will allow you to convert normal crew members into cultists. \ To do this, simply place the crew member upon the rune and invoke it. This rune requires two acolytes to use. If the target to be converted is loyalty-implanted or a certain assignment, they will \ @@ -165,7 +160,7 @@ This file contains the arcane tome files as well as innate cultist emergency com text += "Summon Cultist
The Rite of Joined Souls requires two acolytes to use. When invoked, it will allow the user to summon a single cultist to the rune from \ any location. This will deal a moderate amount of damage to all invokers.

" - text += "Fabricate Shell
The Rite of Fabrication is the main way of creating construct shells. To use it, one must place five sheets of plasteel on top of the rune \ + text += "Fabricate Shell
The Rite of Fabrication is the main way of creating construct shells. To use it, one must place fifteen sheets of metal on top of the rune \ and invoke it. The sheets will them be twisted into a construct shell, ready to recieve a soul to occupy it.

" // text += "Summon Armaments
The Rite of Arming will equip the user with armored robes, a backpack, an eldrich longsword, and a pair of boots. Any items that cannot \ @@ -174,7 +169,7 @@ This file contains the arcane tome files as well as innate cultist emergency com // text += "Drain Life
The Rite of Leeching will drain the life of any non-cultist above the rune and heal the invoker for the same amount.

" text += "Blood Boil
The Rite of Boiling Blood may be considered one of the most dangerous rites composed by the cult of Nar-Sie. When invoked, it will do a \ - massive amount of damage to all non-cultist viewers, but it will also emit an explosion upon invocation. Use with caution

" + massive amount of damage to all non-cultist viewers, but it will also emit an explosion upon invocation. It requires three invokers.

" // text += "Time Stop
The Rite of Dimensional Corruption is a versatile rite that can be very strong when protecting our cult from the enemies of the Geometer. \ As it is invoked, it will rend and reshape reality around itself, stopping time for all those who don't follow the teachings of the Geometer. However, it requires more than one ritual soul as a \ @@ -255,7 +250,7 @@ This file contains the arcane tome files as well as innate cultist emergency com C.apply_damage(40, BRUTE, pick("l_arm", "r_arm")) var/area/A = get_area(src) var/locname = initial(A.name) - priority_announce("Figments from an eldritch god are being summoned by [user] into [locname] from an unknown dimension. Disrupt the ritual before it reaches a critical point.","Central Command Higher Dimensionsal Affairs") + priority_announce("Figments from an eldritch god are being summoned by [user] into [locname] from an unknown dimension. Disrupt the ritual at all costs!","Central Command Higher Dimensionsal Affairs", 'sound/AI/spanomalies.ogg') for(var/turf/B in orange (1, user)) var/obj/machinery/shield/N = new(B) N.color = "red" From 07ec6c1b1f52f68250393f8388d9b7179affe97a Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 10 Apr 2016 17:16:41 -0400 Subject: [PATCH 010/265] Selected Joan improvements --- code/game/gamemodes/cult/runes.dm | 334 ++++++------------------------ 1 file changed, 67 insertions(+), 267 deletions(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 68462938164..75b1da5556f 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -163,119 +163,54 @@ var/list/teleport_runes = list() //Rite of Translocation: Warps the user to a random teleport rune with the same keyword. /obj/effect/rune/teleport cultist_name = "Teleport" - cultist_desc = "Warps the user to a random rune of the same keyword." + cultist_desc = "Warps everything above it to another chosen teleport rune." invocation = "Sas'so c'arta forbici!" icon_state = "2" color = rgb(0, 0, 255) req_keyword = 1 + var/listkey -/obj/effect/rune/teleport/New() +/obj/effect/rune/teleport/New(loc, set_keyword) ..() teleport_runes.Add(src) + var/area/A = get_area(src) + var/locname = initial(A.name) + listkey = set_keyword ? "[set_keyword] [locname]":"[locname]" + teleport_runes["[listkey]"] = src /obj/effect/rune/teleport/Destroy() - teleport_runes.Remove(src) - ..() + teleport_runes.Remove(listkey) + return ..() /obj/effect/rune/teleport/invoke(mob/living/user) - var/list/potential_runes = list() - for(var/obj/effect/rune/teleport/T in teleport_runes) - if(T.keyword == src.keyword && T != src && (T.z <= ZLEVEL_SPACEMAX)) - potential_runes.Add(T) + for(var/R in teleport_runes) + var/obj/effect/rune/teleport/T = teleport_runes[R] + if(T != src && (T.z <= ZLEVEL_SPACEMAX)) + potential_runes["[T.listkey]"] = T if(!potential_runes.len) - user << "There are no runes with the same keyword!" + user << "There are no valid runes to teleport to!" fail_invoke() - log_game("Teleport rune failed - no candidates with matching keyword") + log_game("Teleport rune failed - no other teleport runes") return - - if(user.z > ZLEVEL_SPACEMAX) - user << "You are not in the right dimension!" + + var/input_rune_key = input(user, "Choose a rune to teleport to.", "Rune to Teleport to") as null|anything in potential_runes + var/obj/effect/rune/teleport/actual_selected_rune = teleport_runes["[input_rune_key]"] + if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated() || !actual_selected_rune) fail_invoke() - log_game("Teleport rune failed - user in away mission") return - - var/obj/effect/rune/selected_rune = pick(potential_runes) - user.visible_message("[user] vanishes in a flash of red light!", \ - "Your vision blurs, and you suddenly appear somewhere else.") - user.forceMove(get_turf(selected_rune)) - -/* -var/list/teleport_other_runes = list() -//Rite of Forced Translocation: Warps the target to a random teleport rune with the same keyword. -/obj/effect/rune/teleport_other - cultist_name = "Teleport Other" - cultist_desc = "Warps the target to a random rune of the same keyword." - invocation = "Sas'so c'arta forbica!" - icon_state = "1" - color = rgb(200, 0, 0) - req_keyword = 1 - -/obj/effect/rune/teleport_other/New() - ..() - teleport_other_runes.Add(src) - -/obj/effect/rune/teleport_other/Destroy() - teleport_other_runes.Remove(src) - ..() - -/obj/effect/rune/teleport_other/invoke(mob/living/user) - var/list/potential_runes = list() - for(var/obj/effect/rune/teleport_other/T in teleport_other_runes) - if(T.keyword == src.keyword && T != src && (T.z <= ZLEVEL_SPACEMAX)) - potential_runes.Add(T) - - if(!potential_runes.len) - user << "There are no runes with the same keyword!" - fail_invoke() - log_game("Teleport Other rune failed - no candidates with matching keyword") - return - - if(user.z > ZLEVEL_SPACEMAX) - user << "You are not in the right dimension!" - fail_invoke() - log_game("Teleport rune failed - user in away mission") - return - - var/obj/effect/rune/selected_rune = pick(potential_runes) - var/mob/living/target - - var/list/targets = list() - for(var/mob/living/L in get_turf(src)) - if(L != user) - targets.Add(L) - if(!targets.len) - user << "There are no targets standing on the rune!" - fail_invoke() - log_game("Teleport Other rune failed - no targets on rune") - return - if(targets.len > 1) - target = input(user, "Choose a person to teleport.", "Rite of Forced Translocation") as null|anything in targets - user - if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated()) - return - if(!target) - fail_invoke() - return - else - target = targets[targets.len] - - target.visible_message("[target] vanishes in a flash of red light!", \ - "Your vision blurs, and you suddenly appear somewhere else.") - target.forceMove(get_turf(selected_rune)) - -//Rite of Knowledge: Creates an arcane tome at the rune's location and destroys the rune. -/obj/effect/rune/summon_tome - cultist_name = "Summon Tome" - cultist_desc = "Pulls an arcane tome from the archives of the Geometer." - invocation = "N'ath reth sh'yro eth d'raggathnor!" - icon_state = "5" - color = rgb(0, 0, 255) - -/obj/effect/rune/summon_tome/invoke(mob/living/user) - visible_message("A frayed tome materializes on the surface of [src], which dissolves into nothing.") - new /obj/item/weapon/tome(get_turf(src)) - qdel(src) -*/ + var/turf/T = get_turf(src) + var/turf/UT = get_turf(user) + var/movedsomething = 0 + for(var/atom/movable/A in T) + if(!A.anchored) + movedsomething = 1 + A.forceMove(get_turf(actual_selected_rune)) + if(movedsomething) + visible_message("There is a sharp crack of inrushing air, and everything above the rune disappears!") + user << "You[user.loc == UT ? " send everything above the rune away":"r vision blurs, and you suddenly appear somewhere else"]." + else + fail_invoke() //Rite of Enlightenment: Converts a normal crewmember to the cult. Faster for every cultist nearby. /obj/effect/rune/convert @@ -489,7 +424,7 @@ var/list/teleport_other_runes = list() //Rite of Resurrection: Requires two corpses. Revives one and gibs the other. /obj/effect/rune/raise_dead cultist_name = "Raise Dead" - cultist_desc = "Requires two corpses. The one placed upon the rune is brought to life, the other is turned to ash." + cultist_desc = "Requires two corpses. One on the rune and one adjacent. The one placed upon the rune is brought to life, the other is turned to ash." invocation = null //Depends on the name of the user - see below icon_state = "1" color = rgb(255, 0, 0) @@ -510,7 +445,7 @@ var/list/teleport_other_runes = list() log_game("Raise Dead rune failed - no catalyst corpse") return mob_to_sacrifice = input(user, "Choose a corpse to sacrifice.", "Corpse to Sacrifice") as null|anything in potential_sacrifice_mobs - if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated()) + if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated() || !mob_to_revive || !mob_to_sacrifice) return for(var/mob/living/M in T.contents) if(M.stat == DEAD) @@ -573,57 +508,6 @@ var/list/teleport_other_runes = list() if(M.stat == DEAD) M.visible_message("[M] twitches.") -/* -//Rite of Obscurity: Turns all runes within a 3-tile radius invisible or reveals them again. -/obj/effect/rune/hide_runes - cultist_name = "Veil Runes" - cultist_desc = "Turns nearby runes invisible. They can be revealed by using the Reveal Rune." - invocation = "Kla'atu barada nikt'o!" - icon_state = "1" - color = rgb(0,0,255) - -/obj/effect/rune/hide_runes/invoke(mob/living/user) - visible_message("[src] darkens to black and vanishes.") - for(var/obj/effect/rune/R in orange(3,src)) - R.visible_message("[R] fades away.") - R.invisibility = INVISIBILITY_OBSERVER - R.alpha = 100 //To help ghosts distinguish hidden runes - for(var/mob/dead/observer/O in orange(3,src)) - if(!O.invisibility) - O << "You suddenly feel as if you've vanished..." - O.invisibility = INVISIBILITY_OBSERVER - qdel(src) - -//Rite of True Sight: Turns ghosts and obscured runes visible -/obj/effect/rune/true_sight - cultist_name = "Reveal Runes" - cultist_desc = "Reveals all invisible objects nearby, from spirits to runes." - invocation = "Nikt'o barada kla'atu!" - icon_state = "4" - color = rgb(255, 255, 255) - -/obj/effect/rune/true_sight/invoke() - visible_message("[src] explodes in a flash of blinding light!") - for(var/mob/dead/observer/O in orange(3,src)) - O << "You suddenly feel very obvious..." - O.invisibility = 0 - for(var/obj/effect/rune/R in orange(3,src)) - R.invisibility = 0 - R.alpha = initial(R.alpha) - qdel(src) - - //Rite of False Truths: Makes runes appear like crayon ones -/obj/effect/rune/make_runes_fake - cultist_name = "Disguise Runes" - cultist_desc = "Causes all nearby runes (including itself) to resemble those drawn in crayon." - invocation = "By'o isit!" - icon_state = "4" - color = rgb(0, 150, 0) -*/ -/obj/effect/rune/make_runes_fake/invoke(mob/living/user) - visible_message("[src] flares brightly, then slowly dulls and appears mundane.") - for(var/obj/effect/rune/R in range(3,src)) - R.desc = "A rune drawn in crayon." //Rite of Disruption: Emits an EMP blast. /obj/effect/rune/emp @@ -636,11 +520,10 @@ var/list/teleport_other_runes = list() /obj/effect/rune/emp/invoke(mob/living/user) visible_message("[src] glows blue for a moment before vanishing.") for(var/mob/living/carbon/C in orange(1,src)) - C << "You feel a minute vibration pass through you!" + C << "Your hair stands on end as a shockwave bursts from the rune!" playsound(get_turf(src), 'sound/items/Welder2.ogg', 25, 1) - empulse(src, 4, 8) //A bit less than an EMP grenade - qdel(src) - + qdel(src) //delete before pulsing + empulse(src, 8, 12) //actually worth using over the talisman now //Rite of Astral Communion: Separates one's spirit from their body. They will take damage while it is active. /obj/effect/rune/astral @@ -713,8 +596,8 @@ var/list/teleport_other_runes = list() //Rite of the Corporeal Shield: When invoked, becomes solid and cannot be passed. Invoke again to undo. /obj/effect/rune/wall - cultist_name = "Form Shield" - cultist_desc = "When invoked, makes the rune block passage. Can be invoked again to reverse this." + cultist_name = "Form Barrier" + cultist_desc = "When invoked, makes an invisible wall to block passage. Can be invoked again to reverse this." invocation = "Khari'd! Eske'te tannin!" icon_state = "1" color = rgb(255, 0, 0) @@ -732,45 +615,7 @@ var/list/teleport_other_runes = list() var/mob/living/carbon/C = user C.apply_damage(2, BRUTE, pick("l_arm", "r_arm")) -/* -//Rite of the Shadowed Mind: Deafens, blinds and mutes all non-cultists nearby. -/obj/effect/rune/deafen - cultist_name = "Debilitate" - cultist_desc = "Causes all non-followers nearby to lose their hearing, sight and voice." - invocation = "Sti kaliedir!" - color = rgb(0, 255, 0) - icon_state = "4" -/obj/effect/rune/deafen/invoke(mob/living/user) - visible_message("[src] emits a blinding red flash!") - for(var/mob/living/carbon/C in viewers(src)) - if(!iscultist(C) && !C.null_rod_check()) - C << "A dark fog blankets your senses!" - C.adjustEarDamage(0,50) - C.flash_eyes(1, 1) - C.adjust_blurriness(50) - C.adjust_blindness(20) - C.silent += 10 - qdel(src) - -//Rite of Disorientation: Stuns and mutes all non-cultists nearby for a brief time -/obj/effect/rune/stun - cultist_name = "Stun" - cultist_desc = "Stuns all nearby non-followers for a brief time." - invocation = "Fuu ma'jin!" - icon_state = "2" - color = rgb(100, 0, 100) - -/obj/effect/rune/stun/invoke(mob/living/user) - visible_message("[src] explodes in a bright flash!") - for(var/mob/living/M in viewers(src)) - if(!iscultist(M) && !M.null_rod_check()) - M << "You are disoriented by [src]!" - M.Weaken(3) - M.Stun(3) - M.flash_eyes(1,1) - qdel(src) -*/ //Rite of Joined Souls: Summons a single cultist. /obj/effect/rune/summon cultist_name = "Summon Cultist" @@ -808,10 +653,9 @@ var/list/teleport_other_runes = list() "Overwhelming vertigo consumes you as you are hurled through the air!") visible_message("A foggy shape materializes atop [src] and solidifes into [cultist_to_summon]!") user.apply_damage(10, BRUTE, "head") - cultist_to_summon.loc = get_turf(src) + cultist_to_summon.forceMove(get_turf(src)) qdel(src) - //Rite of Binding: Turns a nearby rune and a paper on top of the rune to a talisman, if both are valid. /obj/effect/rune/imbue cultist_name = "Create Talisman" @@ -858,82 +702,31 @@ var/list/teleport_other_runes = list() visible_message("[src] crumbles to dust, and bloody images form themselves on [paper_to_imbue].") qdel(paper_to_imbue) qdel(src) -//Rite of Fabrication: Creates a construct shell out of 5 metal sheets. + +//Rite of Fabrication: Creates a construct shell out of 15 metal sheets. /obj/effect/rune/construct_shell cultist_name = "Summon Construct Shell" - cultist_desc = "Turns five plasteel sheets into an empty construct shell, suitable for containing a soul shard." - invocation = null //see below; doesn't say the invocation unless there's enough sheets. + cultist_desc = "Turns fifteen metal sheets into an empty construct shell, suitable for containing a soul shard." + invocation = "Ethra p'ni dedol!" icon_state = "5" color = rgb(150, 150, 150) /obj/effect/rune/construct_shell/invoke(mob/living/user) var/turf/T = get_turf(src) - for(var/obj/item/stack/sheet/S in T) - if(istype(S, /obj/item/stack/sheet/plasteel)) - var/obj/item/stack/sheet/plasteel/M = S - if(M.amount >= 5) - user.say("Ethra p'ni dedol!") - new /obj/structure/constructshell(T) - M.visible_message("[M] bends and twists into a humanoid shell!") - M.amount -= 5 - if(M.amount <= 0) - qdel(M) - qdel(src) - return - else - user << "There must be at least five sheets of plasteel on [src]!" - fail_invoke() - log_game("Construct Shell rune failed - not enough plasteel sheets") - return + var/canmakeshell = 0 + for(var/obj/item/stack/sheet/metal/S in T) + if(!canmakeshell && S.use(15)) + canmakeshell = 1 + if(canmakeshell) + . = ..() + else + user << "There must be at least fifteen sheets of metal on [src]!" + log_game("Construct Shell rune failed - not enough metal sheets") -/* -//Rite of Arming: Creates cult robes, a trophy rack, and a cult sword on the rune. -/obj/effect/rune/armor - cultist_name = "Summon Armaments" - cultist_desc = "Equips the user with robes, shoes, a backpack, and a longsword. Items that cannot be equipped will not be summoned." - invocation = "N'ath reth sh'yro eth draggathnor!" - icon_state = "4" - color = rgb(255, 0, 0) - -/obj/effect/rune/armor/invoke(mob/living/user) - visible_message("With the sound of clanging metal, [src] crumbles to dust!") - user.equip_to_slot_or_del(new /obj/item/clothing/head/culthood/alt(user), slot_head) - user.equip_to_slot_or_del(new /obj/item/clothing/suit/cultrobes/alt(user), slot_wear_suit) - user.equip_to_slot_or_del(new /obj/item/clothing/shoes/cult/alt(user), slot_shoes) - user.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/cultpack(user), slot_back) - user.put_in_hands(new /obj/item/weapon/melee/cultblade(user)) - qdel(src) -*/ - -/*Rite of Leeching: Deals brute damage to the target and heals the same amount to the invoker. -/obj/effect/rune/leeching - cultist_name = "Drain Life" - cultist_desc = "Drains the life of the target on the rune, restoring it to the user." - invocation = null //see below; doesn't say the invocation if it has no targets. - icon_state = "2" - color = rgb(255, 0, 0) - -/obj/effect/rune/leeching/invoke(mob/living/user) - var/turf/T = get_turf(src) - var/list/potential_targets = list() - for(var/mob/living/carbon/M in T) - if(M.stat != DEAD && M != user) - potential_targets.Add(M) - if(!potential_targets.len) - user << "There must be a valid target on the rune!" - fail_invoke() - log_game("Leeching rune failed - no valid targets") - return - var/mob/living/carbon/target = pick(potential_targets) - var/drained_amount = rand(5,25) - user.say("Yu'gular faras desdae. Umathar uf'kal thenar!") - target.apply_damage(drained_amount, BRUTE, "chest") - user.adjustBruteLoss(-drained_amount) - user.Beam(target,icon_state="drainbeam",icon='icons/effects/effects.dmi',time=3) - target << "You feel extremely weak." - user.visible_message("Blood flows from the rune into [user]!", \ - "[target]'s blood flows into you, healing your wounds and revitalizing your spirit.") -*/ +/obj/effect/rune/construct_shell/invoke(mob/living/user) + new /obj/structure/constructshell(get_turf(src)) + visible_message("The metal bends and twists into a humanoid shell!") + qdel(src) //Rite of Boiling Blood: Deals extremely high amounts of damage to non-cultists nearby /obj/effect/rune/blood_boil @@ -970,21 +763,28 @@ var/list/teleport_other_runes = list() icon_state = "6" color = rgb(255, 0, 0) -/obj/effect/rune/manifest/invoke(mob/living/user) +/obj/effect/rune/manifest/can_invoke(mob/living/user) if(!(user in get_turf(src))) user << "You must be standing on [src]!" fail_invoke() log_game("Manifest rune failed - user not standing on rune") - return + return 0 var/list/ghosts_on_rune = list() for(var/mob/dead/observer/O in get_turf(src)) if(O.client && !jobban_isbanned(O, ROLE_CULTIST)) - ghosts_on_rune.Add(O) + ghosts_on_rune |= O if(!ghosts_on_rune.len) user << "There are no spirits near [src]!" fail_invoke() log_game("Manifest rune failed - no nearby ghosts") - return + return 0 + return ..() + +/obj/effect/rune/manifest/invoke(mob/living/user) + var/list/ghosts_on_rune = list() + for(var/mob/dead/observer/O in get_turf(src)) + if(O.client && !jobban_isbanned(O, ROLE_CULTIST)) + ghosts_on_rune |= O var/mob/dead/observer/ghost_to_spawn = pick(ghosts_on_rune) var/mob/living/carbon/human/new_human = new(get_turf(src)) new_human.real_name = ghost_to_spawn.real_name From b57c0cd0e66bf2c2d9f25a01c68fe4b61247f523 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 10 Apr 2016 17:33:21 -0400 Subject: [PATCH 011/265] Selected --- code/game/gamemodes/cult/ritual.dm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 7995613bbb4..23f7845d9bd 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -13,7 +13,11 @@ This file contains the arcane tome files as well as innate cultist emergency com if(!iscultist(usr) || usr.incapacitated()) return - + if(!istype(usr, /mob/living/simple_animal)) + var/confirm_desperation = alert(user, "This is a LAST RESORT, you should use a tome to communicate if possible. This ritual will inflict serious injury on you!", "Is this what you want?", "Yes", "No") + if(confirm_desperation == "No") + user << "On second thought, maybe I should summon a tome." + return var/input = stripped_input(usr, "Please choose a message to tell to the other acolytes.", "Voice of Blood", "") if(!input) return @@ -41,7 +45,6 @@ This file contains the arcane tome files as well as innate cultist emergency com cultist_commune(usr, 0, 1, input) return - /obj/item/weapon/tome name = "arcane tome" desc = "An old, dusty tome with frayed edges and a sinister-looking cover." From c0563aa7268e66a6dde7051746d9fe8f2e0858a4 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 10 Apr 2016 17:53:34 -0400 Subject: [PATCH 012/265] Colored talismans and selected Joan improvements --- code/game/gamemodes/cult/talisman.dm | 81 ++++++++++++++++------------ 1 file changed, 48 insertions(+), 33 deletions(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index cf491cc6a66..ab7e55376ec 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -20,6 +20,7 @@ Rite of Disorientation var/invocation = "Naise meam!" var/uses = 1 var/health_cost = 0 //The amount of health taken from the user when invoking the talisman + var/color = null /obj/item/weapon/paper/talisman/examine(mob/user) if(iscultist(user) || user.stat == DEAD) @@ -58,7 +59,6 @@ Rite of Disorientation var/mob/living/carbon/C = user C.apply_damage(10, BRUTE, "head") - //Supply Talisman: Has a few unique effects. Granted only to starter cultists. /obj/item/weapon/paper/talisman/supply cultist_name = "Supply Talisman" @@ -71,7 +71,7 @@ Rite of Disorientation dat += "Please choose the chant to be imbued into the fabric of reality.
" dat += "
" dat += "N'ath reth sh'yro eth d'raggathnor! - Allows you to summon an arcane tome.
" - dat += "Sas'so c'arta forbici! - Allows you to move to a Rite of Dislocation with the keyword of \"veri\".
" + dat += "Sas'so c'arta forbici! - Allows you to move to a selected Rite of Dislocation".
" dat += "Ta'gh fara'qha fel d'amar det! - Allows you to destroy technology in a short range.
" dat += "Kla'atu barada nikt'o! - Allows you to conceal nearby runes.
" dat += "Nikt'o barada kla'atu! - Allows you to reveal nearby runes.
" @@ -129,59 +129,58 @@ Rite of Disorientation /obj/item/weapon/paper/talisman/teleport cultist_name = "Talisman of Teleportation" cultist_desc = "A single-use talisman that will teleport a user to a random rune of the same keyword." + color = "#9900cc" // purple invocation = "Sas'so c'arta forbici!" health_cost = 5 var/keyword = "ire" /obj/item/weapon/paper/talisman/teleport/invoke(mob/living/user) - var/list/possible_runes = list() - for(var/obj/effect/rune/teleport/R in teleport_runes) - if(R.keyword == src.keyword) - possible_runes.Add(R) - if(!possible_runes.len) - user << "There are no Teleport runes with the same keyword!" - log_game("Teleportation talisman failed - no teleport runes of the same keyword") - uses++ //To prevent deletion - return - var/chosen_rune = pick(possible_runes) + ..() + var/list/potential_runes = list() + for(var/R in teleport_runes) + var/obj/effect/rune/teleport/T = teleport_runes[R] + if(T.z <= ZLEVEL_SPACEMAX) + potential_runes["[T.listkey]"] = T + + if(!potential_runes.len) + user << "There are no valid runes to teleport to!" + log_game("Teleport talisman failed - no other teleport runes") + return 0 + + if(user.z > ZLEVEL_SPACEMAX) + user << "You are not in the right dimension!" + log_game("Teleport talisman failed - user in away mission") + return 0 + + var/input_rune_key = input(user, "Choose a rune to teleport to.", "Rune to Teleport to") as null|anything in potential_runes + var/obj/effect/rune/teleport/actual_selected_rune = teleport_runes["[input_rune_key]"] + if(!actual_selected_rune) + return 0 user.visible_message("Dust flows from [user]'s hand, and they disappear in a flash of red light!", \ "You speak the words of the talisman and find yourself somewhere else!") - if(user.buckled) - user.buckled.unbuckle_mob(user,force=1) - user.loc = get_turf(chosen_rune) - -/obj/item/weapon/paper/talisman/teleport/New() - ..() - spawn(1) //To give the keyword time to change from the imbue rune - info += keyword - -/obj/item/weapon/paper/talisman/teleport/examine(mob/user) - ..() - if(iscultist(user) && keyword) - user << "Keyword: [keyword]" + user.forceMove(get_turf(actual_selected_rune)) + return 1 //Rite of Knowledge: Has two uses /obj/item/weapon/paper/talisman/summon_tome cultist_name = "Talisman of Tome Summoning" cultist_desc = "A one-use talisman that will call an untranslated tome from the archives of the Geometer." + color = "#000000" // tome-black invocation = "N'ath reth sh'yro eth d'raggathnor!" health_cost = 1 /obj/item/weapon/paper/talisman/summon_tome/invoke(mob/living/user) user.visible_message("[user]'s hand glows red for a moment.", \ "You speak the words of the talisman!") - var/obj/item/weapon/tome/T = new(get_turf(user)) - if(user.put_in_hands(T)) - user.visible_message("A tome appears in [user]'s hand!", \ - "An arcane tome materializes in your free hand.") - else - user.visible_message("A tome appears at [user]'s feet!", \ - "An arcane tome materialzies at your feet.") + new /obj/item/weapon/tome(get_turf(user)) + user.visible_message("A tome appears at [user]'s feet!", \ + "An arcane tome materialzies at your feet.") //Talisman of Obscurity: Same as rune /obj/item/weapon/paper/talisman/hide_runes cultist_name = "Talisman of Veiling" cultist_desc = "A talisman that will make all runes within a small radius invisible." + color = "#b3b3b3" // light grey invocation = "Kla'atu barada nikt'o!" health_cost = 1 @@ -196,6 +195,7 @@ Rite of Disorientation /obj/item/weapon/paper/talisman/true_sight cultist_name = "Talisman of Revealing" cultist_desc = "A talisman that reveals nearby invisible runes." + color = "#4d4d4d" // dark grey invocation = "Nikt'o barada kla'atu!" health_cost = 1 @@ -210,6 +210,7 @@ Rite of Disorientation /obj/item/weapon/paper/talisman/make_runes_fake cultist_name = "Talisman of Disguising" cultist_desc = "A talisman that will make nearby runes appear fake." + color = "#ff80d5" // honk invocation = "By'o nar'nar!" health_cost = 0 @@ -219,10 +220,11 @@ Rite of Disorientation for(var/obj/effect/rune/R in orange(3,user)) R.desc = "A rune drawn in crayon." -//Rite of Disruption: Same as rune +//Rite of Disruption: Weaker than rune /obj/item/weapon/paper/talisman/emp cultist_name = "Talisman of Electromagnetic Pulse" cultist_desc = "A talisman that will cause a moderately-sized electromagnetic pulse." + color = "#4d94ff" // light blue invocation = "Ta'gh fara'qha fel d'amar det!" health_cost = 5 @@ -235,6 +237,7 @@ Rite of Disorientation /obj/item/weapon/paper/talisman/stun cultist_name = "Talisman of Stunning" cultist_desc = "A talisman that will stun and inhibit speech on a single target. To use, attack target directly." + color = "#ff0000" // red invocation = "Fuu ma'jin!" health_cost = 12 @@ -242,6 +245,7 @@ Rite of Disorientation /obj/item/weapon/paper/talisman/armor cultist_name = "Talisman of Arming" cultist_desc = "A talisman that will equip the invoker with cultist equipment if there is a slot to equip it to." + color = "#33cc33" // green invocation = "N'ath reth sh'yro eth draggathnor!" health_cost = 0 @@ -249,6 +253,7 @@ Rite of Disorientation /obj/item/weapon/paper/talisman/horror cultist_name = "Talisman of Horrors" cultist_desc = "A talisman that will break the mind of the victim with nightmarish hallucinations." + color = "#ffb366" // light orange invocation = "Na' Md'lo 'Nab!" health_cost = 0 @@ -286,14 +291,24 @@ Rite of Disorientation ..() /obj/item/weapon/paper/talisman/armor/invoke(mob/living/user) + . = ..() user.visible_message("Otherworldly armor suddenly appears on [user]!", \ "You speak the words of the talisman, arming yourself!") user.equip_to_slot_or_del(new /obj/item/clothing/head/culthood/alt(user), slot_head) user.equip_to_slot_or_del(new /obj/item/clothing/suit/cultrobes/alt(user), slot_wear_suit) user.equip_to_slot_or_del(new /obj/item/clothing/shoes/cult/alt(user), slot_shoes) user.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/cultpack(user), slot_back) + user.drop_item() user.put_in_hands(new /obj/item/weapon/melee/cultblade(user)) +/obj/item/weapon/paper/talisman/armor/attack(mob/living/target, mob/living/user) + if(iscultist(user) && iscultist(target)) + user.drop_item() + invoke(target) + qdel(src) + return + ..() + /obj/item/weapon/paper/talisman/horror/attack(mob/living/target, mob/living/user) if(iscultist(user)) user.visible_message("You disturb [target] with visons of the end!") From 21a8b29bdadcb0f03c29ad85504f2eae545d80de Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 10 Apr 2016 17:59:42 -0400 Subject: [PATCH 013/265] Remie changes --- code/game/gamemodes/cult/talisman.dm | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index ab7e55376ec..31f041b5ba0 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -212,12 +212,11 @@ Rite of Disorientation cultist_desc = "A talisman that will make nearby runes appear fake." color = "#ff80d5" // honk invocation = "By'o nar'nar!" - health_cost = 0 /obj/item/weapon/paper/talisman/make_runes_fake/invoke(mob/living/user) user.visible_message("Dust flows from [user]s hand.", \ "You speak the words of the talisman, making nearby runes appear fake.") - for(var/obj/effect/rune/R in orange(3,user)) + for(var/obj/effect/rune/R in orange(6,user)) R.desc = "A rune drawn in crayon." //Rite of Disruption: Weaker than rune @@ -247,15 +246,13 @@ Rite of Disorientation cultist_desc = "A talisman that will equip the invoker with cultist equipment if there is a slot to equip it to." color = "#33cc33" // green invocation = "N'ath reth sh'yro eth draggathnor!" - health_cost = 0 //Rite of Horrors: Breaks the mind of the victim with nightmarish hallucinations /obj/item/weapon/paper/talisman/horror cultist_name = "Talisman of Horrors" cultist_desc = "A talisman that will break the mind of the victim with nightmarish hallucinations." color = "#ffb366" // light orange - invocation = "Na' Md'lo 'Nab!" - health_cost = 0 + invocation = "Lo'Nab Na'Dm!" /obj/item/weapon/paper/talisman/stun/attack_self(mob/living/user) if(iscultist(user)) @@ -316,4 +313,3 @@ Rite of Disorientation var/mob/living/carbon/H = target H.reagents.add_reagent("mindbreaker", 30) qdel(src) - return From d1eaf9aad048f8a7f12072a734c00288147001d9 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 10 Apr 2016 18:08:38 -0400 Subject: [PATCH 014/265] Further selected Joan improvements --- code/game/gamemodes/cult/ritual.dm | 25 ++----------------------- 1 file changed, 2 insertions(+), 23 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 23f7845d9bd..7687a2e0544 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -118,7 +118,7 @@ This file contains the arcane tome files as well as innate cultist emergency com invoking it, the paper will be converted into a talisman, and the rune inlaid upon it.

" text += "Teleport
The Rite of Teleportation is a unique rite in that it requires a keyword before the scribing can begin. When invoked, search for other Rites of Translocation. \ - If any are found, the user can choose which rune to send to. Upon activation, the rune teleports everything above it to the selected rune.

".

" + If any are found, the user can choose which rune to send to. Upon activation, the rune teleports everything above it to the selected rune.

" text += "Convert
The Rite of Conversion is paramount to the success of the cult. It will allow you to convert normal crew members into cultists. \ To do this, simply place the crew member upon the rune and invoke it. This rune requires two acolytes to use. If the target to be converted is loyalty-implanted or a certain assignment, they will \ @@ -132,16 +132,6 @@ This file contains the arcane tome files as well as innate cultist emergency com the rune and the offering body adjacent to it. When the rune is invoked, the body to be sacrificed will turn to dust, the life force flowing into the revival target. Assuming the target is not moved \ within a few seconds, they will be brought back to life, healed of all ailments.

" -// text += "Veil Runes
The Rite of Obscurity is a rite that will cause all nearby runes to become invisible. The runes will still be considered by other rites \ - (such as the Rite of Translocation) but will be unusuable directly.(such as the Rite of Translocation) but will be unusuable directly. Use the same rite once more to reveal these runes once more.

" - -// text += "Reveal Runes
The Rite of True Sight is the foil of the Rite of Obscurity. It will turn all invisible runes visible once more, in addition to causing \ - all spirits nearby to become visible.

" - -// text += "Disguise Runes
Many crewmen enjoy drawing runes in crayon that resemble spell circles in order to play pranks on their fellow crewmen. The Rite of \ - False Truths takes advantage of this very joke. When invoked, all nearby runes will appear dull, precisely resembling those drawn in crayon. They still cannot be cleaned by conventional means, so \ - anyone trying to clean up the rune may become suspicious as it does not respond.

" - text += "Electromagnetic Disruption
Robotic lifeforms have time and time again been the downfall of fledgling cults. The Rite of Disruption may allow you to gain the upper \ hand against these pests. By using the rune, a large electromagnetic pulse will be emitted from the rune's location.

" @@ -154,23 +144,12 @@ This file contains the arcane tome files as well as innate cultist emergency com rune will draw a small amount of life force from the user and make the space above the rune completely dense, rendering it impassable to all but the most complex means. The rune may be invoked again to \ undo this effect and allow passage again.

" -// text += "Debilitate
The Rite of the Shadowed Mind is simple. When invoked, it will cause all non-cultists that can see its rune to become deaf, blind and mute for a \ - considerable amount of time.

" - -// text += "Stun
Though the Rite of Blazing Light is weak when invoked normally, using it in conjuction with the Rite of Binding makes it much more powerful. \ - This rune will cause any non-cultists that can see the rune to become disoriented, disabling them for a short time.

" - text += "Summon Cultist
The Rite of Joined Souls requires two acolytes to use. When invoked, it will allow the user to summon a single cultist to the rune from \ any location. This will deal a moderate amount of damage to all invokers.

" text += "Fabricate Shell
The Rite of Fabrication is the main way of creating construct shells. To use it, one must place fifteen sheets of metal on top of the rune \ and invoke it. The sheets will them be twisted into a construct shell, ready to recieve a soul to occupy it.

" -// text += "Summon Armaments
The Rite of Arming will equip the user with armored robes, a backpack, an eldrich longsword, and a pair of boots. Any items that cannot \ - be equipped will not be summoned.

" - -// text += "Drain Life
The Rite of Leeching will drain the life of any non-cultist above the rune and heal the invoker for the same amount.

" - text += "Blood Boil
The Rite of Boiling Blood may be considered one of the most dangerous rites composed by the cult of Nar-Sie. When invoked, it will do a \ massive amount of damage to all non-cultist viewers, but it will also emit an explosion upon invocation. It requires three invokers.

" @@ -221,7 +200,7 @@ This file contains the arcane tome files as well as innate cultist emergency com var/rune_to_scribe var/entered_rune_name var/list/possible_runes = list() - for(var/T in subtypesof(/obj/effect/rune) - /obj/effect/rune/malformed - /obj/effect/rune) + for(var/T in subtypesof(/obj/effect/rune) - /obj/effect/rune/malformed) var/obj/effect/rune/R = T if(initial(R.cultist_name)) possible_runes.Add(initial(R.cultist_name)) //This is to allow the menu to let cultists select runes by name rather than by object path. I don't know a better way to do this From b9f7f65492c6c4643ef4cedf21186fd02e1cee0a Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 10 Apr 2016 18:20:42 -0400 Subject: [PATCH 015/265] Talismans take 10 seconds to make now --- code/game/gamemodes/cult/runes.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 75b1da5556f..8e6e4587515 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -692,7 +692,7 @@ var/list/teleport_runes = list() talisman_type = J user.say("H'drak v'loso, mir'kanas verbot!") visible_message("Dark power begins to channel into the paper!.") - if(!do_after(user, 150, target = get_turf(user))) + if(!do_after(user, 100, target = get_turf(user))) return var/obj/item/weapon/paper/talisman/TA = new talisman_type(get_turf(src)) if(istype(TA, /obj/item/weapon/paper/talisman/teleport)) From 90a5f1a1eed6629ca6c1dbb47394ce0a30cca8bb Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 10 Apr 2016 18:22:07 -0400 Subject: [PATCH 016/265] Rogue quotation mark --- code/game/gamemodes/cult/talisman.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 31f041b5ba0..6ddf9b4b411 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -71,7 +71,7 @@ Rite of Disorientation dat += "Please choose the chant to be imbued into the fabric of reality.
" dat += "
" dat += "N'ath reth sh'yro eth d'raggathnor! - Allows you to summon an arcane tome.
" - dat += "Sas'so c'arta forbici! - Allows you to move to a selected Rite of Dislocation".
" + dat += "Sas'so c'arta forbici! - Allows you to move to a selected Rite of Dislocation.
" dat += "Ta'gh fara'qha fel d'amar det! - Allows you to destroy technology in a short range.
" dat += "Kla'atu barada nikt'o! - Allows you to conceal nearby runes.
" dat += "Nikt'o barada kla'atu! - Allows you to reveal nearby runes.
" From bf93d9d606f3da1a4a49db97ff9b0a45ccd2bbf6 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 10 Apr 2016 19:10:56 -0400 Subject: [PATCH 017/265] user, usr what's the difference --- code/game/gamemodes/cult/ritual.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 7687a2e0544..283482f9ba1 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -14,9 +14,9 @@ This file contains the arcane tome files as well as innate cultist emergency com if(!iscultist(usr) || usr.incapacitated()) return if(!istype(usr, /mob/living/simple_animal)) - var/confirm_desperation = alert(user, "This is a LAST RESORT, you should use a tome to communicate if possible. This ritual will inflict serious injury on you!", "Is this what you want?", "Yes", "No") + var/confirm_desperation = alert(usr, "This is a LAST RESORT, you should use a tome to communicate if possible. This ritual will inflict serious injury on you!", "Is this what you want?", "Yes", "No") if(confirm_desperation == "No") - user << "On second thought, maybe I should summon a tome." + usr << "On second thought, maybe I should summon a tome." return var/input = stripped_input(usr, "Please choose a message to tell to the other acolytes.", "Voice of Blood", "") if(!input) From eda452f98f10084be12bfd80de387094f8d70f33 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 10 Apr 2016 19:11:37 -0400 Subject: [PATCH 018/265] Update talisman.dm --- code/game/gamemodes/cult/talisman.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 6ddf9b4b411..8d84fcb88a6 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -20,7 +20,6 @@ Rite of Disorientation var/invocation = "Naise meam!" var/uses = 1 var/health_cost = 0 //The amount of health taken from the user when invoking the talisman - var/color = null /obj/item/weapon/paper/talisman/examine(mob/user) if(iscultist(user) || user.stat == DEAD) From 5beb4f874491ba5a51629c6ea890375d27ab0be5 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 10 Apr 2016 19:19:35 -0400 Subject: [PATCH 019/265] Update runes.dm --- code/game/gamemodes/cult/runes.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 8e6e4587515..262594e64c1 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -183,6 +183,7 @@ var/list/teleport_runes = list() return ..() /obj/effect/rune/teleport/invoke(mob/living/user) + var/list/potential_runes = list() for(var/R in teleport_runes) var/obj/effect/rune/teleport/T = teleport_runes[R] if(T != src && (T.z <= ZLEVEL_SPACEMAX)) @@ -209,7 +210,7 @@ var/list/teleport_runes = list() if(movedsomething) visible_message("There is a sharp crack of inrushing air, and everything above the rune disappears!") user << "You[user.loc == UT ? " send everything above the rune away":"r vision blurs, and you suddenly appear somewhere else"]." - else + else fail_invoke() //Rite of Enlightenment: Converts a normal crewmember to the cult. Faster for every cultist nearby. From 8bb1fe598596036fc016238f498fa7bd44934e7e Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 10 Apr 2016 19:43:07 -0400 Subject: [PATCH 020/265] Only 6 arguments per alert? Booo --- code/game/gamemodes/cult/ritual.dm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 283482f9ba1..bf5b5a055d0 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -92,7 +92,7 @@ This file contains the arcane tome files as well as innate cultist emergency com open_tome(user) /obj/item/weapon/tome/proc/open_tome(mob/user) - var/choice = alert(user,"You open the tome...",,"Commune","Scribe Rune","Read Tome","Cancel") + var/choice = alert(user,"You open the tome...",,"Commune","Scribe Rune","Read Tome") switch(choice) if("Read Tome") read_tome(user) @@ -103,8 +103,6 @@ This file contains the arcane tome files as well as innate cultist emergency com if(!input) return cultist_commune(user, 1, 0, input) - if("Cancel") - return /obj/item/weapon/tome/proc/read_tome(mob/user) var/text = "" From 42801214536e5835907ca5ad685ef3473d535e23 Mon Sep 17 00:00:00 2001 From: Robustin Date: Mon, 11 Apr 2016 22:20:17 -0400 Subject: [PATCH 021/265] Manifest warning --- code/game/gamemodes/cult/runes.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 262594e64c1..a98966b1373 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -764,6 +764,10 @@ var/list/teleport_runes = list() icon_state = "6" color = rgb(255, 0, 0) +/obj/effect/rune/manifest/New(loc) + ..() + notify_ghosts("Manifest rune created in [get_area(src)].", 'sound/effects/ghost2.ogg', source = src) + /obj/effect/rune/manifest/can_invoke(mob/living/user) if(!(user in get_turf(src))) user << "You must be standing on [src]!" From 5b8de2020ede3742a3479f8bffa6cab18f93f4ec Mon Sep 17 00:00:00 2001 From: Robustin Date: Tue, 12 Apr 2016 01:00:01 -0400 Subject: [PATCH 022/265] Update runes.dm --- code/game/gamemodes/cult/runes.dm | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index a98966b1373..9cca08a83da 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -519,12 +519,13 @@ var/list/teleport_runes = list() color = rgb(255, 0, 0) /obj/effect/rune/emp/invoke(mob/living/user) + var/turf/E = get_turf(src) visible_message("[src] glows blue for a moment before vanishing.") - for(var/mob/living/carbon/C in orange(1,src)) - C << "Your hair stands on end as a shockwave bursts from the rune!" - playsound(get_turf(src), 'sound/items/Welder2.ogg', 25, 1) - qdel(src) //delete before pulsing - empulse(src, 8, 12) //actually worth using over the talisman now + for(var/mob/living/carbon/C in range(1,src)) + C << "You feel a minute vibration pass through you!" + playsound(E, 'sound/items/Welder2.ogg', 25, 1) + qdel(src) //delete before pulsing because it's a delay reee + empulse(E, 8*cultists_in_range, 12*cultists_in_range) // Very strong now, scales //Rite of Astral Communion: Separates one's spirit from their body. They will take damage while it is active. /obj/effect/rune/astral From dd626cf6b115bab0fe497002e7680c66c39f0a91 Mon Sep 17 00:00:00 2001 From: Robustin Date: Tue, 12 Apr 2016 06:48:09 -0400 Subject: [PATCH 023/265] Update runes.dm --- code/game/gamemodes/cult/runes.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 9cca08a83da..ec77c20da92 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -525,7 +525,7 @@ var/list/teleport_runes = list() C << "You feel a minute vibration pass through you!" playsound(E, 'sound/items/Welder2.ogg', 25, 1) qdel(src) //delete before pulsing because it's a delay reee - empulse(E, 8*cultists_in_range, 12*cultists_in_range) // Very strong now, scales + empulse(E, 10, 20) // Very strong now //Rite of Astral Communion: Separates one's spirit from their body. They will take damage while it is active. /obj/effect/rune/astral From 3ed7f0ee19684c6b0f6df152ffae3e7b37e91543 Mon Sep 17 00:00:00 2001 From: topham1 Date: Thu, 14 Apr 2016 03:27:03 -0500 Subject: [PATCH 024/265] adds two showers and a mirror to boxstation's medbay --- _maps/map_files/TgStation/tgstation.2.1.3.dmm | 53 ++++++++++++------- 1 file changed, 33 insertions(+), 20 deletions(-) diff --git a/_maps/map_files/TgStation/tgstation.2.1.3.dmm b/_maps/map_files/TgStation/tgstation.2.1.3.dmm index 90408ea16ac..00d9caa71f9 100644 --- a/_maps/map_files/TgStation/tgstation.2.1.3.dmm +++ b/_maps/map_files/TgStation/tgstation.2.1.3.dmm @@ -37497,14 +37497,9 @@ icon_state = "alarm0"; pixel_x = -22 }, -/obj/machinery/camera{ - c_tag = "Medbay Treatment Center"; - dir = 4; - network = list("SS13"); - pixel_x = 0; - pixel_y = 0 +/obj/machinery/shower{ + dir = 4 }, -/obj/machinery/iv_drip, /turf/open/floor/plasteel{ icon_state = "white" }, @@ -38106,17 +38101,25 @@ /turf/open/floor/plating, /area/security/checkpoint/supply) "bAp" = ( -/obj/machinery/iv_drip, +/obj/structure/closet/secure_closet/medical1, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, /turf/open/floor/plasteel{ icon_state = "white" }, /area/medical/sleeper) "bAq" = ( -/obj/machinery/light, /obj/machinery/sleeper{ icon_state = "sleeper-open"; dir = 8 }, +/obj/machinery/camera{ + c_tag = "Arrivals Bay 2"; + dir = 8; + network = list("SS13") + }, /turf/open/floor/plasteel, /area/medical/sleeper) "bAr" = ( @@ -38490,9 +38493,6 @@ }, /obj/item/clothing/suit/straight_jacket, /obj/item/clothing/mask/muzzle, -/obj/machinery/light/small{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -38846,6 +38846,7 @@ dir = 2; pixel_y = 24 }, +/obj/machinery/iv_drip, /turf/open/floor/plasteel{ icon_state = "white" }, @@ -39323,7 +39324,6 @@ /obj/item/weapon/folder/white, /obj/item/weapon/gun/syringe, /obj/item/weapon/reagent_containers/dropper, -/obj/item/weapon/soap/nanotrasen, /turf/open/floor/plasteel{ icon_state = "white" }, @@ -39431,6 +39431,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/structure/bed, +/obj/item/weapon/bedsheet/medical, /turf/open/floor/plasteel{ dir = 4; icon_state = "whitebluecorner" @@ -39808,11 +39810,10 @@ }, /area/medical/sleeper) "bDD" = ( -/obj/structure/bed, -/obj/item/weapon/bedsheet/medical, /obj/structure/sign/nosmoking_2{ pixel_x = -28 }, +/obj/machinery/door/window/southright, /turf/open/floor/plasteel{ dir = 1; icon_state = "whitebluecorner" @@ -39829,6 +39830,7 @@ network = list("SS13") }, /obj/structure/closet/wardrobe/pjs, +/obj/structure/window/reinforced, /turf/open/floor/plasteel{ icon_state = "white" }, @@ -40788,6 +40790,7 @@ on = 1; pressure_checks = 1 }, +/obj/structure/window/reinforced, /turf/open/floor/plasteel{ icon_state = "white" }, @@ -40871,7 +40874,8 @@ }, /area/medical/cmo) "bFF" = ( -/obj/machinery/light/small, +/obj/machinery/light, +/obj/item/weapon/soap/nanotrasen, /turf/open/floor/plasteel{ icon_state = "white" }, @@ -40908,14 +40912,17 @@ }, /area/toxins/storage) "bFJ" = ( -/obj/structure/bed, -/obj/item/weapon/bedsheet/medical, +/obj/machinery/shower{ + dir = 4 + }, /turf/open/floor/plasteel{ icon_state = "white" }, /area/medical/sleeper) "bFK" = ( -/obj/structure/closet/secure_closet/medical1, +/obj/structure/mirror{ + pixel_x = 28 + }, /turf/open/floor/plasteel{ icon_state = "white" }, @@ -58422,6 +58429,12 @@ }, /turf/open/space, /area/space) +"coT" = ( +/obj/machinery/iv_drip, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) "coU" = ( /obj/structure/table, /obj/item/weapon/surgicaldrill, @@ -103490,7 +103503,7 @@ bua bua bua bua -bhh +coT bhh btV bof From 1980610d0da41a81c8cb110849d8edd80cce9686 Mon Sep 17 00:00:00 2001 From: topham1 Date: Thu, 14 Apr 2016 03:36:54 -0500 Subject: [PATCH 025/265] properly edits c_tag of repositioned security camera --- _maps/map_files/TgStation/tgstation.2.1.3.dmm | 130 ++++-------------- 1 file changed, 23 insertions(+), 107 deletions(-) diff --git a/_maps/map_files/TgStation/tgstation.2.1.3.dmm b/_maps/map_files/TgStation/tgstation.2.1.3.dmm index 00d9caa71f9..e05688d785b 100644 --- a/_maps/map_files/TgStation/tgstation.2.1.3.dmm +++ b/_maps/map_files/TgStation/tgstation.2.1.3.dmm @@ -2812,15 +2812,6 @@ /turf/open/floor/plasteel/shuttle, /area/shuttle/pod_3) "afq" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/machinery/status_display{ - density = 0; - layer = 3; - pixel_x = 0; - pixel_y = 32 - }, /obj/machinery/computer/shuttle/pod{ pixel_y = -32; possible_destinations = "pod_asteroid3"; @@ -2829,9 +2820,6 @@ /turf/open/floor/plasteel/shuttle, /area/shuttle/pod_3) "afr" = ( -/obj/structure/chair{ - dir = 4 - }, /obj/item/device/radio/intercom{ pixel_y = 25 }, @@ -3098,9 +3086,6 @@ /obj/effect/landmark/start{ name = "Security Officer" }, -/obj/structure/chair{ - dir = 4 - }, /turf/open/floor/plasteel{ icon_state = "red"; dir = 8 @@ -3385,9 +3370,6 @@ /obj/effect/landmark/start{ name = "Security Officer" }, -/obj/structure/chair{ - dir = 4 - }, /turf/open/floor/plasteel{ icon_state = "redcorner"; dir = 1 @@ -3657,9 +3639,6 @@ /obj/effect/landmark/start{ name = "Security Officer" }, -/obj/structure/chair{ - dir = 4 - }, /turf/open/floor/plasteel, /area/security/main) "ahc" = ( @@ -4980,12 +4959,6 @@ /obj/structure/chair{ name = "Judge" }, -/obj/machinery/status_display{ - density = 0; - layer = 3; - pixel_x = 0; - pixel_y = 32 - }, /obj/machinery/light{ dir = 1 }, @@ -9133,9 +9106,6 @@ /turf/open/floor/wood, /area/lawoffice) "arY" = ( -/obj/structure/chair{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -10595,12 +10565,6 @@ }, /area/crew_quarters/sleep) "avm" = ( -/obj/machinery/status_display{ - density = 0; - layer = 3; - pixel_x = 0; - pixel_y = 32 - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -11198,9 +11162,6 @@ /turf/open/floor/plasteel, /area/crew_quarters/fitness) "awB" = ( -/obj/structure/chair{ - dir = 4 - }, /obj/effect/landmark/start{ name = "Assistant" }, @@ -21659,12 +21620,6 @@ name = "Library Desk Door"; req_access_txt = "37" }, -/obj/machinery/status_display{ - density = 0; - layer = 3; - pixel_x = 0; - pixel_y = 32 - }, /turf/open/floor/wood, /area/library) "aTd" = ( @@ -24561,12 +24516,6 @@ }, /area/crew_quarters/locker) "aZy" = ( -/obj/machinery/status_display{ - density = 0; - layer = 3; - pixel_x = 0; - pixel_y = 32 - }, /obj/machinery/camera{ c_tag = "Conference Room"; dir = 2 @@ -27024,9 +26973,6 @@ }, /area/quartermaster/office) "beW" = ( -/obj/structure/chair{ - dir = 4 - }, /obj/effect/landmark/start{ name = "Cargo Technician" }, @@ -38116,7 +38062,7 @@ dir = 8 }, /obj/machinery/camera{ - c_tag = "Arrivals Bay 2"; + c_tag = "Medbay Treatment Center"; dir = 8; network = list("SS13") }, @@ -41805,9 +41751,6 @@ /turf/open/floor/plasteel, /area/toxins/mixing) "bHv" = ( -/obj/structure/chair{ - dir = 4 - }, /obj/machinery/computer/security/telescreen{ desc = "Used for watching the test chamber."; dir = 8; @@ -42745,9 +42688,6 @@ /turf/open/floor/plasteel, /area/toxins/mixing) "bIW" = ( -/obj/structure/chair{ - dir = 4 - }, /turf/open/floor/plasteel{ dir = 6; icon_state = "warning" @@ -43408,9 +43348,6 @@ /turf/open/floor/plating/airless, /area/toxins/test_area) "bKh" = ( -/obj/structure/chair{ - dir = 4 - }, /turf/open/floor/plating/airless{ dir = 9; icon_state = "warnplate" @@ -44629,9 +44566,6 @@ /turf/open/floor/plating, /area/maintenance/asmaint2) "bMD" = ( -/obj/structure/chair{ - dir = 4 - }, /turf/open/floor/plating/airless{ dir = 10; icon_state = "warnplate" @@ -62771,9 +62705,6 @@ }, /area/shuttle/escape) "cxr" = ( -/obj/structure/chair{ - dir = 4 - }, /obj/structure/window/reinforced{ dir = 8 }, @@ -63411,9 +63342,6 @@ }, /area/shuttle/abandoned) "czb" = ( -/obj/structure/chair{ - dir = 4 - }, /obj/effect/decal/remains/human, /turf/open/floor/plasteel/shuttle{ icon_state = "shuttlefloor3" @@ -63668,15 +63596,6 @@ /turf/open/floor/plasteel/shuttle, /area/shuttle/pod_2) "czL" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/machinery/status_display{ - density = 0; - layer = 3; - pixel_x = 0; - pixel_y = 32 - }, /obj/machinery/computer/shuttle/pod{ pixel_y = -32; possible_destinations = "pod_asteroid4"; @@ -63685,9 +63604,6 @@ /turf/open/floor/plasteel/shuttle, /area/shuttle/pod_4) "czM" = ( -/obj/structure/chair{ - dir = 4 - }, /obj/item/device/radio/intercom{ pixel_y = 25 }, @@ -73925,7 +73841,7 @@ awW awW arB cxu -cxA +cxC cxC cxH cxu @@ -75652,10 +75568,10 @@ aTp aTp aac cmH -cml -cml -cml -cml +aTp +aTp +aTp +aTp coh aTp aTp @@ -87002,7 +86918,7 @@ akC alj alY amI -anq +amI anM aop aoY @@ -91104,8 +91020,8 @@ aeO afF agj agJ -ahr -ahr +ahs +ahs aiD agj ajz @@ -92404,7 +92320,7 @@ anz aov aph aoc -arc +ata arY ata auh @@ -100632,7 +100548,7 @@ arj arj asZ aua -avB +aua awB axY azh @@ -112463,10 +112379,10 @@ asB aCR aEm aCR -aHp -aIF -aHp -aIF +aPl +aQv +aPl +aQv aCR aNY aCR @@ -115814,11 +115730,11 @@ cxd cxe cwU cwL -cxk -cxk -cxk -cxk -cxk +cxa +cxa +cxa +cxa +cxa cwL cwU cxQ @@ -117096,7 +117012,7 @@ cwL cwX cwL cwL -cxk +cxa cxj cwL cxq @@ -117348,8 +117264,8 @@ aaa aaa crx cwG -cwM -cwM +cwL +cwL cwW cxa cwL From 16165eb5c428484f6ba01725e6ef389729e211de Mon Sep 17 00:00:00 2001 From: Robustin Date: Thu, 14 Apr 2016 11:41:38 -0400 Subject: [PATCH 026/265] EMP Scaling, Manifest Shield, Blood Boil nerf --- code/game/gamemodes/cult/runes.dm | 35 ++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index ec77c20da92..75ac76a6d47 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -520,12 +520,27 @@ var/list/teleport_runes = list() /obj/effect/rune/emp/invoke(mob/living/user) var/turf/E = get_turf(src) + var/emp_strength = 0 + for(var/mob/living/L in range(1, src)) + if(iscultist(L)) + var/mob/living/carbon/human/H = L + if(!istype(H)) + if(istype(L, /mob/living/simple_animal/hostile/construct)) + if(invocation) + L.say(invocation) + emp_strength++ + continue + if(L.stat || (H.disabilities & MUTE) || H.silent) + continue + if(invocation) + L.say(invocation) + emp_strength++ visible_message("[src] glows blue for a moment before vanishing.") for(var/mob/living/carbon/C in range(1,src)) C << "You feel a minute vibration pass through you!" playsound(E, 'sound/items/Welder2.ogg', 25, 1) qdel(src) //delete before pulsing because it's a delay reee - empulse(E, 10, 20) // Very strong now + empulse(E, 7*emp_strength, 10*emp_strength) // Scales now, from a single room to around half the station depending on # of chanters //Rite of Astral Communion: Separates one's spirit from their body. They will take damage while it is active. /obj/effect/rune/astral @@ -680,6 +695,11 @@ var/list/teleport_runes = list() fail_invoke() log_game("Talisman Imbue rune failed - no blank papers on rune") return + if(rune_in_use) + user << "[src] can only support one ritual at a time!" + fail_invoke() + log_game("Talisman Imbue rune failed - more than one user") + return var/obj/item/weapon/paper/paper_to_imbue = pick(papers_on_rune) for(var/I in subtypesof(/obj/item/weapon/paper/talisman) - /obj/item/weapon/paper/talisman/malformed - /obj/item/weapon/paper/talisman/supply) var/obj/item/weapon/paper/talisman/J = I @@ -694,7 +714,9 @@ var/list/teleport_runes = list() talisman_type = J user.say("H'drak v'loso, mir'kanas verbot!") visible_message("Dark power begins to channel into the paper!.") + rune_in_use = 1 if(!do_after(user, 100, target = get_turf(user))) + rune_in_use = 0 return var/obj/item/weapon/paper/talisman/TA = new talisman_type(get_turf(src)) if(istype(TA, /obj/item/weapon/paper/talisman/teleport)) @@ -703,7 +725,7 @@ var/list/teleport_runes = list() TELE.keyword = the_keyword visible_message("[src] crumbles to dust, and bloody images form themselves on [paper_to_imbue].") qdel(paper_to_imbue) - qdel(src) + rune_in_use = 0 //Rite of Fabrication: Creates a construct shell out of 15 metal sheets. /obj/effect/rune/construct_shell @@ -748,7 +770,8 @@ var/list/teleport_runes = list() C << "\The [N] suddenly burns hotly before returning to normal!" continue C << "Your blood boils in your veins!" - C.take_overall_damage(51,51) + C.take_overall_damage(45,45) + C.weakened(7) for(var/mob/living/carbon/M in range(1,src)) if(iscultist(M)) M.apply_damage(15, BRUTE, pick("l_arm", "r_arm")) @@ -797,6 +820,12 @@ var/list/teleport_runes = list() new_human.alpha = 150 //Makes them translucent visible_message("A cloud of red mist forms above [src], and from within steps... a man.") user << "Your blood begins flowing into [src]. You must remain in place and conscious to maintain the forms of those summoned. This will hurt you slowly but surely..." + for(get_turf(src)) + var/obj/machinery/shield/N = new(B) + N.name = "Invoker's Shield" + N.desc = "A weak shield summoned by cultists to protect them while they carry out delicate rituals" + N.color = "red" + N.health = 20 new_human.key = ghost_to_spawn.key ticker.mode.add_cultist(new_human.mind) new_human << "You are a servant of the Geometer. You have been made semi-corporeal by the cult of Nar-Sie, and you are to serve them at all costs." From f2d01f500cf3cd633631faeebeaf589d8fe888a2 Mon Sep 17 00:00:00 2001 From: Robustin Date: Thu, 14 Apr 2016 11:42:12 -0400 Subject: [PATCH 027/265] Nar-Sie rune-shield name+desc --- code/game/gamemodes/cult/ritual.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index bf5b5a055d0..8522be19efd 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -233,6 +233,8 @@ This file contains the arcane tome files as well as innate cultist emergency com priority_announce("Figments from an eldritch god are being summoned by [user] into [locname] from an unknown dimension. Disrupt the ritual at all costs!","Central Command Higher Dimensionsal Affairs", 'sound/AI/spanomalies.ogg') for(var/turf/B in orange (1, user)) var/obj/machinery/shield/N = new(B) + N.name = "Rune-Scriber's Shield" + N.desc = "A potent shield summoned by cultists to protect them while they prepare the final ritual" N.color = "red" N.health = 60 if(!do_after(user, 400, target = get_turf(user))) From dd9ccf927bcccd2f0b00012ec02d63f7745b3ecd Mon Sep 17 00:00:00 2001 From: Robustin Date: Thu, 14 Apr 2016 12:56:48 -0400 Subject: [PATCH 028/265] Adds a "Help" Cultist Proc for new players --- code/game/gamemodes/cult/ritual.dm | 34 ++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 8522be19efd..892d9694498 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -6,6 +6,7 @@ This file contains the arcane tome files as well as innate cultist emergency com /mob/proc/cult_add_comm() //why the fuck does this have its own proc? not removing it because it might be used somewhere but... verbs += /mob/living/proc/cult_innate_comm + verbs += /mob/living/proc/cult_help /mob/living/proc/cult_innate_comm() set category = "Cultist" @@ -44,6 +45,39 @@ This file contains the arcane tome files as well as innate cultist emergency com cultist_commune(usr, 0, 1, input) return + +/mob/living/proc/cult_help() + set category = "Cultist" + set name = "How to Play Cult" + var/text = "" + text += "
Tenets of the Dark One



" + + text += "I. SECRECY
Your cult is a SECRET organization. Your success DEPENDS on keeping your cult's members and locations SECRET for as long as possible. This means that your tome should be hidden \ + in your bag and never brought out in public. You should never create runes where other crew might find them, and you should avoid using talismans or other cult magic with witnesses around.

" + + text += "II. TOME
You start with a unique talisman in your bag. This supply talisman can be used 3 times, and creates starter equipment for your cult. The most critical of the talisman's functions is \ + the power to create a tome. This tome is your most important item and summoning one (in secret) is your FIRST PRIORITY. It lets you talk to fellow cultists and create runes, which in turn is essential to growing the cult's power.

" + + text += "III.> RUNES
Runes are powerful sources of cult magic. Your tome will allow you to draw runes with your blood. Those runes, when hit with an empty hand, will attempt to \ + trigger the rune's magic. Runes are essential for the cult to convert new members, create powerful minions, or call upon incredibly powerful magic. Some runes require more than one cultist to use.

" + + text += "IV. TALISMANS
Talismans are a mobile source of cult magic that are NECESSARY to achieve success as a cult. Your starting talisman can produce certain talismans, but you will need \ + to use the -create talisman- rune (with ordinary paper on top) to get more talismans. Talismans are EXTREMELY powerful, therefore creating more talismans in a HIDDEN location should be one of your TOP PRIORITIES.

" + + text += "V. GROW THE CULT
There are certain basic strategies that all cultists should master. STUN talismans are the foundation of a successful cult. If you intend to convert the stunned person \ + you should use cablecuffs on them and remove their headset before they recover. If you intend to sacrifice the victim, striking them quickly and repeatedly with your tome will knock them out before they can recover. \ + Sacrificed victims will their soul behind in a shard, these shards can be used on construct shells to make powerful servants for the cult. Remember you need TWO cultists standing near a conversion rune to convert someone. \ + Your construct minions cannot trigger most runes, but they will count as cultists in helping you trigger more powerful runes like conversion or blood boil.

" + + text += "VI. VICTORY
You have two ultimate goals as a cultist, sacrifice your target, and summon Nar-Sie. Sacrificing the target involves killing that individual and then placing \ + their corpse on a sacrifice rune and triggering that rune with three cultists. Do NOT lose the target's corpse! Only once the target is sacrificed can Nar-Sie be summoned. Summoning Nar-Sie will take nearly one minute \ + just to draw the massive rune needed. Do not create the rune until your cult is ready, the crew will receive the NAME and LOCATION of anyone who attempts to create the Nar-Sie rune. Once the Nar-Sie rune is drawn \ + you must gathered 9 cultists (or constructs) over the rune and then click it to bring the Dark One into this world!

" + + var/datum/browser/popup = new(user, "", 800, 600) + popup.set_content(text) + popup.open() + return /obj/item/weapon/tome name = "arcane tome" From 2083b741c602fe4cd6c0ebc4df5091ca3f861ed0 Mon Sep 17 00:00:00 2001 From: Robustin Date: Thu, 14 Apr 2016 13:19:01 -0400 Subject: [PATCH 029/265] Update Rune/Talisman descriptions --- code/game/gamemodes/cult/ritual.dm | 48 ++++++++++++------------------ 1 file changed, 19 insertions(+), 29 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 892d9694498..ce6de7a4293 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -128,7 +128,7 @@ This file contains the arcane tome files as well as innate cultist emergency com /obj/item/weapon/tome/proc/open_tome(mob/user) var/choice = alert(user,"You open the tome...",,"Commune","Scribe Rune","Read Tome") switch(choice) - if("Read Tome") + if("Information") read_tome(user) if("Scribe Rune") scribe_rune(user) @@ -141,43 +141,42 @@ This file contains the arcane tome files as well as innate cultist emergency com /obj/item/weapon/tome/proc/read_tome(mob/user) var/text = "" text += "
Archives of the Dark One



" - text += "As a member of the cult, your goals are almost or entirely impossible to complete without special aid from the Geometer's plane. The primary method of doing this are runes. These \ - scribings, drawn in blood, are concentrated nodes of the magic within Nar-Sie's realm and will allow the performance of many tasks to aid you and the rest of the cult in your objectives. Runes \ - have many different names, and almost all of them are known as Rites. The only rune that is not a Rite is the Ritual of Dimensional Rending, which can only be performed with nine cultists and calls \ - forth the avatar of the Geometer herself (so long as she consents).

A rune's name and effects can be revealed by examining the rune.


" + text += "A rune's name and effects can be revealed by examining the rune.<

" - text += "Imbue Talisman
The Rite of Talisman Creation is one of the most important. It is the only way to create talismans. A blank sheet of paper must be on top of the rune, with a valid rune nearby. After \ - invoking it, the paper will be converted into a talisman, and the rune inlaid upon it.

" + text += "Imbue Talisman
The Rune of Talisman Creation is one of the most important. It is the only way to create new talismans. A blank sheet of paper must be on top of the rune. After \ + invoking it and choosing which talisman you desire, the paper will be converted into a talisman.

" - text += "Teleport
The Rite of Teleportation is a unique rite in that it requires a keyword before the scribing can begin. When invoked, search for other Rites of Translocation. \ + text += "Teleport
The Rune of Teleportation is a unique rite in that it requires a keyword before the scribing can begin. When invoked, search for other Rites of Translocation. \ If any are found, the user can choose which rune to send to. Upon activation, the rune teleports everything above it to the selected rune.

" - text += "Convert
The Rite of Conversion is paramount to the success of the cult. It will allow you to convert normal crew members into cultists. \ + text += "Convert
The Rune of Conversion is important to the success of the cult. It will allow you to convert normal crew members into cultists. \ To do this, simply place the crew member upon the rune and invoke it. This rune requires two acolytes to use. If the target to be converted is loyalty-implanted or a certain assignment, they will \ be unable to be converted. People the Geometer wishes sacrificed will also be ineligible for conversion, and anyone with a shielding presence like the null rod will not be converted.

" - text += "Sacrifice
The Rite of Sacrifice is used to offer tribute to the Geometer. Simply place any living creature upon the rune and invoke it (this will not \ + text += "Sacrifice
The Rune of Sacrifice is necessary to achieve your goal. Simply place any dead creature upon the rune and invoke it (this will not \ target cultists!). If this creature has a mind, a soul shard will be created and the creature's soul transported to it. This rune is required if the cult's objectives include the sacrifice of a crew \ - member.

" + member. Sacrificing the dead can be done alone, but sacrificing living crew or your cult's target will require 3 cultists. Soul shards used on construct shells will move that soul into a \ + powerful construct of your choice.

" - text += "Raise Dead
The Rite of Resurrection is a delicate rite that requires two corpses. To perform the ritual, place the corpse you wish to revive onto \ + text += "Raise Dead
The Rune of Resurrection is a delicate rite that requires two corpses. To perform the ritual, place the corpse you wish to revive onto \ the rune and the offering body adjacent to it. When the rune is invoked, the body to be sacrificed will turn to dust, the life force flowing into the revival target. Assuming the target is not moved \ within a few seconds, they will be brought back to life, healed of all ailments.

" text += "Electromagnetic Disruption
Robotic lifeforms have time and time again been the downfall of fledgling cults. The Rite of Disruption may allow you to gain the upper \ - hand against these pests. By using the rune, a large electromagnetic pulse will be emitted from the rune's location.

" + hand against these pests. By using the rune, a large electromagnetic pulse will be emitted from the rune's location. The size of the EMP will grow significantly for each additional adjacent cultist when the \ + rune is activated.

" - text += "Astral Communion
The Rite of Astral Communion is perhaps the most ingenious rune that is usable by a single person. Upon invoking the rune, the \ + text += "Astral Communion
The Rune of Astral Communion is perhaps the most ingenious rune that is usable by a single person. Upon invoking the rune, the \ user's spirit will be ripped from their body. In this state, the user's physical body will be locked in place to the rune itself - any attempts to move it will result in the rune pulling it back. \ The body will also take constant damage while in this form, and may even die. The user's spirit will contain their consciousness, and will allow them to freely wander the station as a ghost. This may \ also be used to commune with the dead.

" - text += "Form Shield
While simple, the Rite of the Corporeal Shield serves an important purpose in defense and hindering passage. When invoked, the \ + text += "Form Barrier
While simple, the Barrier Rune serves an important purpose in defense and hindering passage. When invoked, the \ rune will draw a small amount of life force from the user and make the space above the rune completely dense, rendering it impassable to all but the most complex means. The rune may be invoked again to \ undo this effect and allow passage again.

" - text += "Summon Cultist
The Rite of Joined Souls requires two acolytes to use. When invoked, it will allow the user to summon a single cultist to the rune from \ - any location. This will deal a moderate amount of damage to all invokers.

" + text += "Summon Cultist
The Rune of Summoning requires two acolytes to use. When invoked, it will allow the user to summon a single cultist to the rune from \ + any location. This will deal a moderate amount of damage to all invokers. Absolutely crucial for rescuing your brothers from security.

" text += "Fabricate Shell
The Rite of Fabrication is the main way of creating construct shells. To use it, one must place fifteen sheets of metal on top of the rune \ and invoke it. The sheets will them be twisted into a construct shell, ready to recieve a soul to occupy it.

" @@ -185,10 +184,6 @@ This file contains the arcane tome files as well as innate cultist emergency com text += "Blood Boil
The Rite of Boiling Blood may be considered one of the most dangerous rites composed by the cult of Nar-Sie. When invoked, it will do a \ massive amount of damage to all non-cultist viewers, but it will also emit an explosion upon invocation. It requires three invokers.

" -// text += "Time Stop
The Rite of Dimensional Corruption is a versatile rite that can be very strong when protecting our cult from the enemies of the Geometer. \ - As it is invoked, it will rend and reshape reality around itself, stopping time for all those who don't follow the teachings of the Geometer. However, it requires more than one ritual soul as a \ - catalyst, and its power is bound to overflow and hurt its casters.

" - text += "Manifest Spirit
If you wish to bring a spirit back from the dead with a wish for vengeance and desire to serve, the Rite of Spectral \ Manifestation can do just that. When invoked, any spirits above the rune will be brought to life as a human wearing nothing that seeks only to serve you and the Geometer. However, the spirit's link \ to reality is fragile - you must remain on top of the rune, and you will slowly take damage. Upon stepping off the rune, the spirits will dissipate, dropping their items to the ground. You may manifest \ @@ -198,20 +193,15 @@ This file contains the arcane tome files as well as innate cultist emergency com comparison to other runes, is very large, requiring a 3x3 space of empty tiles to create. To invoke the rune, nine cultists must stand on the rune, so that all of them are within its circle. Then, \ simply invoke it. A brief tearing will be heard as the barrier between dimensions is torn open, and the avatar will come forth.


" - text += "While runes are excellent for many tasks, they lack portability. The advent of talismans has, to a degree, solved this inconvenience. Simply put, a talisman is a piece of paper with a \ - rune inlaid within it. The words of the rune can be whispered in order to invoke its effects, although usually to a lesser extent. To create a talisman, simply use a Rite of Binding as described above. \ - Unless stated otherwise, talismans are invoked by activating them in your hand. A list of valid rites, as well as the effects of their talisman form, can be found below.


" - text += "Talisman of Teleportation
The talisman form of the Rite of Translocation will transport the invoker to a randomly chosen rune of the same keyword, then \ disappear.

" text += "Talisman of Tome Summoning
This talisman functions nearly identically to the rune. The talisman will attempt to place the tome in your hand \ instead of on the ground, though this is the only advantage it has over the rune. It can be used once, then disappears.

" - text += "Talismans of Veiling, Revealing, and Disguising
These talismans all function identically to their rune counterparts, but with less range. In addition, \ - the Talisman of True Sight will not reveal spirits. They will disappear after one use.

" + text += "Talismans of Veiling and Disguising
These talismans will hide, reveal, or disguise (as crayon drawings) all nearby runes.

" - text += "Talisman of Electromagnetic Pulse
This talisman functions like the Rite of Disruption. It disappears after one use.

" + text += "Talisman of Electromagnetic Pulse
This talisman will EMP the target and anything else nearby. It disappears after one use.

" text += "Talisman of Stunning
Without this talisman, the cult would have no way of easily acquiring targets to convert. Commonly called \"stunpapers\", this \ talisman functions differently from others. Rather than simply reading the words, the target must be attacked directly with the talisman. The talisman will then knock down the target for a long \ @@ -220,7 +210,7 @@ This file contains the arcane tome files as well as innate cultist emergency com text += "Talisman of Armaments
The Rite of Arming will equip the user with armored robes, a backpack, an eldrich longsword, and a pair of boots. Any items that cannot \ be equipped will not be summoned.

" - text += "Talisman of Horrors
The Rite of Horror will breaks your victim's mind with visions of the endtimes.

" + text += "Talisman of Horrors
The Rite of Horror must be applied directly to the victim, it will shatter your victim's mind with visions of the endtimes.

" var/datum/browser/popup = new(user, "tome", "", 800, 600) popup.set_content(text) From 7fa264d80216778778cc678ae6ea234128448be2 Mon Sep 17 00:00:00 2001 From: Robustin Date: Thu, 14 Apr 2016 13:38:14 -0400 Subject: [PATCH 030/265] Tweaks to colors and shields --- code/game/gamemodes/cult/runes.dm | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 75ac76a6d47..92d67fca447 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -516,7 +516,7 @@ var/list/teleport_runes = list() cultist_desc = "Emits a large electromagnetic pulse, hindering electronics and disabling silicons." invocation = "Ta'gh fara'qha fel d'amar det!" icon_state = "5" - color = rgb(255, 0, 0) + color = rgb(77, 148, 255) /obj/effect/rune/emp/invoke(mob/living/user) var/turf/E = get_turf(src) @@ -820,12 +820,11 @@ var/list/teleport_runes = list() new_human.alpha = 150 //Makes them translucent visible_message("A cloud of red mist forms above [src], and from within steps... a man.") user << "Your blood begins flowing into [src]. You must remain in place and conscious to maintain the forms of those summoned. This will hurt you slowly but surely..." - for(get_turf(src)) - var/obj/machinery/shield/N = new(B) - N.name = "Invoker's Shield" - N.desc = "A weak shield summoned by cultists to protect them while they carry out delicate rituals" - N.color = "red" - N.health = 20 + var/obj/machinery/shield/N = new(get_turf(src)) + N.name = "Invoker's Shield" + N.desc = "A weak shield summoned by cultists to protect them while they carry out delicate rituals" + N.color = "red" + N.health = 20 new_human.key = ghost_to_spawn.key ticker.mode.add_cultist(new_human.mind) new_human << "You are a servant of the Geometer. You have been made semi-corporeal by the cult of Nar-Sie, and you are to serve them at all costs." @@ -835,7 +834,8 @@ var/list/teleport_runes = list() break user.apply_damage(1, BRUTE) sleep(30) - + + q.del(N) if(new_human) new_human.visible_message("[new_human] suddenly dissolves into bones and ashes.", \ "Your link to the world fades. Your form breaks apart.") From ef289c6b34172ddffa24f5b528dababe98d744b7 Mon Sep 17 00:00:00 2001 From: topham1 Date: Thu, 14 Apr 2016 12:41:14 -0500 Subject: [PATCH 031/265] reverts medbay change to almost perfectly reflect older design without ruining erp hut --- _maps/map_files/TgStation/tgstation.2.1.3.dmm | 39 +++++++------------ 1 file changed, 15 insertions(+), 24 deletions(-) diff --git a/_maps/map_files/TgStation/tgstation.2.1.3.dmm b/_maps/map_files/TgStation/tgstation.2.1.3.dmm index e05688d785b..2d9cdf56cf0 100644 --- a/_maps/map_files/TgStation/tgstation.2.1.3.dmm +++ b/_maps/map_files/TgStation/tgstation.2.1.3.dmm @@ -36779,9 +36779,8 @@ pixel_x = -12; pixel_y = 2 }, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 +/obj/structure/mirror{ + pixel_x = -28 }, /turf/open/floor/plasteel{ icon_state = "white" @@ -38052,6 +38051,10 @@ icon_state = "tube1"; dir = 8 }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, /turf/open/floor/plasteel{ icon_state = "white" }, @@ -38792,7 +38795,6 @@ dir = 2; pixel_y = 24 }, -/obj/machinery/iv_drip, /turf/open/floor/plasteel{ icon_state = "white" }, @@ -39270,6 +39272,7 @@ /obj/item/weapon/folder/white, /obj/item/weapon/gun/syringe, /obj/item/weapon/reagent_containers/dropper, +/obj/item/weapon/soap/nanotrasen, /turf/open/floor/plasteel{ icon_state = "white" }, @@ -39377,8 +39380,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/structure/bed, -/obj/item/weapon/bedsheet/medical, +/obj/machinery/iv_drip, /turf/open/floor/plasteel{ dir = 4; icon_state = "whitebluecorner" @@ -39759,7 +39761,8 @@ /obj/structure/sign/nosmoking_2{ pixel_x = -28 }, -/obj/machinery/door/window/southright, +/obj/structure/bed, +/obj/item/weapon/bedsheet/medical, /turf/open/floor/plasteel{ dir = 1; icon_state = "whitebluecorner" @@ -39775,8 +39778,7 @@ dir = 8; network = list("SS13") }, -/obj/structure/closet/wardrobe/pjs, -/obj/structure/window/reinforced, +/obj/machinery/iv_drip, /turf/open/floor/plasteel{ icon_state = "white" }, @@ -40736,7 +40738,6 @@ on = 1; pressure_checks = 1 }, -/obj/structure/window/reinforced, /turf/open/floor/plasteel{ icon_state = "white" }, @@ -40821,7 +40822,6 @@ /area/medical/cmo) "bFF" = ( /obj/machinery/light, -/obj/item/weapon/soap/nanotrasen, /turf/open/floor/plasteel{ icon_state = "white" }, @@ -40858,17 +40858,14 @@ }, /area/toxins/storage) "bFJ" = ( -/obj/machinery/shower{ - dir = 4 - }, +/obj/structure/bed, +/obj/item/weapon/bedsheet/medical, /turf/open/floor/plasteel{ icon_state = "white" }, /area/medical/sleeper) "bFK" = ( -/obj/structure/mirror{ - pixel_x = 28 - }, +/obj/structure/closet/wardrobe/pjs, /turf/open/floor/plasteel{ icon_state = "white" }, @@ -58363,12 +58360,6 @@ }, /turf/open/space, /area/space) -"coT" = ( -/obj/machinery/iv_drip, -/turf/open/floor/plasteel{ - icon_state = "white" - }, -/area/medical/medbay) "coU" = ( /obj/structure/table, /obj/item/weapon/surgicaldrill, @@ -103419,7 +103410,7 @@ bua bua bua bua -coT +bhh bhh btV bof From 49ec560bdb8275e1f6079af1a352981b8895b810 Mon Sep 17 00:00:00 2001 From: Robustin Date: Thu, 14 Apr 2016 13:53:25 -0400 Subject: [PATCH 032/265] Talisman of Veiling Update, Reveal removal --- code/game/gamemodes/cult/talisman.dm | 79 ++++++++++------------------ 1 file changed, 27 insertions(+), 52 deletions(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 8d84fcb88a6..86a88414a6f 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -1,19 +1,3 @@ -/* - -Talismans are portable versions of runes that resemble blank sheets of paper. They may have different effects than their parent runes and are created by using a Rite of Binding with a paper on top and -a compatible rune somewhere nearby. A list of compatible runes can found below. - -Basic Runes: -Rite of Translocation -Rite of Knowledge -Rite of Obscurity -Rite of True Sight -Rite of False Truths -Rite of Disruption -Rite of Disorientation - -*/ - /obj/item/weapon/paper/talisman var/cultist_name = "talisman" var/cultist_desc = "A basic talisman. It serves no purpose." @@ -70,10 +54,8 @@ Rite of Disorientation dat += "Please choose the chant to be imbued into the fabric of reality.
" dat += "
" dat += "N'ath reth sh'yro eth d'raggathnor! - Allows you to summon an arcane tome.
" - dat += "Sas'so c'arta forbici! - Allows you to move to a selected Rite of Dislocation.
" + dat += "Sas'so c'arta forbici! - Allows you to move to a selected teleportation rune.
" dat += "Ta'gh fara'qha fel d'amar det! - Allows you to destroy technology in a short range.
" - dat += "Kla'atu barada nikt'o! - Allows you to conceal nearby runes.
" - dat += "Nikt'o barada kla'atu! - Allows you to reveal nearby runes.
" dat += "Fuu ma'jin! - Allows you to stun a person by attacking them with the talisman.
" dat += "Kal'om neth! - Summons a soul stone, used to capure the spirits of dead or dying humans.
" dat += "Daa'ig osk! - Summons a construct shell for use with captured souls. It is too large to carry on your person.
" @@ -99,12 +81,6 @@ Rite of Disorientation if("emp") var/obj/item/weapon/paper/talisman/emp/T = new(usr) usr.put_in_hands(T) - if("conceal") - var/obj/item/weapon/paper/talisman/hide_runes/T = new(usr) - usr.put_in_hands(T) - if("reveal") - var/obj/item/weapon/paper/talisman/true_sight/T = new(usr) - usr.put_in_hands(T) if("runestun") var/obj/item/weapon/paper/talisman/stun/T = new(usr) usr.put_in_hands(T) @@ -160,7 +136,7 @@ Rite of Disorientation user.forceMove(get_turf(actual_selected_rune)) return 1 -//Rite of Knowledge: Has two uses + /obj/item/weapon/paper/talisman/summon_tome cultist_name = "Talisman of Tome Summoning" cultist_desc = "A one-use talisman that will call an untranslated tome from the archives of the Geometer." @@ -173,37 +149,36 @@ Rite of Disorientation "You speak the words of the talisman!") new /obj/item/weapon/tome(get_turf(user)) user.visible_message("A tome appears at [user]'s feet!", \ - "An arcane tome materialzies at your feet.") + "An arcane tome materializes at your feet.") -//Talisman of Obscurity: Same as rune /obj/item/weapon/paper/talisman/hide_runes cultist_name = "Talisman of Veiling" - cultist_desc = "A talisman that will make all runes within a small radius invisible." - color = "#b3b3b3" // light grey + cultist_desc = "A multi-use talisman that hides nearby runes. On its second use, will reveal nearby runes." invocation = "Kla'atu barada nikt'o!" - health_cost = 1 - -/obj/item/weapon/paper/talisman/hide_runes/invoke(mob/living/user) - user.visible_message("Dust flows from [user]'s hand.", \ - "You speak the words of the talisman, veiling nearby runes.") - for(var/obj/effect/rune/R in orange(3,user)) - R.visible_message("[R] fades away.") - R.invisibility = INVISIBILITY_OBSERVER - -//Rite of True Sight: Same as rune, but doesn't work on ghosts -/obj/item/weapon/paper/talisman/true_sight - cultist_name = "Talisman of Revealing" - cultist_desc = "A talisman that reveals nearby invisible runes." - color = "#4d4d4d" // dark grey - invocation = "Nikt'o barada kla'atu!" - health_cost = 1 - -/obj/item/weapon/paper/talisman/true_sight/invoke(mob/living/user) - user.visible_message("A flash of light shines from [user]'s hand!", \ - "You speak the words of the talisman, revealing nearby runes.") - for(var/obj/effect/rune/R in orange(3,user)) - R.invisibility = 0 + health_cost = 1 + uses = 4 + var/revealing = FALSE //if it reveals or not +/obj/item/weapon/paper/talisman/true_sight/invoke(mob/living/user, successfuluse = 1) + . = ..() + if(!revealing) + user.visible_message("Thin grey dust falls from [user]'s hand!", \ + "You speak the words of the talisman, hiding nearby runes.") + cultist_name = "Talisman of Revealing" + cultist_desc = "A talisman that reveals nearby runes." + invocation = "Nikt'o barada kla'atu!" + revealing = TRUE + for(var/obj/effect/rune/R in range(3,user)) + R.visible_message("[R] fades away.") + R.invisibility = INVISIBILITY_OBSERVER + R.alpha = 100 //To help ghosts distinguish hidden runes + else + user.visible_message("A flash of light shines from [user]'s hand!", \ + "You speak the words of the talisman, revealing nearby runes.") + for(var/obj/effect/rune/R in range(3,user)) + R.invisibility = 0 + R.visible_message("[R] suddenly appears!") + R.alpha = initial(R.alpha) //Rite of False Truths: Same as rune /obj/item/weapon/paper/talisman/make_runes_fake From 2fff4f45611bffe51a822f2c609e1d8dfa497522 Mon Sep 17 00:00:00 2001 From: Robustin Date: Thu, 14 Apr 2016 14:04:57 -0400 Subject: [PATCH 033/265] Remie/Dunc fixes --- code/game/gamemodes/cult/runes.dm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 92d67fca447..2f48bccc2d2 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -708,10 +708,11 @@ var/list/teleport_runes = list() entered_talisman_name = input(user, "Choose a talisman to imbue.", "Talisman Choices") as null|anything in possible_talismans if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated()) return - for(var/I in typesof(/obj/item/weapon/paper/talisman)) - var/obj/effect/rune/J = I - if(initial(J.cultist_name) == entered_talisman_name) - talisman_type = J + var/obj/effect/rune/J = I + var/talisman_cult_name = initial(J.cultist_name) + if(talisman_cult_name) + possible_talismans[talisman_cult_name] = J + talisman_type = possible_talismans[entered_talisman_name] user.say("H'drak v'loso, mir'kanas verbot!") visible_message("Dark power begins to channel into the paper!.") rune_in_use = 1 From 4b9e4f771eb1a22930e3024f36986d39c378f9f5 Mon Sep 17 00:00:00 2001 From: Robustin Date: Thu, 14 Apr 2016 14:07:43 -0400 Subject: [PATCH 034/265] Typos and minor stuff --- code/game/gamemodes/cult/ritual.dm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index ce6de7a4293..85f712c6008 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -15,7 +15,7 @@ This file contains the arcane tome files as well as innate cultist emergency com if(!iscultist(usr) || usr.incapacitated()) return if(!istype(usr, /mob/living/simple_animal)) - var/confirm_desperation = alert(usr, "This is a LAST RESORT, you should use a tome to communicate if possible. This ritual will inflict serious injury on you!", "Is this what you want?", "Yes", "No") + var/confirm_desperation = alert(usr, "This is a LAST RESORT; you should use a tome to communicate if possible. This ritual will inflict serious injury on you!", "Is this what you want?", "Yes", "No") if(confirm_desperation == "No") usr << "On second thought, maybe I should summon a tome." return @@ -153,7 +153,7 @@ This file contains the arcane tome files as well as innate cultist emergency com To do this, simply place the crew member upon the rune and invoke it. This rune requires two acolytes to use. If the target to be converted is loyalty-implanted or a certain assignment, they will \ be unable to be converted. People the Geometer wishes sacrificed will also be ineligible for conversion, and anyone with a shielding presence like the null rod will not be converted.

" - text += "Sacrifice
The Rune of Sacrifice is necessary to achieve your goal. Simply place any dead creature upon the rune and invoke it (this will not \ + text += "Sacrifice
The Rune of Sacrifice is necessary to achieve your goals. Simply place any dead creature upon the rune and invoke it (this will not \ target cultists!). If this creature has a mind, a soul shard will be created and the creature's soul transported to it. This rune is required if the cult's objectives include the sacrifice of a crew \ member. Sacrificing the dead can be done alone, but sacrificing living crew or your cult's target will require 3 cultists. Soul shards used on construct shells will move that soul into a \ powerful construct of your choice.

" @@ -178,10 +178,10 @@ This file contains the arcane tome files as well as innate cultist emergency com text += "Summon Cultist
The Rune of Summoning requires two acolytes to use. When invoked, it will allow the user to summon a single cultist to the rune from \ any location. This will deal a moderate amount of damage to all invokers. Absolutely crucial for rescuing your brothers from security.

" - text += "Fabricate Shell
The Rite of Fabrication is the main way of creating construct shells. To use it, one must place fifteen sheets of metal on top of the rune \ + text += "Fabricate Shell
The Rune of Fabrication is the main way of creating construct shells. To use it, one must place fifteen sheets of metal on top of the rune \ and invoke it. The sheets will them be twisted into a construct shell, ready to recieve a soul to occupy it.

" - text += "Blood Boil
The Rite of Boiling Blood may be considered one of the most dangerous rites composed by the cult of Nar-Sie. When invoked, it will do a \ + text += "Blood Boil
The Rune of Boiling Blood may be considered one of the most dangerous rites composed by the cult of Nar-Sie. When invoked, it will do a \ massive amount of damage to all non-cultist viewers, but it will also emit an explosion upon invocation. It requires three invokers.

" text += "Manifest Spirit
If you wish to bring a spirit back from the dead with a wish for vengeance and desire to serve, the Rite of Spectral \ @@ -207,7 +207,7 @@ This file contains the arcane tome files as well as innate cultist emergency com talisman functions differently from others. Rather than simply reading the words, the target must be attacked directly with the talisman. The talisman will then knock down the target for a long \ duration in addition to inhibiting their speech. Robotic lifeforms will suffer the effects of a heavy electromagnetic pulse instead." - text += "Talisman of Armaments
The Rite of Arming will equip the user with armored robes, a backpack, an eldrich longsword, and a pair of boots. Any items that cannot \ + text += "Talisman of Armaments
The Rite of Arming will equip the user with armored robes, a backpack, an eldritch longsword, and a pair of boots. Any items that cannot \ be equipped will not be summoned.

" text += "Talisman of Horrors
The Rite of Horror must be applied directly to the victim, it will shatter your victim's mind with visions of the endtimes.

" From a93dcb643929aad99474ad3b87390198113b2673 Mon Sep 17 00:00:00 2001 From: Robustin Date: Thu, 14 Apr 2016 18:31:04 -0400 Subject: [PATCH 035/265] Construction Talisman and misc. fixes --- code/game/gamemodes/cult/talisman.dm | 62 ++++++++++++++++++---------- 1 file changed, 40 insertions(+), 22 deletions(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 86a88414a6f..42849385472 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -140,7 +140,7 @@ /obj/item/weapon/paper/talisman/summon_tome cultist_name = "Talisman of Tome Summoning" cultist_desc = "A one-use talisman that will call an untranslated tome from the archives of the Geometer." - color = "#000000" // tome-black + color = "#1d0e0e" // red-black invocation = "N'ath reth sh'yro eth d'raggathnor!" health_cost = 1 @@ -151,12 +151,13 @@ user.visible_message("A tome appears at [user]'s feet!", \ "An arcane tome materializes at your feet.") -/obj/item/weapon/paper/talisman/hide_runes +/obj/item/weapon/paper/talisman/true_sight cultist_name = "Talisman of Veiling" cultist_desc = "A multi-use talisman that hides nearby runes. On its second use, will reveal nearby runes." + color = "#9c9c9c" // grey invocation = "Kla'atu barada nikt'o!" - health_cost = 1 - uses = 4 + health_cost = 1 + uses = 2 var/revealing = FALSE //if it reveals or not /obj/item/weapon/paper/talisman/true_sight/invoke(mob/living/user, successfuluse = 1) @@ -164,8 +165,6 @@ if(!revealing) user.visible_message("Thin grey dust falls from [user]'s hand!", \ "You speak the words of the talisman, hiding nearby runes.") - cultist_name = "Talisman of Revealing" - cultist_desc = "A talisman that reveals nearby runes." invocation = "Nikt'o barada kla'atu!" revealing = TRUE for(var/obj/effect/rune/R in range(3,user)) @@ -212,22 +211,8 @@ cultist_desc = "A talisman that will stun and inhibit speech on a single target. To use, attack target directly." color = "#ff0000" // red invocation = "Fuu ma'jin!" - health_cost = 12 - -//Rite of Arming: Equips cultist armor on the user, where available -/obj/item/weapon/paper/talisman/armor - cultist_name = "Talisman of Arming" - cultist_desc = "A talisman that will equip the invoker with cultist equipment if there is a slot to equip it to." - color = "#33cc33" // green - invocation = "N'ath reth sh'yro eth draggathnor!" - -//Rite of Horrors: Breaks the mind of the victim with nightmarish hallucinations -/obj/item/weapon/paper/talisman/horror - cultist_name = "Talisman of Horrors" - cultist_desc = "A talisman that will break the mind of the victim with nightmarish hallucinations." - color = "#ffb366" // light orange - invocation = "Lo'Nab Na'Dm!" - + health_cost = 10 + /obj/item/weapon/paper/talisman/stun/attack_self(mob/living/user) if(iscultist(user)) user << "To use this talisman, attack the target directly." @@ -261,6 +246,13 @@ return ..() +//Rite of Arming: Equips cultist armor on the user, where available +/obj/item/weapon/paper/talisman/armor + cultist_name = "Talisman of Arming" + cultist_desc = "A talisman that will equip the invoker with cultist equipment if there is a slot to equip it to." + color = "#33cc33" // green + invocation = "N'ath reth sh'yro eth draggathnor!" + /obj/item/weapon/paper/talisman/armor/invoke(mob/living/user) . = ..() user.visible_message("Otherworldly armor suddenly appears on [user]!", \ @@ -280,6 +272,13 @@ return ..() +//Talisman of Horrors: Breaks the mind of the victim with nightmarish hallucinations +/obj/item/weapon/paper/talisman/horror + cultist_name = "Talisman of Horrors" + cultist_desc = "A talisman that will break the mind of the victim with nightmarish hallucinations." + color = "#ffb366" // light orange + invocation = "Lo'Nab Na'Dm!" + /obj/item/weapon/paper/talisman/horror/attack(mob/living/target, mob/living/user) if(iscultist(user)) user.visible_message("You disturb [target] with visons of the end!") @@ -287,3 +286,22 @@ var/mob/living/carbon/H = target H.reagents.add_reagent("mindbreaker", 30) qdel(src) + +//Talisman of Fabrication: Creates a construct shell out of 25 metal sheets. +/obj/item/weapon/paper/talisman/construction + cultist_name = "Talisman of Construction" + cultist_desc = "Use this talisman on at least twenty-five metal sheets to create an empty construct shell" + invocation = "Ethra p'ni dedol!" + color = "#000000" // black + +/obj/item/weapon/paper/talisman/construction/attack_self(mob/living/user) + if(iscultist(user)) + user << "To use this talisman, attack the target directly." + else + user << "There are indecipherable images scrawled on the paper in what looks to be... blood?" + + +/obj/item/weapon/paper/talisman/construction/attack(obj/M,mob/living/user) + if(iscultist(user)) + user << "This talisman will only work on a stack of metal sheets!" + log_game("Construct talisman failed - not a valid target") From 6f8a5e2b20a8ed664fa769f3a9d538c75d384823 Mon Sep 17 00:00:00 2001 From: Robustin Date: Thu, 14 Apr 2016 18:35:39 -0400 Subject: [PATCH 036/265] Updated Descriptions --- code/game/gamemodes/cult/ritual.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 85f712c6008..85141a87a33 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -74,7 +74,7 @@ This file contains the arcane tome files as well as innate cultist emergency com just to draw the massive rune needed. Do not create the rune until your cult is ready, the crew will receive the NAME and LOCATION of anyone who attempts to create the Nar-Sie rune. Once the Nar-Sie rune is drawn \ you must gathered 9 cultists (or constructs) over the rune and then click it to bring the Dark One into this world!

" - var/datum/browser/popup = new(user, "", 800, 600) + var/datum/browser/popup = new(usr, "", 800, 600) popup.set_content(text) popup.open() return @@ -178,9 +178,6 @@ This file contains the arcane tome files as well as innate cultist emergency com text += "Summon Cultist
The Rune of Summoning requires two acolytes to use. When invoked, it will allow the user to summon a single cultist to the rune from \ any location. This will deal a moderate amount of damage to all invokers. Absolutely crucial for rescuing your brothers from security.

" - text += "Fabricate Shell
The Rune of Fabrication is the main way of creating construct shells. To use it, one must place fifteen sheets of metal on top of the rune \ - and invoke it. The sheets will them be twisted into a construct shell, ready to recieve a soul to occupy it.

" - text += "Blood Boil
The Rune of Boiling Blood may be considered one of the most dangerous rites composed by the cult of Nar-Sie. When invoked, it will do a \ massive amount of damage to all non-cultist viewers, but it will also emit an explosion upon invocation. It requires three invokers.

" @@ -195,6 +192,9 @@ This file contains the arcane tome files as well as innate cultist emergency com text += "Talisman of Teleportation
The talisman form of the Rite of Translocation will transport the invoker to a randomly chosen rune of the same keyword, then \ disappear.

" + + text += "Talisman of Construction
The Rune of Fabrication is the main way of creating construct shells. To use it, one must place fifteen sheets of metal on top of the rune \ + and invoke it. The sheets will them be twisted into a construct shell, ready to recieve a soul to occupy it.

" text += "Talisman of Tome Summoning
This talisman functions nearly identically to the rune. The talisman will attempt to place the tome in your hand \ instead of on the ground, though this is the only advantage it has over the rune. It can be used once, then disappears.

" From 69ef6ba8b04c50f8f3f540d00beda894d418714e Mon Sep 17 00:00:00 2001 From: Robustin Date: Thu, 14 Apr 2016 18:37:09 -0400 Subject: [PATCH 037/265] Removed Construction Rune --- code/game/gamemodes/cult/runes.dm | 169 +++++++++++++----------------- 1 file changed, 71 insertions(+), 98 deletions(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 2f48bccc2d2..d8267d51778 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -1,5 +1,6 @@ /var/list/sacrificed = list() var/list/non_revealed_runes = (subtypesof(/obj/effect/rune) - /obj/effect/rune/malformed) +var/list/teleport_runes = list() /* @@ -159,7 +160,57 @@ structure_check() searches for nearby cultist structures required for the invoca return N return 0 -var/list/teleport_runes = list() +//Rite of Binding: Turns a nearby rune and a paper on top of the rune to a talisman, if both are valid. +/obj/effect/rune/imbue + cultist_name = "Create Talisman" + cultist_desc = "Transforms papers and valid runes into talismans." + invocation = null //no talisman made, no invocation. + icon_state = "3" + color = rgb(0, 0, 255) + +/obj/effect/rune/imbue/invoke(mob/living/user) + var/turf/T = get_turf(src) + var/list/papers_on_rune = list() + var/entered_talisman_name + var/obj/item/weapon/paper/talisman/talisman_type + var/list/possible_talismans = list() + for(var/obj/item/weapon/paper/P in T) + if(!P.info) + papers_on_rune.Add(P) + if(!papers_on_rune.len) + user << "There must be a blank paper on top of [src]!" + fail_invoke() + log_game("Talisman Imbue rune failed - no blank papers on rune") + return + if(rune_in_use) + user << "[src] can only support one ritual at a time!" + fail_invoke() + log_game("Talisman Imbue rune failed - more than one user") + return + var/obj/item/weapon/paper/paper_to_imbue = pick(papers_on_rune) + for(var/I in subtypesof(/obj/item/weapon/paper/talisman) - /obj/item/weapon/paper/talisman/malformed - /obj/item/weapon/paper/talisman/supply) + var/obj/item/weapon/paper/talisman/J = I + var/talisman_cult_name = initial(J.cultist_name) + if(talisman_cult_name) + possible_talismans[talisman_cult_name] = J //This is to allow the menu to let cultists select talismans by name + entered_talisman_name = input(user, "Choose a talisman to imbue.", "Talisman Choices") as null|anything in possible_talismans + if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated()) + return + talisman_type = possible_talismans[entered_talisman_name] + user.say("H'drak v'loso, mir'kanas verbot!") + visible_message("Dark power begins to channel into the paper!.") + rune_in_use = 1 + if(!do_after(user, 100, target = get_turf(user))) + rune_in_use = 0 + return + var/obj/item/weapon/paper/talisman/TA = new talisman_type(get_turf(src)) + if(istype(TA, /obj/item/weapon/paper/talisman/teleport)) + var/the_keyword = stripped_input(usr, "Please enter a keyword for the talisman.", "Enter Keyword", "") + var/obj/item/weapon/paper/talisman/teleport/TELE = TA + TELE.keyword = the_keyword + visible_message("[src] crumbles to dust, and bloody images form themselves on [paper_to_imbue].") + qdel(paper_to_imbue) + rune_in_use = 0 //Rite of Translocation: Warps the user to a random teleport rune with the same keyword. /obj/effect/rune/teleport cultist_name = "Teleport" @@ -211,7 +262,8 @@ var/list/teleport_runes = list() visible_message("There is a sharp crack of inrushing air, and everything above the rune disappears!") user << "You[user.loc == UT ? " send everything above the rune away":"r vision blurs, and you suddenly appear somewhere else"]." else - fail_invoke() + fail_invoke() + //Rite of Enlightenment: Converts a normal crewmember to the cult. Faster for every cultist nearby. /obj/effect/rune/convert @@ -374,7 +426,8 @@ var/list/teleport_runes = list() M << "\"YOUR SOUL BURNS WITH YOUR ARROGANCE!!!\"" if(M.reagents) M.reagents.add_reagent("hell_water", 10) - M.Weaken(5) + M.Weaken(7) + M.Stun(7) fail_invoke() log_game("Summon Nar-Sie rune failed - improper objective") return @@ -521,20 +574,20 @@ var/list/teleport_runes = list() /obj/effect/rune/emp/invoke(mob/living/user) var/turf/E = get_turf(src) var/emp_strength = 0 - for(var/mob/living/L in range(1, src)) - if(iscultist(L)) - var/mob/living/carbon/human/H = L - if(!istype(H)) - if(istype(L, /mob/living/simple_animal/hostile/construct)) - if(invocation) - L.say(invocation) - emp_strength++ + for(var/mob/living/L in range(1, src)) + if(iscultist(L)) + var/mob/living/carbon/human/H = L + if(!istype(H)) + if(istype(L, /mob/living/simple_animal/hostile/construct)) + if(invocation) + L.say(invocation) + emp_strength++ continue - if(L.stat || (H.disabilities & MUTE) || H.silent) - continue - if(invocation) - L.say(invocation) - emp_strength++ + if(L.stat || (H.disabilities & MUTE) || H.silent) + continue + if(invocation) + L.say(invocation) + emp_strength++ visible_message("[src] glows blue for a moment before vanishing.") for(var/mob/living/carbon/C in range(1,src)) C << "You feel a minute vibration pass through you!" @@ -673,86 +726,6 @@ var/list/teleport_runes = list() cultist_to_summon.forceMove(get_turf(src)) qdel(src) -//Rite of Binding: Turns a nearby rune and a paper on top of the rune to a talisman, if both are valid. -/obj/effect/rune/imbue - cultist_name = "Create Talisman" - cultist_desc = "Transforms papers and valid runes into talismans." - invocation = null //no talisman made, no invocation. - icon_state = "3" - color = rgb(0, 0, 255) - -/obj/effect/rune/imbue/invoke(mob/living/user) - var/turf/T = get_turf(src) - var/list/papers_on_rune = list() - var/entered_talisman_name - var/obj/item/weapon/paper/talisman/talisman_type - var/list/possible_talismans = list() - for(var/obj/item/weapon/paper/P in T) - if(!P.info) - papers_on_rune.Add(P) - if(!papers_on_rune.len) - user << "There must be a blank paper on top of [src]!" - fail_invoke() - log_game("Talisman Imbue rune failed - no blank papers on rune") - return - if(rune_in_use) - user << "[src] can only support one ritual at a time!" - fail_invoke() - log_game("Talisman Imbue rune failed - more than one user") - return - var/obj/item/weapon/paper/paper_to_imbue = pick(papers_on_rune) - for(var/I in subtypesof(/obj/item/weapon/paper/talisman) - /obj/item/weapon/paper/talisman/malformed - /obj/item/weapon/paper/talisman/supply) - var/obj/item/weapon/paper/talisman/J = I - if(initial(J.cultist_name)) - possible_talismans.Add(initial(J.cultist_name)) //This is to allow the menu to let cultists select talismans by name - entered_talisman_name = input(user, "Choose a talisman to imbue.", "Talisman Choices") as null|anything in possible_talismans - if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated()) - return - var/obj/effect/rune/J = I - var/talisman_cult_name = initial(J.cultist_name) - if(talisman_cult_name) - possible_talismans[talisman_cult_name] = J - talisman_type = possible_talismans[entered_talisman_name] - user.say("H'drak v'loso, mir'kanas verbot!") - visible_message("Dark power begins to channel into the paper!.") - rune_in_use = 1 - if(!do_after(user, 100, target = get_turf(user))) - rune_in_use = 0 - return - var/obj/item/weapon/paper/talisman/TA = new talisman_type(get_turf(src)) - if(istype(TA, /obj/item/weapon/paper/talisman/teleport)) - var/the_keyword = stripped_input(usr, "Please enter a keyword for the talisman.", "Enter Keyword", "") - var/obj/item/weapon/paper/talisman/teleport/TELE = TA - TELE.keyword = the_keyword - visible_message("[src] crumbles to dust, and bloody images form themselves on [paper_to_imbue].") - qdel(paper_to_imbue) - rune_in_use = 0 - -//Rite of Fabrication: Creates a construct shell out of 15 metal sheets. -/obj/effect/rune/construct_shell - cultist_name = "Summon Construct Shell" - cultist_desc = "Turns fifteen metal sheets into an empty construct shell, suitable for containing a soul shard." - invocation = "Ethra p'ni dedol!" - icon_state = "5" - color = rgb(150, 150, 150) - -/obj/effect/rune/construct_shell/invoke(mob/living/user) - var/turf/T = get_turf(src) - var/canmakeshell = 0 - for(var/obj/item/stack/sheet/metal/S in T) - if(!canmakeshell && S.use(15)) - canmakeshell = 1 - if(canmakeshell) - . = ..() - else - user << "There must be at least fifteen sheets of metal on [src]!" - log_game("Construct Shell rune failed - not enough metal sheets") - -/obj/effect/rune/construct_shell/invoke(mob/living/user) - new /obj/structure/constructshell(get_turf(src)) - visible_message("The metal bends and twists into a humanoid shell!") - qdel(src) - //Rite of Boiling Blood: Deals extremely high amounts of damage to non-cultists nearby /obj/effect/rune/blood_boil cultist_name = "Boil Blood" @@ -772,7 +745,7 @@ var/list/teleport_runes = list() continue C << "Your blood boils in your veins!" C.take_overall_damage(45,45) - C.weakened(7) + C.Stun(7) for(var/mob/living/carbon/M in range(1,src)) if(iscultist(M)) M.apply_damage(15, BRUTE, pick("l_arm", "r_arm")) @@ -836,7 +809,7 @@ var/list/teleport_runes = list() user.apply_damage(1, BRUTE) sleep(30) - q.del(N) + qdel(N) if(new_human) new_human.visible_message("[new_human] suddenly dissolves into bones and ashes.", \ "Your link to the world fades. Your form breaks apart.") From fb782d566441cc8a303bffef0371b4cb2e2ac8ab Mon Sep 17 00:00:00 2001 From: Robustin Date: Thu, 14 Apr 2016 18:38:57 -0400 Subject: [PATCH 039/265] Enabling Construction Talisman --- .../objects/items/stacks/sheets/sheet_types.dm | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 11862ff7bba..8adb06545d0 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -57,6 +57,20 @@ var/global/list/datum/stack_recipe/metal_recipes = list ( \ flags = CONDUCT origin_tech = "materials=1" +/obj/item/stack/sheet/metal/attackby(obj/item/weapon/W, mob/living/user) + ..() + if(istype(W, /obj/item/weapon/paper/talisman/construction)) + if(amount>24) + amount = amount - 25 + new /obj/structure/constructshell(get_turf(src)) + user << "The talisman clings to the metal and twists it into a construct shell!" + if(amount == 0) + qdel(src) + qdel(W) + else + user << "The talisman requires at least 25 sheets of metal!" + + /obj/item/stack/sheet/metal/narsie_act() if(prob(20)) new /obj/item/stack/sheet/runed_metal(loc, amount) From 1a6fecb5be5cfe6c1f637f3593edc67636a74723 Mon Sep 17 00:00:00 2001 From: Robustin Date: Thu, 14 Apr 2016 18:39:44 -0400 Subject: [PATCH 040/265] Fake Talismans --- code/game/machinery/washing_machine.dm | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index 5b30ada2d0e..d851dfe2d3b 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -16,6 +16,7 @@ //8 = blood, running var/gibs_ready = 0 var/obj/crayon + var/obj/paper /obj/machinery/washing_machine/AltClick(mob/user) if(!user.canUseTopic(src)) @@ -44,7 +45,21 @@ for(var/obj/item/clothing/suit/hooded/ian_costume/IC in contents) new /obj/item/weapon/reagent_containers/food/snacks/meat/slab/corgi(src) qdel(IC) - + + for(var/obj/item/weapon/paper/P in contents) + if(crayon) + var/dye_color + if(istype(crayon,/obj/item/toy/crayon)) + var/obj/item/toy/crayon/CR = crayon + dye_color = CR.colourName + else if(istype(crayon,/obj/item/weapon/stamp)) + var/obj/item/weapon/stamp/ST = crayon + dye_color = ST.item_color + if(dye_color) + P.color = dye_color + qdel(crayon) + crayon = null + if(crayon) var/wash_color if(istype(crayon,/obj/item/toy/crayon)) @@ -53,6 +68,7 @@ else if(istype(crayon,/obj/item/weapon/stamp)) var/obj/item/weapon/stamp/ST = crayon wash_color = ST.item_color + if(wash_color) var/new_jumpsuit_icon_state = "" @@ -196,6 +212,7 @@ state = 3 else ..() + else if(istype(W,/obj/item/stack/sheet/hairlesshide) || \ istype(W,/obj/item/clothing/under) || \ istype(W,/obj/item/clothing/mask) || \ @@ -203,7 +220,8 @@ istype(W,/obj/item/clothing/gloves) || \ istype(W,/obj/item/clothing/shoes) || \ istype(W,/obj/item/clothing/suit) || \ - istype(W,/obj/item/weapon/bedsheet)) + istype(W,/obj/item/weapon/bedsheet) || \ + istype(W,/obj/item/weapon/paper)) //YES, it's hardcoded... saves a var/can_be_washed for every single clothing item. if ( istype(W,/obj/item/clothing/suit/space ) ) From 97044ac59fc7fdeab561b99ed02818e46c63e9fc Mon Sep 17 00:00:00 2001 From: Robustin Date: Thu, 14 Apr 2016 19:20:12 -0400 Subject: [PATCH 041/265] Joan's one-rune-per-tile and other improvements --- code/game/gamemodes/cult/ritual.dm | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 85141a87a33..0988a73fe28 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -218,10 +218,14 @@ This file contains the arcane tome files as well as innate cultist emergency com return 1 /obj/item/weapon/tome/proc/scribe_rune(mob/user) + var/turf/Turf = get_turf(user) var/chosen_keyword - var/rune_to_scribe + var/obj/effect/rune/rune_to_scribe var/entered_rune_name var/list/possible_runes = list() + if(locate(/obj/effect/rune) in Turf) + user << "There is already a rune here." + return for(var/T in subtypesof(/obj/effect/rune) - /obj/effect/rune/malformed) var/obj/effect/rune/R = T if(initial(R.cultist_name)) @@ -243,6 +247,10 @@ This file contains the arcane tome files as well as innate cultist emergency com break if(!rune_to_scribe) return + var/turf/Thenewturfyouwalkedto = get_turf(user) //we may have moved. adjust as needed... + if(locate(/obj/effect/rune) in Thenewturfyouwalkedto) + user << "There is already a rune here." + return if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated()) return user.visible_message("[user] cuts open their arm and begins writing in their own blood!", \ @@ -271,6 +279,5 @@ This file contains the arcane tome files as well as innate cultist emergency com "You finish drawing the arcane markings of the Geometer.") for(var/obj/machinery/shield/S in orange (1, user)) qdel(S) - var/obj/effect/rune/R = new rune_to_scribe(get_turf(user)) - if(chosen_keyword) - R.keyword = chosen_keyword + new rune_to_scribe(Thenewturfyouwalkedto, chosen_keyword) + user << "The [lowertext(initial(rune_to_scribe.cultist_name))] rune [initial(rune_to_scribe.cultist_desc)]" From 0f169648f9d981bd5995853b221d4d554751185a Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Apr 2016 03:58:53 -0400 Subject: [PATCH 042/265] Joan Teleportation Fix --- code/game/gamemodes/cult/runes.dm | 47 ++++++++++++++++++++----------- 1 file changed, 31 insertions(+), 16 deletions(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index d8267d51778..c220cae89d6 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -211,10 +211,10 @@ structure_check() searches for nearby cultist structures required for the invoca visible_message("[src] crumbles to dust, and bloody images form themselves on [paper_to_imbue].") qdel(paper_to_imbue) rune_in_use = 0 -//Rite of Translocation: Warps the user to a random teleport rune with the same keyword. + /obj/effect/rune/teleport cultist_name = "Teleport" - cultist_desc = "Warps everything above it to another chosen teleport rune." + cultist_desc = "warps everything above it to another chosen teleport rune." invocation = "Sas'so c'arta forbici!" icon_state = "2" color = rgb(0, 0, 255) @@ -223,34 +223,49 @@ structure_check() searches for nearby cultist structures required for the invoca /obj/effect/rune/teleport/New(loc, set_keyword) ..() - teleport_runes.Add(src) var/area/A = get_area(src) var/locname = initial(A.name) listkey = set_keyword ? "[set_keyword] [locname]":"[locname]" - teleport_runes["[listkey]"] = src + teleport_runes += src /obj/effect/rune/teleport/Destroy() - teleport_runes.Remove(listkey) - return ..() + teleport_runes -= src + return ..() /obj/effect/rune/teleport/invoke(mob/living/user) - var/list/potential_runes = list() + var/list/potential_runes = list() + var/list/teleportnames = list() + var/list/duplicaterunecount = list() for(var/R in teleport_runes) - var/obj/effect/rune/teleport/T = teleport_runes[R] + var/obj/effect/rune/teleport/T = R + var/resultkey = T.listkey + if(resultkey in teleportnames) + duplicaterunecount[resultkey]++ + resultkey = "[resultkey] ([duplicaterunecount[resultkey]])" + else + teleportnames.Add(resultkey) + duplicaterunecount[resultkey] = 1 if(T != src && (T.z <= ZLEVEL_SPACEMAX)) - potential_runes["[T.listkey]"] = T + potential_runes[resultkey] = T if(!potential_runes.len) user << "There are no valid runes to teleport to!" - fail_invoke() log_game("Teleport rune failed - no other teleport runes") - return - - var/input_rune_key = input(user, "Choose a rune to teleport to.", "Rune to Teleport to") as null|anything in potential_runes - var/obj/effect/rune/teleport/actual_selected_rune = teleport_runes["[input_rune_key]"] - if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated() || !actual_selected_rune) fail_invoke() return + + if(user.z > ZLEVEL_SPACEMAX) + user << "You are not in the right dimension!" + log_game("Teleport rune failed - user in away mission") + fail_invoke() + return + + var/input_rune_key = input(user, "Choose a rune to teleport to.", "Rune to Teleport to") as null|anything in potential_runes //we know what key they picked + var/obj/effect/rune/teleport/actual_selected_rune = potential_runes[input_rune_key] //what rune does that key correspond to? + if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated() || !actual_selected_rune) + fail_invoke() + return + var/turf/T = get_turf(src) var/turf/UT = get_turf(user) var/movedsomething = 0 @@ -262,7 +277,7 @@ structure_check() searches for nearby cultist structures required for the invoca visible_message("There is a sharp crack of inrushing air, and everything above the rune disappears!") user << "You[user.loc == UT ? " send everything above the rune away":"r vision blurs, and you suddenly appear somewhere else"]." else - fail_invoke() + fail_invoke() //Rite of Enlightenment: Converts a normal crewmember to the cult. Faster for every cultist nearby. From cd8f93f158a4353067b1d7752043c98072e636f9 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Apr 2016 04:28:47 -0400 Subject: [PATCH 043/265] Joan Teleportation Fix --- code/game/gamemodes/cult/talisman.dm | 31 ++++++++++++++++------------ 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 42849385472..4f2bf180b18 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -104,37 +104,42 @@ /obj/item/weapon/paper/talisman/teleport cultist_name = "Talisman of Teleportation" cultist_desc = "A single-use talisman that will teleport a user to a random rune of the same keyword." - color = "#9900cc" // purple invocation = "Sas'so c'arta forbici!" health_cost = 5 - var/keyword = "ire" -/obj/item/weapon/paper/talisman/teleport/invoke(mob/living/user) - ..() +/obj/item/weapon/paper/talisman/teleport/invoke(mob/living/user, successfuluse = 1) var/list/potential_runes = list() + var/list/teleportnames = list() + var/list/duplicaterunecount = list() for(var/R in teleport_runes) - var/obj/effect/rune/teleport/T = teleport_runes[R] - if(T.z <= ZLEVEL_SPACEMAX) - potential_runes["[T.listkey]"] = T + var/obj/effect/rune/teleport/T = R + var/resultkey = T.listkey + if(resultkey in teleportnames) + duplicaterunecount[resultkey]++ + resultkey = "[resultkey] ([duplicaterunecount[resultkey]])" + else + teleportnames.Add(resultkey) + duplicaterunecount[resultkey] = 1 + potential_runes[resultkey] = T if(!potential_runes.len) user << "There are no valid runes to teleport to!" log_game("Teleport talisman failed - no other teleport runes") - return 0 + return ..(user, 0) if(user.z > ZLEVEL_SPACEMAX) user << "You are not in the right dimension!" log_game("Teleport talisman failed - user in away mission") - return 0 + return ..(user, 0) - var/input_rune_key = input(user, "Choose a rune to teleport to.", "Rune to Teleport to") as null|anything in potential_runes - var/obj/effect/rune/teleport/actual_selected_rune = teleport_runes["[input_rune_key]"] + var/input_rune_key = input(user, "Choose a rune to teleport to.", "Rune to Teleport to") as null|anything in potential_runes //we know what key they picked + var/obj/effect/rune/teleport/actual_selected_rune = potential_runes[input_rune_key] //what rune does that key correspond to? if(!actual_selected_rune) - return 0 + return ..(user, 0) user.visible_message("Dust flows from [user]'s hand, and they disappear in a flash of red light!", \ "You speak the words of the talisman and find yourself somewhere else!") user.forceMove(get_turf(actual_selected_rune)) - return 1 + return ..() /obj/item/weapon/paper/talisman/summon_tome From 451be3c15faad17f9eec782ad3069a605bfb1dd2 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Apr 2016 04:37:52 -0400 Subject: [PATCH 044/265] Shield Improvements --- code/game/gamemodes/cult/ritual.dm | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 0988a73fe28..632c38e2f25 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -223,6 +223,7 @@ This file contains the arcane tome files as well as innate cultist emergency com var/obj/effect/rune/rune_to_scribe var/entered_rune_name var/list/possible_runes = list() + var/list/shields = list() if(locate(/obj/effect/rune) in Turf) user << "There is already a rune here." return @@ -269,15 +270,21 @@ This file contains the arcane tome files as well as innate cultist emergency com N.desc = "A potent shield summoned by cultists to protect them while they prepare the final ritual" N.color = "red" N.health = 60 - if(!do_after(user, 400, target = get_turf(user))) - for(var/obj/machinery/shield/U in orange (1, user)) - qdel(U) + shields |= N + if(shields.len) + for(var/V in shields) + var/obj/machinery/shield/S = V + if(S && !qdeleted(S)) + qdel(S) return if(!do_after(user, 50, target = get_turf(user))) return user.visible_message("[user] creates a strange circle in their own blood.", \ "You finish drawing the arcane markings of the Geometer.") - for(var/obj/machinery/shield/S in orange (1, user)) - qdel(S) + if(shields.len) + for(var/V in shields) + var/obj/machinery/shield/S = V + if(S && !qdeleted(S)) + qdel(S) new rune_to_scribe(Thenewturfyouwalkedto, chosen_keyword) user << "The [lowertext(initial(rune_to_scribe.cultist_name))] rune [initial(rune_to_scribe.cultist_desc)]" From f2a3968b6fed0cb00d48b337c895023dad783f82 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Apr 2016 04:39:02 -0400 Subject: [PATCH 045/265] Cleaned up paper coloring code --- code/game/machinery/washing_machine.dm | 3 --- 1 file changed, 3 deletions(-) diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index d851dfe2d3b..a845f84a59e 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -52,9 +52,6 @@ if(istype(crayon,/obj/item/toy/crayon)) var/obj/item/toy/crayon/CR = crayon dye_color = CR.colourName - else if(istype(crayon,/obj/item/weapon/stamp)) - var/obj/item/weapon/stamp/ST = crayon - dye_color = ST.item_color if(dye_color) P.color = dye_color qdel(crayon) From dc2951ee353953e1531af43a1f7e549dbed86438 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Apr 2016 04:43:04 -0400 Subject: [PATCH 046/265] Update ritual.dm --- code/game/gamemodes/cult/ritual.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 632c38e2f25..22de43ca247 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -74,10 +74,10 @@ This file contains the arcane tome files as well as innate cultist emergency com just to draw the massive rune needed. Do not create the rune until your cult is ready, the crew will receive the NAME and LOCATION of anyone who attempts to create the Nar-Sie rune. Once the Nar-Sie rune is drawn \ you must gathered 9 cultists (or constructs) over the rune and then click it to bring the Dark One into this world!

" - var/datum/browser/popup = new(usr, "", 800, 600) + var/datum/browser/popup = new(usr, "mind", "", 800, 600) popup.set_content(text) popup.open() - return + return 1 /obj/item/weapon/tome name = "arcane tome" @@ -207,10 +207,10 @@ This file contains the arcane tome files as well as innate cultist emergency com talisman functions differently from others. Rather than simply reading the words, the target must be attacked directly with the talisman. The talisman will then knock down the target for a long \ duration in addition to inhibiting their speech. Robotic lifeforms will suffer the effects of a heavy electromagnetic pulse instead." - text += "Talisman of Armaments
The Rite of Arming will equip the user with armored robes, a backpack, an eldritch longsword, and a pair of boots. Any items that cannot \ + text += "Talisman of Armaments
The Talisman of Arming will equip the user with armored robes, a backpack, an eldritch longsword, a bola, and a pair of boots. Any items that cannot \ be equipped will not be summoned.

" - text += "Talisman of Horrors
The Rite of Horror must be applied directly to the victim, it will shatter your victim's mind with visions of the endtimes.

" + text += "Talisman of Horrors
The Talisman of Horror must be applied directly to the victim, it will shatter your victim's mind with visions of the endtimes.

" var/datum/browser/popup = new(user, "tome", "", 800, 600) popup.set_content(text) From 27dfe78a6b9d3cc30af3379e8ff91436aa68c73d Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Apr 2016 04:47:20 -0400 Subject: [PATCH 047/265] Adds reinforced bola to talisman of arming --- code/game/gamemodes/cult/talisman.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 4f2bf180b18..b0189cf916c 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -268,6 +268,7 @@ user.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/cultpack(user), slot_back) user.drop_item() user.put_in_hands(new /obj/item/weapon/melee/cultblade(user)) + user.put_in_hands(new /obj/item/weapon/restraints/legcuffs/bola/tactical(user)) /obj/item/weapon/paper/talisman/armor/attack(mob/living/target, mob/living/user) if(iscultist(user) && iscultist(target)) From ebda5397c7a9b0af47191b427e70427933919798 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Apr 2016 10:46:08 -0400 Subject: [PATCH 048/265] Talisman keyword fix --- code/game/gamemodes/cult/talisman.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index b0189cf916c..a6b00a77cea 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -76,7 +76,6 @@ usr.put_in_hands(T) if("teleport") var/obj/item/weapon/paper/talisman/teleport/T = new(usr) - T.keyword = "veri" usr.put_in_hands(T) if("emp") var/obj/item/weapon/paper/talisman/emp/T = new(usr) From 6c06f794700bc166f8a1169cf270109c9098a6ec Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Apr 2016 10:49:32 -0400 Subject: [PATCH 049/265] So thats why you meme about hidden white space In my day we used brackets... --- code/game/gamemodes/cult/ritual.dm | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 22de43ca247..5122cd4a7db 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -271,11 +271,11 @@ This file contains the arcane tome files as well as innate cultist emergency com N.color = "red" N.health = 60 shields |= N - if(shields.len) - for(var/V in shields) - var/obj/machinery/shield/S = V - if(S && !qdeleted(S)) - qdel(S) + if(shields.len) + for(var/V in shields) + var/obj/machinery/shield/S = V + if(S && !qdeleted(S)) + qdel(S) return if(!do_after(user, 50, target = get_turf(user))) return @@ -283,8 +283,8 @@ This file contains the arcane tome files as well as innate cultist emergency com "You finish drawing the arcane markings of the Geometer.") if(shields.len) for(var/V in shields) - var/obj/machinery/shield/S = V - if(S && !qdeleted(S)) - qdel(S) + var/obj/machinery/shield/S = V + if(S && !qdeleted(S)) + qdel(S) new rune_to_scribe(Thenewturfyouwalkedto, chosen_keyword) user << "The [lowertext(initial(rune_to_scribe.cultist_name))] rune [initial(rune_to_scribe.cultist_desc)]" From 859714bfe66f45fa36d9031f0955e1d6421e0a06 Mon Sep 17 00:00:00 2001 From: MrStonedOne Date: Sat, 16 Apr 2016 07:56:41 -0700 Subject: [PATCH 050/265] Adds a config for client versions --- code/controllers/configuration.dm | 14 ++++++++++++++ code/modules/client/client procs.dm | 21 +++++++++++++++++---- config/config.txt | 11 ++++++++++- 3 files changed, 41 insertions(+), 5 deletions(-) diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index 9d5364feac5..743d1328a13 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -197,6 +197,11 @@ // The object used for the clickable stat() button. var/obj/effect/statclick/statclick + var/client_warn_version = 0 + var/client_warn_message = "Your version of byond may have issues or be blocked from accessing this server in the future." + var/client_error_version = 0 + var/client_error_message = "Your version of byond is too old, may have issues, and is blocked from accessing this server." + /datum/configuration/New() var/list/L = subtypesof(/datum/game_mode) @@ -401,6 +406,15 @@ protected_config.autoadmin_rank = ckeyEx(value) if("generate_minimaps") config.generate_minimaps = 1 + if("client_warn_version") + config.client_warn_version = text2num(value) + if("client_warn_message") + config.client_warn_message = value + if("client_error_version") + config.client_error_version = text2num(value) + if("client_error_message") + config.client_error_message = value + else diary << "Unknown setting in configuration: '[name]'" diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index 6c4d4bb2fce..9b2151039a4 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -2,8 +2,7 @@ //SECURITY// //////////// #define UPLOAD_LIMIT 1048576 //Restricts client uploads to the server to 1MB //Could probably do with being lower. -#define MIN_CLIENT_VERSION 0 //Just an ambiguously low version for now, I don't want to suddenly stop people playing. - //I would just like the code ready should it ever need to be used. + /* When somebody clicks a link in game, this Topic is called first. It does the stuff in this proc and then is redirected to the Topic() proc for the src=[0xWhatever] @@ -103,8 +102,6 @@ var/next_external_rsc = 0 if(connection != "seeker" && connection != "web")//Invalid connection type. return null - if(byond_version < MIN_CLIENT_VERSION) //Out of date client. - return null #if (PRELOAD_RSC == 0) if(external_rsc_urls && external_rsc_urls.len) @@ -143,6 +140,22 @@ var/next_external_rsc = 0 . = ..() //calls mob.Login() + if (byond_version < config.client_error_version) //Out of date client. + src << "Your version of byond is too old:" + src << config.client_error_message + src << "Your version: [byond_version]" + src << "Required version: [config.client_error_version] or later" + if (holder) + src << "Because you are an admin, you are being allowed to walk past this limitation, But it is still STRONGLY suggested you upgrade" + else + del(src) + return 0 + else if (byond_version < config.client_warn_version) //We have words for this client. + src << "Your version of byond may be getting out of date:" + src << config.client_warn_message + src << "Your version: [byond_version]" + src << "Required version to remove this message: [config.client_warn_version] or later" + if (connection == "web") if (!config.allowwebclient) src << "Web client is disabled" diff --git a/config/config.txt b/config/config.txt index 955ab657256..2bab69b8652 100644 --- a/config/config.txt +++ b/config/config.txt @@ -235,4 +235,13 @@ ANNOUNCE_ADMIN_LOGOUT ## GENERATE_MINIMAPS ## Generating minimaps(For crew monitor) is slow and bogs down testing, so its disabled by default and must be enabled by uncommenting this config if you are running a production server. -#GENERATE_MINIMAPS \ No newline at end of file +#GENERATE_MINIMAPS + +## CLIENT VERSION CONTROL +## This allows you to configure the minimum required client version, as well as a warning version, and message for both. +## These trigger for any version below (non-inclusive) the given version, so 510 triggers on 509 or lower. +## These messages will be followed by one stating the clients current version and the required version for clarity. +#CLIENT_WARN_VERSION 510 +#CLIENT_WARN_MESSAGE Byond is really close to releasing 510 beta as the stable release, please take this time to try it out. Reports are that the client preforms better then the version you are using, and also handles network lag better. Shortly after it's release we will end up using 510 client features and you will be forced to update. +#CLIENT_ERROR_VERSION 509 +#CLIENT_ERROR_MESSAGE Your version of byond is not supported. Please upgrade. \ No newline at end of file From 0ce6786665b78130c2ccfe187f18320bbbdbe50d Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Apr 2016 14:28:10 -0400 Subject: [PATCH 051/265] Tabs and spaces and tabs and spaces --- code/game/gamemodes/cult/ritual.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 5122cd4a7db..e47db0b3481 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -284,7 +284,7 @@ This file contains the arcane tome files as well as innate cultist emergency com if(shields.len) for(var/V in shields) var/obj/machinery/shield/S = V - if(S && !qdeleted(S)) - qdel(S) + if(S && !qdeleted(S)) + qdel(S) new rune_to_scribe(Thenewturfyouwalkedto, chosen_keyword) user << "The [lowertext(initial(rune_to_scribe.cultist_name))] rune [initial(rune_to_scribe.cultist_desc)]" From 51a004a112899427d83a7d619325fe4b693afb61 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Apr 2016 14:34:26 -0400 Subject: [PATCH 052/265] Teleport talismans don't need a keyword --- code/game/gamemodes/cult/runes.dm | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index c220cae89d6..531d5a3b8f4 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -204,11 +204,7 @@ structure_check() searches for nearby cultist structures required for the invoca rune_in_use = 0 return var/obj/item/weapon/paper/talisman/TA = new talisman_type(get_turf(src)) - if(istype(TA, /obj/item/weapon/paper/talisman/teleport)) - var/the_keyword = stripped_input(usr, "Please enter a keyword for the talisman.", "Enter Keyword", "") - var/obj/item/weapon/paper/talisman/teleport/TELE = TA - TELE.keyword = the_keyword - visible_message("[src] crumbles to dust, and bloody images form themselves on [paper_to_imbue].") + visible_message("[src] glows with power, and bloody images form themselves on [paper_to_imbue].") qdel(paper_to_imbue) rune_in_use = 0 From 31c5ff70420f92af9443f26d5816797005bd0dbb Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Apr 2016 14:47:17 -0400 Subject: [PATCH 053/265] Adds cult bola --- code/game/objects/items/weapons/handcuffs.dm | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index e3f44bc86ef..1af8204694c 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -309,4 +309,11 @@ desc = "A strong bola, made with a long steel chain. It looks heavy, enough so that it could trip somebody." icon_state = "bola_r" breakouttime = 70 - weaken = 1 \ No newline at end of file + weaken = 1 + +/obj/item/weapon/restraints/legcuffs/bola/cult //cult variant, comes with armament talisman + name = "nar'sian bola" + desc = "A strong bola, bound with dark magic. Throw it to trip and slow your victim." + icon_state = "bola_c" + breakouttime = 45 + weaken = 1 From b8de5175378403e9228b7485daf7b0b146fc59a3 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Apr 2016 14:49:20 -0400 Subject: [PATCH 054/265] Cult Bola Icons --- icons/obj/items.dmi | Bin 59762 -> 66676 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index daa7bec0607d6d9f17f2c34138cc59b0ddfaefd7..f445282407db447b1a30209f3627bc59b348a63c 100644 GIT binary patch literal 66676 zcmcG#1yEc;*EVXxCVE3 z*8yfH@Ato3e{I!P?QYdh)zozNobJADr=N44b7OV1R0;8D@c;lIR992d0{{$k5(9u> zqkqo)$8P`t>>BvurMHrem$j#ZySIazD**UsmuC#P&We$A4_)X(_9q^`=3017EVIWt z%^FRG#O{otH~#)Gg(k&tu4FOdm8sU=VChR5?AJ@8Y$x#LU;(BwL>{6kxGcA&rTRAzDS-q%)i7z+9?Sv{%Bi}C47@^(KNAiqMbw}$mELxAN|?qWq+Hx44>@DM@jcq3MYjv ze1)W5&)b$V;7!Ybi=K=V*+>WWRf8DqnDg`)x&7sW^iCMf)>088Wjr zwZG3q;>K|YEgVTt&6qIqgt4nT2yO*wrnZ=E{(OCKR36dk=4|PJ_uZ_gJlO~Gi}G_( zk$ZZ{gKEn^RvP8P!RE4=J-USKAxX5K+m7R8)N-(AOui0Zbn_cZda-nt9aG;D5tH|` zzRaWa6AgapySq?^rIK|CL^kUDW8#M#b0vo2@`pL0;>#+y`==OxRPi6= za~kZw?CB+U%XK~oNf`T^d8%mm1*?dq1W%C!4os#Ky-R+cStrP=arh@OtQb>Me3Ldn*Ig(TLn)%72`{h$ z5M*fjA(g4fZyymYQDN0B$^P_FZQCh(eS>!}p_}4HqZA5karD!Ay1pM#B#ZE>78 zQt3bEYo1AP#OTIxyQ9a1=LuWVsr9jF)x?SOuNI5Pi_i_B_JzPxP6qnT?$qSk9@TS? zEsn^?LZxj%f0Q5iCwX&ayiP1F^+6?yhcA33s{@C}Rud7WTGqH#cJCgd?#BWJZwBqm zrmUl75SN^RYpCPqr2{ImCR0)i>mn^Ceu{l-;XZ&>zNz#yyy5ZIU?`O$h| za~Le{Jgyd_Yr#;rZD*fy*1~0?VZ4l@63;vypZUx&z7)h7R|pxYjO5shOb!{Ew%xeC z6SU*>(i#*O|1*sdu#h~NVOM+DpDliREwi|Zlv0#yvlO5qz%EK_Q@#PviHJ7KNTvIxP{CrC%muL|EYf*z2cJ=o`%K>L9+v zirpN!c@gl^ZT#2tpB-Y(zn!b)aGnlF=->dG0dm9^b7Aoq6It-2f<9)~a@lV&q^^5H z#B~m$14b?QRuSXTyPI;T8YfNL4N;1TvuO4`xZ<9EKUSF^| z<#|kyyMvk0t=^12OA~bNAxX`Vj;G9e-AXLdi*M0Dz^6iG`Be)5hE)W0K0J!=ULU4C z&NfLDKBf^7Q=vp|h%`1l&v3299+Fv-KN2E;@x#r*t919_SUHs>2J0yCTeVrcNNPMw zTv!bNNzTccxB9rUvO*%s`pW5a%WS;nDze_2CkTB;+Elhc*RnDQIq7^Adv%>)In zta;@te$g4AXHZ_?i2VxBA*66*biPBgE1jl4Q<54zI;o4mC@-@NuZal&R?Y)X&1p_h z#U?D|CC<6r&6kWk!|5*Vqi8d-cdhaxx&7HoWnYK-LwJ`gGp}SZ8#2O=yoa(bL2U zHTG~29N*i{EV|+Y8=yf*1N?PlggPmFhc4{#vz*wK?gus8KYOZ8LJR__kUW%m`MjD{ zO301VOy^|`#~{BoFBN7$z|$96Fe4;R_JtQl)gnuNS@kmFY}97$jqOV7SAEBU946;Z zCO4^YW3SEE-G9qpULOl5^Yvof-eTH~Uxb!-SoXZrzq~7%)BCr|l9z|wWc&qIZZ21H zs%I*`~J+sxLPixA#%bbrhahA#nnYOsE8iKpN zSoyoQg%Z#`0k=*Q;S|LnSZ_yECV{uLQSk4Z<{f!5j|_Nu!r{Zij$X!#49d5Z%Sj@1 zuRfu-`$^!<(!^27i1IP9@_wGgK6y!^j>d#T@%P8XHv5Q@SX4b`=fu>6?P580W=6)e z)yL#odC7eq;iCmxi�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ⅆ62cp0Fu#X9<_9f(v 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 Vz%w$txE%n06rZWdSIC-${vV}2TrL0r literal 59762 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 From b9bbdeb10e6465ecc08e0c302064d8a4d98ec686 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Apr 2016 14:56:27 -0400 Subject: [PATCH 055/265] Var not needed anymore --- code/game/gamemodes/cult/runes.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 531d5a3b8f4..881c869c2b9 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -203,7 +203,7 @@ structure_check() searches for nearby cultist structures required for the invoca if(!do_after(user, 100, target = get_turf(user))) rune_in_use = 0 return - var/obj/item/weapon/paper/talisman/TA = new talisman_type(get_turf(src)) + new talisman_type(get_turf(src)) visible_message("[src] glows with power, and bloody images form themselves on [paper_to_imbue].") qdel(paper_to_imbue) rune_in_use = 0 From 363700e346dae0351f946fb460f296630b884185 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Apr 2016 16:10:33 -0400 Subject: [PATCH 056/265] Talisman of Shackling --- code/game/gamemodes/cult/talisman.dm | 41 ++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index a6b00a77cea..9b578735f19 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -310,3 +310,44 @@ if(iscultist(user)) user << "This talisman will only work on a stack of metal sheets!" log_game("Construct talisman failed - not a valid target") + +//Talisman of Shackling: Applies special cuffs directly from the talisman +/obj/item/weapon/paper/talisman/shackle + cultist_name = "Talisman of Shackling" + cultist_desc = "Use this talisman on a victim to handcuff them with dark bindings." + invocation = "In'totum Lig'abis!" + color = "#B27300" // burnt-orange + uses = 4 + +/obj/item/weapon/paper/talisman/shackle/attack(mob/living/target, mob/living/user) + if(iscultist(user)) + if(isrobot(target)) + ..() + return + if(!isliving(target)) + user.visible_message("This talisman's magic does not affect the dead!") + return + var/mob/living/L = target + if(ishuman(L)) + CuffAttack(L,user) + +/obj/item/weapon/paper/talisman/shackle/proc/CuffAttack(mob/living/L,mob/living/user) + if(!iscarbon(L)) + return + var/mob/living/carbon/C = L + if(!C.handcuffed) + playsound(loc, 'sound/weapons/cablecuff.ogg', 30, 1, -2) + C.visible_message("[user] begins restraining [C] with [src]!", \ + "[user] begins shaping an dark magic around your wrists!") + if(do_mob(user, C, 30)) + if(!C.handcuffed) + C.handcuffed = new /obj/item/weapon/restraints/handcuffs/energy/used(C) + C.update_handcuffed() + user << "You shackle [C]." + add_logs(user, C, "handcuffed") + else + user << "You fail to handcuff [C]." + return + + + From 3e7a096ab043739c573694c07eb7cacd94d633b8 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Apr 2016 16:34:56 -0400 Subject: [PATCH 057/265] Adds "successful use" param, add invoke to stun/shackle --- code/game/gamemodes/cult/talisman.dm | 50 ++++++++++++++++++---------- 1 file changed, 32 insertions(+), 18 deletions(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 9b578735f19..83ec11c3bce 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -25,10 +25,14 @@ user.drop_item() qdel(src) -/obj/item/weapon/paper/talisman/proc/invoke(mob/living/user) - if(health_cost && iscarbon(user)) - var/mob/living/carbon/C = user - C.apply_damage(health_cost, BRUTE, pick("l_arm", "r_arm")) + /obj/item/weapon/paper/talisman/proc/invoke(mob/living/user, successfuluse = 1) + . = successfuluse + if(successfuluse) //if the calling whatever says we succeed, do the fancy stuff + if(invocation) + user.whisper(invocation) + if(health_cost && iscarbon(user)) + var/mob/living/carbon/C = user + C.apply_damage(health_cost, BRUTE, pick("l_arm", "r_arm")) //Malformed Talisman: If something goes wrong. /obj/item/weapon/paper/talisman/malformed @@ -36,7 +40,7 @@ cultist_desc = "A talisman with gibberish scrawlings. No good can come from invoking this." invocation = "Ra'sha yoka!" -/obj/item/weapon/paper/talisman/malformed/invoke(mob/living/user) +/obj/item/weapon/paper/talisman/malformed/invoke(mob/living/user, successfuluse = 1) user << "You feel a pain in your head. The Geometer is displeased." if(iscarbon(user)) var/mob/living/carbon/C = user @@ -49,7 +53,7 @@ invocation = null uses = 3 -/obj/item/weapon/paper/talisman/supply/invoke(mob/living/user) +/obj/item/weapon/paper/talisman/supply/invoke(mob/living/user, successfuluse = 1) var/dat = "There are [uses] bloody runes on the parchment.
" dat += "Please choose the chant to be imbued into the fabric of reality.
" dat += "
" @@ -95,9 +99,6 @@ C.drop_item() visible_message("[src] crumbles to dust.") qdel(src) - return - else - return //Rite of Translocation: Same as rune /obj/item/weapon/paper/talisman/teleport @@ -148,7 +149,7 @@ invocation = "N'ath reth sh'yro eth d'raggathnor!" health_cost = 1 -/obj/item/weapon/paper/talisman/summon_tome/invoke(mob/living/user) +/obj/item/weapon/paper/talisman/summon_tome/invoke(mob/living/user, successfuluse = 1) user.visible_message("[user]'s hand glows red for a moment.", \ "You speak the words of the talisman!") new /obj/item/weapon/tome(get_turf(user)) @@ -190,7 +191,7 @@ color = "#ff80d5" // honk invocation = "By'o nar'nar!" -/obj/item/weapon/paper/talisman/make_runes_fake/invoke(mob/living/user) +/obj/item/weapon/paper/talisman/make_runes_fake/invoke(mob/living/user, successfuluse = 1) user.visible_message("Dust flows from [user]s hand.", \ "You speak the words of the talisman, making nearby runes appear fake.") for(var/obj/effect/rune/R in orange(6,user)) @@ -204,7 +205,7 @@ invocation = "Ta'gh fara'qha fel d'amar det!" health_cost = 5 -/obj/item/weapon/paper/talisman/emp/invoke(mob/living/user) +/obj/item/weapon/paper/talisman/emp/invoke(mob/living/user, successfuluse = 1) user.visible_message("[user]'s hand flashes a bright blue!", \ "You speak the words of the talisman, emitting an EMP blast.") empulse(src, 4, 8) @@ -217,15 +218,18 @@ invocation = "Fuu ma'jin!" health_cost = 10 -/obj/item/weapon/paper/talisman/stun/attack_self(mob/living/user) +/obj/item/weapon/paper/talisman/stun/invoke(mob/living/user, successfuluse = 0) + if(successfuluse) //if we're forced to be successful(we normally aren't) then do the normal stuff + return ..() if(iscultist(user)) user << "To use this talisman, attack the target directly." else user << "There are indecipherable images scrawled on the paper in what looks to be... blood?" - -/obj/item/weapon/paper/talisman/stun/attack(mob/living/target, mob/living/user) + return 0 + +/obj/item/weapon/paper/talisman/stun/attack(mob/living/target, mob/living/user, successfuluse = 1) if(iscultist(user)) - user.whisper(invocation) + invoke(user, 1) user.visible_message("[user] holds up [src], which explodes in a flash of red light!", \ "You stun [target] with the talisman!") var/obj/item/weapon/nullrod/N = locate() in target @@ -257,7 +261,7 @@ color = "#33cc33" // green invocation = "N'ath reth sh'yro eth draggathnor!" -/obj/item/weapon/paper/talisman/armor/invoke(mob/living/user) +/obj/item/weapon/paper/talisman/armor/invoke(mob/living/user, successfuluse = 1) . = ..() user.visible_message("Otherworldly armor suddenly appears on [user]!", \ "You speak the words of the talisman, arming yourself!") @@ -319,6 +323,15 @@ color = "#B27300" // burnt-orange uses = 4 +/obj/item/weapon/paper/talisman/stun/invoke(mob/living/user, successfuluse = 0) + if(successfuluse) //if we're forced to be successful(we normally aren't) then do the normal stuff + return ..() + if(iscultist(user)) + user << "To use this talisman, attack the target directly." + else + user << "There are indecipherable images scrawled on the paper in what looks to be... blood?" + return 0 + /obj/item/weapon/paper/talisman/shackle/attack(mob/living/target, mob/living/user) if(iscultist(user)) if(isrobot(target)) @@ -329,6 +342,7 @@ return var/mob/living/L = target if(ishuman(L)) + invoke(user, 1) CuffAttack(L,user) /obj/item/weapon/paper/talisman/shackle/proc/CuffAttack(mob/living/L,mob/living/user) @@ -337,7 +351,7 @@ var/mob/living/carbon/C = L if(!C.handcuffed) playsound(loc, 'sound/weapons/cablecuff.ogg', 30, 1, -2) - C.visible_message("[user] begins restraining [C] with [src]!", \ + C.visible_message("[user] begins shackling [C] with dark magic!", \ "[user] begins shaping an dark magic around your wrists!") if(do_mob(user, C, 30)) if(!C.handcuffed) From ecbf0636856f893c5e04de29fbed78549b003395 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Apr 2016 18:17:07 -0400 Subject: [PATCH 058/265] Shackle and other Talisman fixes --- code/game/gamemodes/cult/talisman.dm | 48 ++++++++++++++++++---------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 83ec11c3bce..3181569a320 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -17,10 +17,9 @@ if(!iscultist(user)) user << "There are indecipherable images scrawled on the paper in what looks to be... blood?" return - if(invocation) + if(invoke(user)) user.whisper(invocation) - src.invoke(user) - uses-- + uses-- if(uses <= 0) user.drop_item() qdel(src) @@ -66,8 +65,7 @@ var/datum/browser/popup = new(user, "talisman", "", 400, 400) popup.set_content(dat) popup.open() - uses++ //To prevent uses being consumed just by opening it - return 1 + return 0 /obj/item/weapon/paper/talisman/supply/Topic(href, href_list) if(src) @@ -150,6 +148,7 @@ health_cost = 1 /obj/item/weapon/paper/talisman/summon_tome/invoke(mob/living/user, successfuluse = 1) + . = ..() user.visible_message("[user]'s hand glows red for a moment.", \ "You speak the words of the talisman!") new /obj/item/weapon/tome(get_turf(user)) @@ -192,6 +191,7 @@ invocation = "By'o nar'nar!" /obj/item/weapon/paper/talisman/make_runes_fake/invoke(mob/living/user, successfuluse = 1) + . = ..() user.visible_message("Dust flows from [user]s hand.", \ "You speak the words of the talisman, making nearby runes appear fake.") for(var/obj/effect/rune/R in orange(6,user)) @@ -314,6 +314,23 @@ if(iscultist(user)) user << "This talisman will only work on a stack of metal sheets!" log_game("Construct talisman failed - not a valid target") + +/obj/item/weapon/restraints/handcuffs/energy/cult //For the talisman of shackling + name = "cultist shackles" + desc = "shackles that bind the wrists with sinister magic." + trashtype = /obj/item/weapon/restraints/handcuffs/energy/used + origin_tech = "materials=2;magnets=5" + +/obj/item/weapon/restraints/handcuffs/energy/cult/used + desc = "magical remnants" + +/obj/item/weapon/restraints/handcuffs/energy/cult/used/dropped(mob/user) + user.visible_message("[user]'s [src] shatter in a discharge of dark magic!", \ + "[user]'s [src] shatters in a discharge of dark magic!") + var/datum/effect_system/spark_spread/S = new + S.set_up(4,0,user.loc) + S.start() + qdel(src) //Talisman of Shackling: Applies special cuffs directly from the talisman /obj/item/weapon/paper/talisman/shackle @@ -323,7 +340,7 @@ color = "#B27300" // burnt-orange uses = 4 -/obj/item/weapon/paper/talisman/stun/invoke(mob/living/user, successfuluse = 0) +/obj/item/weapon/paper/talisman/shackle/invoke(mob/living/user, successfuluse = 0) if(successfuluse) //if we're forced to be successful(we normally aren't) then do the normal stuff return ..() if(iscultist(user)) @@ -337,30 +354,29 @@ if(isrobot(target)) ..() return - if(!isliving(target)) + if(target.stat == DEAD) user.visible_message("This talisman's magic does not affect the dead!") return - var/mob/living/L = target - if(ishuman(L)) + var/mob/living/carbon/C = target + if(ishuman(C)) invoke(user, 1) - CuffAttack(L,user) + CuffAttack(C,user) -/obj/item/weapon/paper/talisman/shackle/proc/CuffAttack(mob/living/L,mob/living/user) - if(!iscarbon(L)) +/obj/item/weapon/paper/talisman/shackle/proc/CuffAttack(mob/living/C,mob/living/user) + if(!istype(C)) return - var/mob/living/carbon/C = L if(!C.handcuffed) playsound(loc, 'sound/weapons/cablecuff.ogg', 30, 1, -2) C.visible_message("[user] begins shackling [C] with dark magic!", \ "[user] begins shaping an dark magic around your wrists!") if(do_mob(user, C, 30)) if(!C.handcuffed) - C.handcuffed = new /obj/item/weapon/restraints/handcuffs/energy/used(C) - C.update_handcuffed() + var/obj/item/weapon/restraints/handcuffs/energy/cult/used/Z = new /obj/item/weapon/restraints/handcuffs/energy/cult/used(C) + Z.apply_cuffs(C, user)) user << "You shackle [C]." add_logs(user, C, "handcuffed") else - user << "You fail to handcuff [C]." + user << "You fail to shackle [C]." return From d807fdd5d446e59ae743fc5bd4566aaa08e97d32 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Apr 2016 20:47:18 -0400 Subject: [PATCH 059/265] 8 errors from 1 rogue parenthesis, nice --- code/game/gamemodes/cult/talisman.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 3181569a320..fa546517d45 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -372,7 +372,7 @@ if(do_mob(user, C, 30)) if(!C.handcuffed) var/obj/item/weapon/restraints/handcuffs/energy/cult/used/Z = new /obj/item/weapon/restraints/handcuffs/energy/cult/used(C) - Z.apply_cuffs(C, user)) + Z.apply_cuffs(C, user) user << "You shackle [C]." add_logs(user, C, "handcuffed") else From 4d998af43a811758234d3b6983d8694c3f35178f Mon Sep 17 00:00:00 2001 From: c0 Date: Sun, 17 Apr 2016 04:40:06 +0300 Subject: [PATCH 060/265] Changes to Stocks UI, Cargo fixes --- .../LavaRuins/lavaland_surface_greed.dmm | 2 +- _maps/RandomZLevels/wildwest.dmm | 4 +- code/game/objects/items/documents.dm | 3 + .../awaymissions/mission_code/Academy.dm | 2 +- code/modules/cargo/exports/intel.dm | 6 + code/modules/cargo/packs.dm | 2 +- code/modules/mining/mint.dm | 4 +- code/modules/mining/money_bag.dm | 108 ++-------------- code/modules/shuttle/supply.dm | 4 +- code/modules/stock_market/computer.dm | 121 +++++++++++------- 10 files changed, 104 insertions(+), 152 deletions(-) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_greed.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_greed.dmm index 0026df56155..542e27d84dc 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_greed.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_greed.dmm @@ -12,7 +12,7 @@ "l" = (/obj/item/weapon/coin/gold,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) "m" = (/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) "n" = (/obj/structure/table/wood/poker,/obj/item/stack/spacecash/c1000,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"o" = (/obj/item/weapon/moneybag,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"o" = (/obj/item/weapon/storage/bag/money,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) "p" = (/obj/structure/table/wood/poker,/obj/item/weapon/ore/gold,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) "q" = (/obj/structure/table/wood/poker,/obj/item/stack/spacecash/c20,/obj/item/stack/spacecash/c50,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) "r" = (/obj/structure/table/wood/poker,/obj/item/stack/spacecash/c500,/obj/item/stack/spacecash/c100,/obj/item/stack/spacecash/c1000,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) diff --git a/_maps/RandomZLevels/wildwest.dmm b/_maps/RandomZLevels/wildwest.dmm index 9490d78d6ac..80e50732d6f 100644 --- a/_maps/RandomZLevels/wildwest.dmm +++ b/_maps/RandomZLevels/wildwest.dmm @@ -113,7 +113,7 @@ "cl" = (/obj/structure/chair/stool,/turf/open/floor/wood,/area/awaymission/wwmines) "cm" = (/obj/structure/bookcase{icon_state = "book-5"},/turf/open/floor/wood,/area/awaymission/wwgov) "cn" = (/turf/open/floor/wood,/area/awaymission/wwgov) -"co" = (/obj/item/weapon/moneybag,/turf/open/floor/wood,/area/awaymission/wwgov) +"co" = (/obj/item/weapon/storage/bag/money,/turf/open/floor/wood,/area/awaymission/wwgov) "cp" = (/obj/structure/closet/secure_closet/freezer/kitchen,/turf/open/floor/plasteel{icon_state = "stage_bleft"},/area/awaymission/wwgov) "cq" = (/obj/structure/table/wood,/turf/open/floor/plasteel{icon_state = "stage_bleft"},/area/awaymission/wwgov) "cr" = (/obj/structure/table/wood,/obj/machinery/microwave,/turf/open/floor/plasteel{icon_state = "stage_bleft"},/area/awaymission/wwgov) @@ -122,7 +122,7 @@ "cu" = (/obj/structure/lattice,/obj/structure/lattice,/turf/open/space,/area/space) "cv" = (/obj/effect/decal/cleanable/blood/splatter,/turf/open/floor/carpet,/area/awaymission/wwmines) "cw" = (/turf/open/floor/carpet,/area/awaymission/wwgov) -"cx" = (/obj/item/weapon/moneybag,/turf/open/floor/carpet,/area/awaymission/wwgov) +"cx" = (/obj/item/weapon/storage/bag/money,/turf/open/floor/carpet,/area/awaymission/wwgov) "cy" = (/obj/structure/chair/wood/wings,/turf/open/floor/wood,/area/awaymission/wwgov) "cz" = (/turf/open/floor/plasteel{icon_state = "stage_bleft"},/area/awaymission/wwgov) "cA" = (/obj/effect/decal/cleanable/blood/splatter,/turf/open/floor/wood,/area/awaymission/wwmines) diff --git a/code/game/objects/items/documents.dm b/code/game/objects/items/documents.dm index e9b23a5f450..6746919dcff 100644 --- a/code/game/objects/items/documents.dm +++ b/code/game/objects/items/documents.dm @@ -37,6 +37,9 @@ ..() if(copy) copy_type = copy.type + if(istype(copy, /obj/item/documents/photocopy)) // Copy Of A Copy Of A Copy + var/obj/item/documents/photocopy/C = copy + copy_type = C.copy_type /obj/item/documents/photocopy/attackby(obj/item/O, mob/user, params) if(istype(O, /obj/item/toy/crayon/red) || istype(O, /obj/item/toy/crayon/blue)) diff --git a/code/modules/awaymissions/mission_code/Academy.dm b/code/modules/awaymissions/mission_code/Academy.dm index b098e08e510..5955709c1de 100644 --- a/code/modules/awaymissions/mission_code/Academy.dm +++ b/code/modules/awaymissions/mission_code/Academy.dm @@ -248,7 +248,7 @@ if(rand(0,1)) new /obj/item/stack/spacecash/c1000(T) else - var/obj/item/weapon/moneybag/M = new(T) + var/obj/item/weapon/storage/bag/money/M = new(T) for(var/i in 1 to rand(5,50)) new /obj/item/weapon/coin/gold(M) if(14) diff --git a/code/modules/cargo/exports/intel.dm b/code/modules/cargo/exports/intel.dm index 4989fb4e0cc..faba926cb60 100644 --- a/code/modules/cargo/exports/intel.dm +++ b/code/modules/cargo/exports/intel.dm @@ -7,6 +7,7 @@ message = "of enemy intelligence" var/global/originals_recieved = list() var/global/copies_recieved = list() + var/copy_path = null export_types = list(/obj/item/documents/syndicate) /datum/export/intel/applies_to(obj/O, contr = 0, emag = 0) @@ -23,6 +24,9 @@ return FALSE if((C.copy_type in originals_recieved) || (C.copy_type in copies_recieved)) return FALSE + if(copy_path && !ispath(C.copy_type, copy_path)) + return FALSE + else if(O.type in originals_recieved) return FALSE @@ -45,6 +49,7 @@ cost = 15000 // Allows double agents to earn some cargo points without failing their objectives. unit_name = "photocopied article" export_types = list(/obj/item/documents/photocopy) + copy_path = /obj/item/documents/syndicate @@ -58,6 +63,7 @@ cost = 15000 unit_name = "photocopied article" export_types = list(/obj/item/documents/photocopy) + copy_path = /obj/item/documents/nanotrasen // Selling Syndicate docs to Syndicate, why not? /datum/export/intel/syndie/recovered diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index 8fcbcff8bcc..be0eeeed081 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -3,7 +3,7 @@ var/group = "" var/hidden = FALSE var/contraband = FALSE - var/cost = 7 // Minimum cost, or infinite points are possible. + var/cost = 700 // Minimum cost, or infinite points are possible. var/access = FALSE var/list/contains = null var/crate_name = "crate" diff --git a/code/modules/mining/mint.dm b/code/modules/mining/mint.dm index a751094bf28..43e9954c1f1 100644 --- a/code/modules/mining/mint.dm +++ b/code/modules/mining/mint.dm @@ -212,8 +212,8 @@ var/turf/T = get_step(src,output_dir) if(T) var/obj/item/O = new P(src) - var/obj/item/weapon/moneybag/M = locate(/obj/item/weapon/moneybag, T) + var/obj/item/weapon/storage/bag/money/M = locate(/obj/item/weapon/storage/bag/money, T) if(!M) - M = new /obj/item/weapon/moneybag(src) + M = new /obj/item/weapon/storage/bag/money(src) unload_mineral(M) O.loc = M \ No newline at end of file diff --git a/code/modules/mining/money_bag.dm b/code/modules/mining/money_bag.dm index e1edd84927c..3f4449a8256 100644 --- a/code/modules/mining/money_bag.dm +++ b/code/modules/mining/money_bag.dm @@ -1,112 +1,20 @@ /*****************************Money bag********************************/ -/obj/item/weapon/moneybag - icon = 'icons/obj/storage.dmi' - name = "Money bag" +/obj/item/weapon/storage/bag/money + name = "money bag" icon_state = "moneybag" - flags = CONDUCT force = 10 throwforce = 0 - w_class = 4 burn_state = FLAMMABLE burntime = 20 - -/obj/item/weapon/moneybag/attack_hand(mob/user) - var/amt_gold = 0 - var/amt_silver = 0 - var/amt_diamond = 0 - var/amt_iron = 0 - var/amt_plasma = 0 - var/amt_uranium = 0 - var/amt_clown = 0 - var/amt_adamantine = 0 - - for (var/obj/item/weapon/coin/C in contents) - if (istype(C,/obj/item/weapon/coin/diamond)) - amt_diamond++; - if (istype(C,/obj/item/weapon/coin/plasma)) - amt_plasma++; - if (istype(C,/obj/item/weapon/coin/iron)) - amt_iron++; - if (istype(C,/obj/item/weapon/coin/silver)) - amt_silver++; - if (istype(C,/obj/item/weapon/coin/gold)) - amt_gold++; - if (istype(C,/obj/item/weapon/coin/uranium)) - amt_uranium++; - if (istype(C,/obj/item/weapon/coin/clown)) - amt_clown++; - if (istype(C,/obj/item/weapon/coin/adamantine)) - amt_adamantine++; - - var/dat = text("The contents of the moneybag reveal...
") - if (amt_gold) - dat += text("Gold coins: [amt_gold]
Remove one
") - if (amt_silver) - dat += text("Silver coins: [amt_silver] Remove one
") - if (amt_iron) - dat += text("Metal coins: [amt_iron] Remove one
") - if (amt_diamond) - dat += text("Diamond coins: [amt_diamond] Remove one
") - if (amt_plasma) - dat += text("Plasma coins: [amt_plasma] Remove one
") - if (amt_uranium) - dat += text("Uranium coins: [amt_uranium] Remove one
") - if (amt_clown) - dat += text("Bananium coins: [amt_clown] Remove one
") - if (amt_adamantine) - dat += text("Adamantine coins: [amt_adamantine] Remove one
") - user << browse("[dat]", "window=moneybag") - -/obj/item/weapon/moneybag/attackby(obj/item/weapon/W, mob/user, params) - ..() - if (istype(W, /obj/item/weapon/coin)) - var/obj/item/weapon/coin/C = W - if(!user.drop_item()) - return - user << "You add the [C.name] into the bag." - contents += C - if (istype(W, /obj/item/weapon/moneybag)) - var/obj/item/weapon/moneybag/C = W - for (var/obj/O in C.contents) - contents += O; - user << "You empty the [C.name] into the bag." - return - -/obj/item/weapon/moneybag/Topic(href, href_list) - if(..()) - return - usr.set_machine(src) - src.add_fingerprint(usr) - if(href_list["remove"]) - var/obj/item/weapon/coin/COIN - switch(href_list["remove"]) - if("gold") - COIN = locate(/obj/item/weapon/coin/gold,src.contents) - if("silver") - COIN = locate(/obj/item/weapon/coin/silver,src.contents) - if("iron") - COIN = locate(/obj/item/weapon/coin/iron,src.contents) - if("diamond") - COIN = locate(/obj/item/weapon/coin/diamond,src.contents) - if("plasma") - COIN = locate(/obj/item/weapon/coin/plasma,src.contents) - if("uranium") - COIN = locate(/obj/item/weapon/coin/uranium,src.contents) - if("clown") - COIN = locate(/obj/item/weapon/coin/clown,src.contents) - if("adamantine") - COIN = locate(/obj/item/weapon/coin/adamantine,src.contents) - if(!COIN) - return - COIN.loc = src.loc - return + w_class = 4 + max_w_class = 3 + storage_slots = 80 + max_combined_w_class = 40 + can_hold = list(/obj/item/weapon/coin, /obj/item/stack/spacecash) - -/obj/item/weapon/moneybag/vault - -/obj/item/weapon/moneybag/vault/New() +/obj/item/weapon/storage/bag/money/vault/New() ..() new /obj/item/weapon/coin/silver(src) new /obj/item/weapon/coin/silver(src) diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index 306bf6aebc1..76bb9ec82ea 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -1,7 +1,7 @@ /obj/docking_port/mobile/supply name = "supply shuttle" id = "supply" - callTime = 10 + callTime = 1200 dir = 8 travelDir = 90 @@ -27,7 +27,7 @@ var/list/storage_objects = list( /obj/structure/closet, /obj/item/weapon/storage, - /obj/item/weapon/moneybag, + /obj/item/weapon/storage/bag/money, /obj/item/weapon/folder, // Selling a folder of stamped manifests? Sure, why not! /obj/structure/filingcabinet, /obj/structure/ore_box, diff --git a/code/modules/stock_market/computer.dm b/code/modules/stock_market/computer.dm index 90f0c54d51b..1fc2a0a10fa 100644 --- a/code/modules/stock_market/computer.dm +++ b/code/modules/stock_market/computer.dm @@ -5,7 +5,7 @@ icon_screen = "stock_computer" icon_keyboard = "no_keyboard" var/logged_in = "Cargo Department" - var/vmode = 0 + var/vmode = 1 /obj/machinery/computer/stockexchange/New() ..() @@ -22,35 +22,47 @@ user.machine = src var/css={""} - var/dat = "[station_name()] Stock Exchange[css]

Stock Exchange

" - dat += "This is a work in progress. Certain features may not be available.
" + var/dat = "[station_name()] Stock Exchange[css]" - dat += "Welcome, [logged_in]
Cargo Points: [balance()] points
" + dat += "Welcome, [logged_in]
Credits: [balance()]
" for (var/datum/stock/S in stockExchange.last_read) var/list/LR = stockExchange.last_read[S] if (!(logged_in in LR)) LR[logged_in] = 0 - dat += "View mode: [vmode ? "compact" : "full"]" - dat += "Stock Transaction Log: Check" + dat += "View mode: [vmode ? "Compact" : "Full"] " + dat += "Stock Transaction Log: Check
" + + dat += "This is a work in progress. Certain features may not be available." + dat += "

Listed stocks

" if (vmode == 0) @@ -105,15 +117,40 @@ a.updated { dat += "View news archives[news ? " (updated)" : null]" else if (vmode == 1) dat += "Actions: + Buy, - Sell, (A)rchives, (H)istory

" - dat += "" + dat += "
 NameValueOwned/AvailActions
" + dat += "" + for (var/datum/stock/S in stockExchange.stocks) var/mystocks = 0 if (logged_in && (logged_in in S.shareholders)) mystocks = S.shareholders[logged_in] - dat += "" + + if(S.bankrupt) + dat += "" + else + dat += "" + + if(S.disp_value_change > 0) + dat += "" + else if(S.disp_value_change < 0) + dat += "" + else + dat += "" + + dat += "" + dat += "" + + if(!S.bankrupt) + dat += "" + else + dat += "" + + if(mystocks) + dat += "" + else + dat += "" + + dat += "" var/news = 0 if (logged_in) var/list/LR = stockExchange.last_read[S] @@ -129,12 +166,17 @@ a.updated { break dat += "" + dat += "(A)(H)" + + dat += "" + + dat += "
 IDNameValueOwnedAvailActions
[S.disp_value_change > 0 ? "+" : (S.disp_value_change < 0 ? "-" : "=")][S.name] " - if (S.bankrupt) - dat += "B" - dat += " ([S.short_name])[S.current_value][mystocks]/[S.available_shares]
+-=[S.short_name][S.name][S.current_value]0[mystocks]0[S.available_shares]" if (S.bankrupt) - dat += "+ - " + dat += "+ - " else dat += "+ - " - dat += "(A) (H)
" + dat += "" - var/datum/browser/popup = new(user, "computer", "Stock Exchange", 600, 400) + var/datum/browser/popup = new(user, "computer", "Stock Exchange", 600, 600) popup.set_content(dat) popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) popup.open() @@ -153,27 +195,25 @@ a.updated { user << "This account does not own any shares of [S.name]!" return var/price = S.current_value - var/amt = round(input(user, "How many shares? (Have: [avail], unit price: [price])", "Sell shares in [S.name]", 0) as num|null) - if (!user) + var/amt = round(input(user, "How many shares? \n(Have: [avail], unit price: [price])", "Sell shares in [S.name]", 0) as num|null) + amt = min(amt, S.shareholders[logged_in]) + + if (!user || !(user in range(1, src))) return if (!amt) return - if (!(user in range(1, src))) - return if (li != logged_in) return b = SSshuttle.points if (!isnum(b)) user << "No active account on the console!" return - if (amt > S.shareholders[logged_in]) - user << "You do not own that many shares!" - return + var/total = amt * S.current_value if (!S.sellShares(logged_in, amt)) user << "Could not complete transaction." return - user << "Sold [amt] shares of [S.name] at [S.current_value] a share for [total] points." + user << "Sold [amt] shares of [S.name] at [S.current_value] a share for [total] credits." stockExchange.add_log(/datum/stock_log/sell, user.name, S.name, amt, S.current_value, total) /obj/machinery/computer/stockexchange/proc/buy_some_shares(var/datum/stock/S, var/mob/user) @@ -190,12 +230,8 @@ a.updated { var/avail = S.available_shares var/price = S.current_value var/canbuy = round(b / price) - var/amt = round(input(user, "How many shares? (Available: [avail], unit price: [price], can buy: [canbuy])", "Buy shares in [S.name]", 0) as num|null) - if (!user) - return - if (!amt) - return - if (!(user in range(1, src))) + var/amt = round(input(user, "How many shares? \n(Available: [avail], unit price: [price], can buy: [canbuy])", "Buy shares in [S.name]", 0) as num|null) + if (!user || !(user in range(1, src))) return if (li != logged_in) return @@ -203,17 +239,16 @@ a.updated { if (!isnum(b)) user << "No active account on the console!" return - if (amt > S.available_shares) - user << "That many shares are not available!" - return - var/total = amt * S.current_value - if (total > b) - user << "Insufficient points." + + amt = min(amt, S.available_shares, round(b / S.current_value)) + if (!amt) return if (!S.buyShares(logged_in, amt)) user << "<Could not complete transaction." return - user << "Bought [amt] shares of [S.name] at [S.current_value] a share for [total] points." + + var/total = amt * S.current_value + user << "Bought [amt] shares of [S.name] at [S.current_value] a share for [total] credits." stockExchange.add_log(/datum/stock_log/buy, user.name, S.name, amt, S.current_value, total) /obj/machinery/computer/stockexchange/proc/do_borrowing_deal(var/datum/borrow/B, var/mob/user) @@ -261,7 +296,7 @@ a.updated { dat += "[L.time] | [L.user_name] bought [L.stocks] stocks at [L.shareprice] a share for [L.money] total credits in [L.company_name].
" continue if(istype(L, /datum/stock_log/sell)) - dat += "[L.time] | [L.user_name] sold [L.stocks] stocks at [L.shareprice] a share for [L.money] totalcredits from [L.company_name].
" + dat += "[L.time] | [L.user_name] sold [L.stocks] stocks at [L.shareprice] a share for [L.money] total credits from [L.company_name].
" continue if(istype(L, /datum/stock_log/borrow)) dat += "[L.time] | [L.user_name] borrowed [L.stocks] stocks with a deposit of [L.money] credits in [L.company_name].
" From bd52f083e0248c4e35aa17955a083d19701c3dcf Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 16 Apr 2016 23:24:35 -0400 Subject: [PATCH 061/265] ROGUE SPACE PLZ BAN --- code/game/gamemodes/cult/talisman.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index fa546517d45..7b6eab049bd 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -24,7 +24,7 @@ user.drop_item() qdel(src) - /obj/item/weapon/paper/talisman/proc/invoke(mob/living/user, successfuluse = 1) +/obj/item/weapon/paper/talisman/proc/invoke(mob/living/user, successfuluse = 1) . = successfuluse if(successfuluse) //if the calling whatever says we succeed, do the fancy stuff if(invocation) From ceb8d1c2752c4b45812622a5b350704f68204b84 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 17 Apr 2016 00:47:24 -0400 Subject: [PATCH 062/265] May the power of Christ compile you --- code/game/gamemodes/cult/talisman.dm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 7b6eab049bd..81d8378c706 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -357,14 +357,15 @@ if(target.stat == DEAD) user.visible_message("This talisman's magic does not affect the dead!") return - var/mob/living/carbon/C = target - if(ishuman(C)) + var/mob/living/L = target + if(ishuman(L)) invoke(user, 1) - CuffAttack(C,user) + CuffAttack(L,user) /obj/item/weapon/paper/talisman/shackle/proc/CuffAttack(mob/living/C,mob/living/user) - if(!istype(C)) + if(!iscarbon(L)) return + var/mob/living/carbon/C = L if(!C.handcuffed) playsound(loc, 'sound/weapons/cablecuff.ogg', 30, 1, -2) C.visible_message("[user] begins shackling [C] with dark magic!", \ From 3930b660912211b9abea60bc651f1c5144fa8d72 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 17 Apr 2016 01:51:14 -0400 Subject: [PATCH 063/265] Sigh --- code/game/gamemodes/cult/talisman.dm | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 81d8378c706..31523a798e3 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -354,31 +354,27 @@ if(isrobot(target)) ..() return - if(target.stat == DEAD) + if(!isliving(target)) user.visible_message("This talisman's magic does not affect the dead!") return var/mob/living/L = target if(ishuman(L)) - invoke(user, 1) CuffAttack(L,user) - -/obj/item/weapon/paper/talisman/shackle/proc/CuffAttack(mob/living/C,mob/living/user) + +/obj/item/weapon/paper/talisman/shackle/proc/CuffAttack(mob/living/L,mob/living/user) if(!iscarbon(L)) return - var/mob/living/carbon/C = L + var/mob/living/carbon/C = L if(!C.handcuffed) playsound(loc, 'sound/weapons/cablecuff.ogg', 30, 1, -2) - C.visible_message("[user] begins shackling [C] with dark magic!", \ + C.visible_message("[user] begins restraining [C] with [src]!", \ "[user] begins shaping an dark magic around your wrists!") if(do_mob(user, C, 30)) if(!C.handcuffed) - var/obj/item/weapon/restraints/handcuffs/energy/cult/used/Z = new /obj/item/weapon/restraints/handcuffs/energy/cult/used(C) - Z.apply_cuffs(C, user) + C.handcuffed = new /obj/item/weapon/restraints/handcuffs/energy/cult/used(C) + C.update_handcuffed() user << "You shackle [C]." add_logs(user, C, "handcuffed") else - user << "You fail to shackle [C]." + user << "You fail to shackle [C]." return - - - From 01ea7ea7cc1cc5a9c449acfc67000743d781adf5 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 17 Apr 2016 12:43:36 -0400 Subject: [PATCH 064/265] EMP Scaling Buff --- code/game/gamemodes/cult/runes.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 881c869c2b9..3651ca3d30c 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -604,7 +604,7 @@ structure_check() searches for nearby cultist structures required for the invoca C << "You feel a minute vibration pass through you!" playsound(E, 'sound/items/Welder2.ogg', 25, 1) qdel(src) //delete before pulsing because it's a delay reee - empulse(E, 7*emp_strength, 10*emp_strength) // Scales now, from a single room to around half the station depending on # of chanters + empulse(E, 9*emp_strength, 12*emp_strength) // Scales now, from a single room to around half the station depending on # of chanters //Rite of Astral Communion: Separates one's spirit from their body. They will take damage while it is active. /obj/effect/rune/astral From 82518cfa4a33a1518c3f40f987819ce28a9acd85 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 17 Apr 2016 12:50:33 -0400 Subject: [PATCH 065/265] Fixes wording, invokes shackling --- code/game/gamemodes/cult/talisman.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 31523a798e3..ff15480f430 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -271,7 +271,7 @@ user.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/cultpack(user), slot_back) user.drop_item() user.put_in_hands(new /obj/item/weapon/melee/cultblade(user)) - user.put_in_hands(new /obj/item/weapon/restraints/legcuffs/bola/tactical(user)) + user.put_in_hands(new /obj/item/weapon/restraints/legcuffs/bola/cult(user)) /obj/item/weapon/paper/talisman/armor/attack(mob/living/target, mob/living/user) if(iscultist(user) && iscultist(target)) @@ -351,6 +351,7 @@ /obj/item/weapon/paper/talisman/shackle/attack(mob/living/target, mob/living/user) if(iscultist(user)) + invoke(user, 1) if(isrobot(target)) ..() return @@ -367,7 +368,7 @@ var/mob/living/carbon/C = L if(!C.handcuffed) playsound(loc, 'sound/weapons/cablecuff.ogg', 30, 1, -2) - C.visible_message("[user] begins restraining [C] with [src]!", \ + C.visible_message("[user] begins restraining [C] with dark magic!", \ "[user] begins shaping an dark magic around your wrists!") if(do_mob(user, C, 30)) if(!C.handcuffed) From c74878d27d34744c8b8ae22cab1b90767a093de0 Mon Sep 17 00:00:00 2001 From: c0 Date: Mon, 18 Apr 2016 10:05:43 +0300 Subject: [PATCH 066/265] Adds a new derelict to space ruins --- _maps/RandomRuins/SpaceRuins/_maplisting.txt | 3 +- _maps/RandomRuins/SpaceRuins/onehalf.dmm | 195 +++++++++++++++++++ code/game/objects/items/documents.dm | 3 + code/modules/paperwork/folders.dm | 6 + code/modules/ruins/ruin_areas.dm | 21 +- 5 files changed, 226 insertions(+), 2 deletions(-) create mode 100644 _maps/RandomRuins/SpaceRuins/onehalf.dmm diff --git a/_maps/RandomRuins/SpaceRuins/_maplisting.txt b/_maps/RandomRuins/SpaceRuins/_maplisting.txt index 52f6b525735..72681d304a3 100644 --- a/_maps/RandomRuins/SpaceRuins/_maplisting.txt +++ b/_maps/RandomRuins/SpaceRuins/_maplisting.txt @@ -22,4 +22,5 @@ _maps/RandomRuins/SpaceRuins/emptyshell.dmm _maps/RandomRuins/SpaceRuins/gasthelizards.dmm _maps/RandomRuins/SpaceRuins/intactemptyship.dmm _maps/RandomRuins/SpaceRuins/mechtransport.dmm -_maps/RandomRuins/SpaceRuins/turretedoutpost.dmm \ No newline at end of file +_maps/RandomRuins/SpaceRuins/turretedoutpost.dmm +_maps/RandomRuins/SpaceRuins/onehalf.dmm \ No newline at end of file diff --git a/_maps/RandomRuins/SpaceRuins/onehalf.dmm b/_maps/RandomRuins/SpaceRuins/onehalf.dmm new file mode 100644 index 00000000000..86d833370cb --- /dev/null +++ b/_maps/RandomRuins/SpaceRuins/onehalf.dmm @@ -0,0 +1,195 @@ +"aa" = (/turf/open/space,/area/space) +"ab" = (/obj/structure/lattice,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/open/space,/area/space) +"ac" = (/obj/structure/lattice,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/space,/area/space) +"ad" = (/obj/structure/lattice,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/space,/area/space) +"ae" = (/obj/structure/lattice,/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/open/space,/area/space) +"af" = (/obj/structure/lattice,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/open/space,/area/space) +"ag" = (/turf/closed/wall,/area/ruin/onehalf/dorms_med) +"ah" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/ruin/onehalf/dorms_med) +"ai" = (/obj/structure/lattice,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/space,/area/space) +"aj" = (/turf/open/floor/plating/airless,/area/ruin/onehalf/hallway) +"ak" = (/turf/closed/wall,/area/ruin/onehalf/hallway) +"al" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 4},/turf/open/floor/plasteel/white,/area/ruin/onehalf/dorms_med) +"am" = (/turf/open/floor/plasteel/white,/area/ruin/onehalf/dorms_med) +"an" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/toxin{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/firstaid/fire,/turf/open/floor/plasteel/white,/area/ruin/onehalf/dorms_med) +"ao" = (/obj/structure/bed,/obj/item/weapon/bedsheet/black,/turf/open/floor/plasteel,/area/ruin/onehalf/dorms_med) +"ap" = (/turf/open/floor/plasteel,/area/ruin/onehalf/dorms_med) +"aq" = (/obj/machinery/door/airlock/external,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plating,/area/ruin/onehalf/drone_bay) +"ar" = (/turf/closed/wall,/area/ruin/onehalf/drone_bay) +"as" = (/obj/machinery/door/poddoor{id = "onehalf_drone1ext"; name = "mining drone bay blast door"},/turf/open/floor/plating/airless{dir = 1; icon_state = "warnplate"},/area/ruin/onehalf/drone_bay) +"at" = (/obj/machinery/door/poddoor{id = "onehalf_drone2ext"; name = "mining drone bay blast door"},/turf/open/floor/plating/airless{dir = 1; icon_state = "warnplate"},/area/ruin/onehalf/drone_bay) +"au" = (/obj/machinery/door/poddoor/preopen{id = "onehalf_drone3ext"; name = "mining drone bay blast door"},/turf/open/floor/plating/airless{dir = 1; icon_state = "warnplate"},/area/ruin/onehalf/drone_bay) +"av" = (/obj/machinery/door/poddoor{id = "onehalf_drone4ext"; name = "mining drone bay blast door"},/turf/open/floor/plating/airless{dir = 1; icon_state = "warnplate"},/area/ruin/onehalf/drone_bay) +"aw" = (/obj/structure/lattice,/turf/open/space,/area/space) +"ax" = (/obj/structure/lattice,/turf/open/space,/area/ruin/onehalf/hallway) +"ay" = (/obj/structure/table_frame,/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/ruin/onehalf/hallway) +"az" = (/obj/machinery/washing_machine,/turf/open/floor/plasteel/airless,/area/ruin/onehalf/hallway) +"aA" = (/obj/item/roller,/turf/open/floor/plasteel/white,/area/ruin/onehalf/dorms_med) +"aB" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/table,/obj/item/weapon/storage/firstaid/brute{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/firstaid/regular,/turf/open/floor/plasteel/white,/area/ruin/onehalf/dorms_med) +"aC" = (/obj/machinery/light{dir = 8},/turf/open/floor/plasteel,/area/ruin/onehalf/dorms_med) +"aD" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light/small{dir = 8},/turf/open/floor/plating,/area/ruin/onehalf/drone_bay) +"aE" = (/obj/structure/disposalpipe/trunk,/turf/open/floor/plating/airless,/area/ruin/onehalf/drone_bay) +"aF" = (/obj/structure/disposalpipe/trunk,/obj/item/weapon/ore/diamond,/turf/open/floor/plating/airless,/area/ruin/onehalf/drone_bay) +"aG" = (/turf/open/floor/plating/airless{dir = 1; icon_state = "warnplate"},/area/ruin/onehalf/drone_bay) +"aH" = (/obj/item/stack/rods,/turf/open/space,/area/ruin/onehalf/hallway) +"aI" = (/turf/open/floor/plating/airless{icon_state = "platingdmg3"},/area/ruin/onehalf/hallway) +"aJ" = (/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/ruin/onehalf/hallway) +"aK" = (/obj/machinery/iv_drip,/turf/open/floor/plasteel/white,/area/ruin/onehalf/dorms_med) +"aL" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/open/floor/plasteel/white,/area/ruin/onehalf/dorms_med) +"aM" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/closet/crate/medical,/obj/item/clothing/tie/stethoscope,/obj/item/device/healthanalyzer,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/machinery/power/apc{dir = 4; name = "Crew Quarters APC"; pixel_x = 26; pixel_y = 0},/turf/open/floor/plasteel/white,/area/ruin/onehalf/dorms_med) +"aN" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/poddoor{id = "onehalf_drone1int"; name = "mining drone bay blast door"},/turf/open/floor/plating,/area/ruin/onehalf/drone_bay) +"aO" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/poddoor{id = "onehalf_drone2int"; name = "mining drone bay blast door"},/turf/open/floor/plating,/area/ruin/onehalf/drone_bay) +"aP" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/poddoor{id = "onehalf_drone3int"; name = "mining drone bay blast door"},/turf/open/floor/plating,/area/ruin/onehalf/drone_bay) +"aQ" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/poddoor{id = "onehalf_drone4int"; name = "mining drone bay blast door"},/turf/open/floor/plating,/area/ruin/onehalf/drone_bay) +"aR" = (/obj/structure/disposaloutlet{dir = 1},/obj/structure/disposalpipe/trunk,/turf/open/floor/plating/airless,/area/ruin/onehalf/drone_bay) +"aS" = (/obj/structure/lattice,/obj/item/weapon/storage/toolbox/syndicate,/turf/open/space,/area/space) +"aT" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/ruin/onehalf/hallway) +"aU" = (/turf/open/floor/plasteel/airless{icon_state = "damaged1"},/area/ruin/onehalf/hallway) +"aV" = (/obj/machinery/door/airlock/glass_medical,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel/white,/area/ruin/onehalf/dorms_med) +"aW" = (/obj/machinery/door/airlock,/turf/open/floor/plasteel,/area/ruin/onehalf/dorms_med) +"aX" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel{dir = 9; icon_state = "warning"},/area/ruin/onehalf/drone_bay) +"aY" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{cell_type = 2500; dir = 1; name = "Mining Drone Bay APC"; pixel_y = 24},/turf/open/floor/plasteel{dir = 1; icon_state = "warning"},/area/ruin/onehalf/drone_bay) +"aZ" = (/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel{dir = 1; icon_state = "warning"},/area/ruin/onehalf/drone_bay) +"ba" = (/obj/machinery/button/door{id = "onehalf_drone2int"; name = "Drone 2 Internal Hatch Override"; pixel_x = 8; pixel_y = 27},/obj/machinery/button/door{id = "onehalf_drone2ext"; name = "Drone 2 External Hatch Override"; pixel_x = 8; pixel_y = 37},/obj/machinery/button/door{id = "onehalf_drone1int"; name = "Drone 1 Internal Hatch Override"; pixel_x = -8; pixel_y = 27},/obj/machinery/button/door{id = "onehalf_drone1ext"; name = "Drone 1 External Hatch Override"; pixel_x = -8; pixel_y = 37},/turf/open/floor/plasteel{dir = 1; icon_state = "warning"},/area/ruin/onehalf/drone_bay) +"bb" = (/turf/open/floor/plasteel{dir = 1; icon_state = "warning"},/area/ruin/onehalf/drone_bay) +"bc" = (/obj/machinery/button/door{id = "onehalf_drone3int"; name = "Drone 3 Internal Hatch Override"; pixel_x = -8; pixel_y = 27},/obj/machinery/button/door{id = "onehalf_drone3ext"; name = "Drone 3 External Hatch Override"; pixel_x = -8; pixel_y = 37},/obj/machinery/button/door{id = "onehalf_drone4ext"; name = "Drone 4 External Hatch Override"; pixel_x = 8; pixel_y = 37},/obj/machinery/button/door{id = "onehalf_drone4int"; name = "Drone 4 Internal Hatch Override"; pixel_x = 8; pixel_y = 27},/turf/open/floor/plasteel{dir = 1; icon_state = "warning"},/area/ruin/onehalf/drone_bay) +"bd" = (/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel{dir = 5; icon_state = "warning"},/area/ruin/onehalf/drone_bay) +"be" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/ruin/onehalf/drone_bay) +"bf" = (/obj/item/stack/sheet/metal,/turf/open/floor/plating/airless{broken = 1; icon_state = "platingdmg1"},/area/ruin/onehalf/hallway) +"bg" = (/obj/structure/disposalpipe/broken{tag = "icon-pipe-b (EAST)"; icon_state = "pipe-b"; dir = 4},/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/open/floor/plating/airless{broken = 1; icon_state = "platingdmg2"},/area/ruin/onehalf/hallway) +"bh" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/ruin/onehalf/hallway) +"bi" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/ruin/onehalf/hallway) +"bj" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless,/area/ruin/onehalf/hallway) +"bk" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-j1"; dir = 4},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless{icon_state = "damaged1"},/area/ruin/onehalf/hallway) +"bl" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/floor/plasteel/airless,/area/ruin/onehalf/hallway) +"bm" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-j1"; dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless,/area/ruin/onehalf/hallway) +"bn" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/glass,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel,/area/ruin/onehalf/drone_bay) +"bo" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/open/floor/plasteel,/area/ruin/onehalf/drone_bay) +"bp" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plasteel,/area/ruin/onehalf/drone_bay) +"bq" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel,/area/ruin/onehalf/drone_bay) +"br" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/maintenance_hatch,/turf/open/floor/plasteel,/area/ruin/onehalf/drone_bay) +"bs" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light/small{dir = 1},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/ruin/onehalf/drone_bay) +"bt" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-y"; dir = 1},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/ruin/onehalf/drone_bay) +"bu" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/disposal/bin,/turf/open/floor/plating,/area/ruin/onehalf/drone_bay) +"bv" = (/obj/structure/disposalpipe/broken{tag = "icon-pipe-b (EAST)"; icon_state = "pipe-b"; dir = 4},/turf/open/floor/plating/airless{icon_state = "platingdmg3"},/area/ruin/onehalf/hallway) +"bw" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/ruin/onehalf/hallway) +"bx" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plasteel/airless,/area/ruin/onehalf/hallway) +"by" = (/obj/structure/disposalpipe/segment,/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plasteel/airless{icon_state = "damaged1"},/area/ruin/onehalf/hallway) +"bz" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable,/obj/machinery/power/apc{dir = 2; name = "Hallway APC"; pixel_y = -24},/turf/open/floor/plasteel/airless,/area/ruin/onehalf/hallway) +"bA" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/ruin/onehalf/hallway) +"bB" = (/obj/structure/disposalpipe/segment,/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plasteel/airless,/area/ruin/onehalf/hallway) +"bC" = (/obj/machinery/door/airlock/glass,/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plasteel,/area/ruin/onehalf/drone_bay) +"bD" = (/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j1"},/turf/open/floor/plasteel,/area/ruin/onehalf/drone_bay) +"bE" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light,/turf/open/floor/plasteel,/area/ruin/onehalf/drone_bay) +"bF" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/open/floor/plasteel,/area/ruin/onehalf/drone_bay) +"bG" = (/turf/open/floor/plasteel,/area/ruin/onehalf/drone_bay) +"bH" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/ruin/onehalf/drone_bay) +"bI" = (/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/ruin/onehalf/drone_bay) +"bJ" = (/obj/structure/chair/office{tag = "icon-chair (EAST)"; icon_state = "chair"; dir = 4},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/ruin/onehalf/drone_bay) +"bK" = (/obj/structure/girder,/turf/open/floor/plating/airless,/area/ruin/onehalf/hallway) +"bL" = (/obj/structure/closet/emcloset,/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/ruin/onehalf/hallway) +"bM" = (/obj/machinery/vending/coffee,/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/ruin/onehalf/hallway) +"bN" = (/obj/machinery/vending/snack,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/ruin/onehalf/hallway) +"bO" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal/bin,/turf/open/floor/plasteel/airless,/area/ruin/onehalf/hallway) +"bP" = (/obj/structure/girder/reinforced,/obj/item/stack/sheet/plasteel,/turf/open/floor/plating/airless,/area/ruin/onehalf/hallway) +"bQ" = (/obj/structure/girder/reinforced,/turf/open/floor/plating/airless,/area/ruin/onehalf/hallway) +"bR" = (/turf/closed/wall/r_wall,/area/ruin/onehalf/hallway) +"bS" = (/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/ruin/onehalf/hallway) +"bT" = (/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel/airless,/area/ruin/onehalf/hallway) +"bU" = (/turf/closed/wall/r_wall,/area/ruin/onehalf/bridge) +"bV" = (/obj/item/stack/sheet/metal,/turf/open/space,/area/space) +"bW" = (/turf/open/floor/plating/airless{broken = 1; icon_state = "platingdmg1"},/area/ruin/onehalf/hallway) +"bX" = (/obj/structure/disposalpipe/segment,/obj/item/stack/rods,/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/ruin/onehalf/hallway) +"bY" = (/obj/structure/grille,/turf/open/floor/plating/airless,/area/ruin/onehalf/hallway) +"bZ" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/preopen{id = "bridge_onehalf"; name = "bridge blast door"},/turf/open/floor/plating,/area/ruin/onehalf/bridge) +"ca" = (/obj/structure/table/reinforced,/obj/item/device/flashlight/lamp,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cb" = (/obj/structure/table/reinforced,/obj/item/weapon/paper,/obj/item/weapon/pen,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cc" = (/obj/structure/closet/emcloset,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cd" = (/obj/machinery/light{dir = 1},/obj/structure/computerframe,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"ce" = (/obj/structure/computerframe,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cf" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{cell_type = 2500; dir = 1; name = "Bridge APC"; pixel_y = 24},/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cg" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/table/reinforced,/obj/item/stack/spacecash/c500{pixel_y = 8},/obj/item/stack/spacecash/c1000,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"ch" = (/obj/structure/girder/reinforced,/turf/open/floor/plating/airless,/area/space) +"ci" = (/obj/structure/disposalpipe/junction{tag = "icon-pipe-j1 (NORTH)"; icon_state = "pipe-j1"; dir = 1},/obj/item/weapon/shard,/turf/open/floor/plating/airless{broken = 1; icon_state = "platingdmg2"},/area/ruin/onehalf/hallway) +"cj" = (/obj/structure/lattice,/obj/structure/disposalpipe/broken{tag = "icon-pipe-b (EAST)"; icon_state = "pipe-b"; dir = 4},/obj/structure/disposalpipe/broken{tag = "icon-pipe-b (WEST)"; icon_state = "pipe-b"; dir = 8},/obj/item/stack/rods,/turf/open/space,/area/ruin/onehalf/hallway) +"ck" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 4},/obj/item/weapon/shard{icon_state = "small"},/turf/open/space,/area/space) +"cl" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/poddoor/preopen{id = "bridge_onehalf"; name = "bridge blast door"},/turf/open/floor/plating,/area/ruin/onehalf/bridge) +"cm" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{amount = 12},/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cn" = (/obj/structure/chair/office{dir = 8},/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"co" = (/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cp" = (/obj/structure/chair/office{tag = "icon-chair (NORTH)"; icon_state = "chair"; dir = 1},/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cq" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/table/reinforced,/obj/item/weapon/lighter,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cr" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/door/poddoor/preopen{id = "bridge_onehalf"; name = "bridge blast door"},/turf/open/floor/plating,/area/ruin/onehalf/bridge) +"cs" = (/obj/item/stack/rods,/turf/open/space,/area/space) +"ct" = (/turf/open/floor/plating/airless,/area/space) +"cu" = (/obj/item/stack/sheet/plasteel{amount = 10},/obj/structure/lattice,/turf/open/space,/area/space) +"cv" = (/obj/structure/lattice,/obj/item/weapon/shard{icon_state = "medium"},/turf/open/space,/area/ruin/onehalf/hallway) +"cw" = (/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/ruin/onehalf/hallway) +"cx" = (/obj/structure/girder/reinforced,/turf/open/floor/plating/airless,/area/ruin/onehalf/bridge) +"cy" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal/bin,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cz" = (/obj/item/stack/tile/plasteel,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cA" = (/obj/machinery/power/solar_control,/obj/structure/cable,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cB" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/door/poddoor/preopen{id = "bridge_onehalf"; name = "bridge blast door"},/turf/open/floor/plating,/area/ruin/onehalf/bridge) +"cC" = (/obj/item/stack/tile/wood,/turf/open/space,/area/space) +"cD" = (/turf/open/space,/area/ruin/onehalf/hallway) +"cE" = (/obj/structure/lattice,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/space,/area/ruin/onehalf/hallway) +"cF" = (/obj/structure/lattice,/obj/structure/disposalpipe/broken{tag = "icon-pipe-b (WEST)"; icon_state = "pipe-b"; dir = 8},/obj/structure/disposalpipe/broken{tag = "icon-pipe-b (NORTH)"; icon_state = "pipe-b"; dir = 1},/turf/open/space,/area/ruin/onehalf/hallway) +"cG" = (/obj/machinery/door/airlock/glass_command{name = "Bridge"},/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cH" = (/obj/machinery/light/small,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cI" = (/obj/machinery/door/poddoor/preopen{id = "bridge_onehalf"; name = "bridge blast door"},/obj/machinery/door/airlock/glass_command{name = "Bridge"},/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cJ" = (/obj/item/weapon/crowbar/red,/obj/item/device/multitool,/turf/open/floor/plating,/area/ruin/onehalf/bridge) +"cK" = (/obj/structure/safe/floor,/obj/item/weapon/tank/internals/oxygen/red,/obj/item/clothing/mask/gas/syndicate,/obj/item/clothing/suit/space/hardsuit/syndi,/obj/item/weapon/reagent_containers/food/drinks/bottle/rum,/obj/item/weapon/reagent_containers/food/drinks/bottle/rum,/obj/item/weapon/folder/syndicate/mining,/turf/open/floor/plating,/area/ruin/onehalf/bridge) +"cL" = (/obj/structure/chair/comfy/black{dir = 4},/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cM" = (/obj/structure/lattice,/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/open/space,/area/ruin/onehalf/hallway) +"cN" = (/turf/open/floor/plating/airless{broken = 1; icon_state = "platingdmg2"},/area/ruin/onehalf/hallway) +"cO" = (/obj/machinery/light{dir = 8},/obj/machinery/vending/sovietsoda,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cP" = (/obj/item/stack/sheet/plasteel,/turf/open/space,/area/space) +"cQ" = (/obj/structure/lattice,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/space,/area/ruin/onehalf/hallway) +"cR" = (/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/ruin/onehalf/hallway) +"cS" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/ruin/onehalf/hallway) +"cT" = (/obj/structure/table/reinforced,/obj/machinery/recharger,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cU" = (/obj/structure/chair/office,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cV" = (/obj/machinery/button/door{id = "bridge_onehalf"; name = "Bridge Blast Door"; pixel_x = 32; pixel_y = 5},/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cW" = (/obj/structure/table/reinforced,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cX" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable,/obj/machinery/door/poddoor/preopen{id = "bridge_onehalf"; name = "bridge blast door"},/turf/open/floor/plating,/area/ruin/onehalf/bridge) +"cY" = (/obj/structure/lattice,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/space,/area/space) +"cZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/ruin/onehalf/hallway) +"da" = (/obj/structure/table/reinforced,/obj/item/device/flashlight,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"db" = (/obj/structure/table/reinforced,/obj/item/weapon/ore/bluespace_crystal,/obj/item/weapon/coin/plasma,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"dc" = (/obj/structure/closet/firecloset/full,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"dd" = (/obj/machinery/light,/obj/structure/table/reinforced,/obj/item/weapon/storage/firstaid/regular,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"de" = (/obj/structure/girder/reinforced,/obj/item/stack/sheet/plasteel,/turf/open/floor/plating/airless,/area/space) +"df" = (/turf/open/floor/plating/airless{broken = 1; icon_state = "platingdmg2"},/area/space) +"dg" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plating/airless{broken = 1; icon_state = "platingdmg1"},/area/ruin/onehalf/hallway) +"dh" = (/obj/structure/grille,/obj/item/weapon/shard,/turf/open/floor/plating/airless{icon_state = "platingdmg3"},/area/ruin/onehalf/hallway) +"di" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/door/poddoor/preopen{id = "bridge_onehalf"; name = "bridge blast door"},/turf/open/floor/plating,/area/ruin/onehalf/bridge) +"dj" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/door/poddoor/preopen{id = "bridge_onehalf"; name = "bridge blast door"},/turf/open/floor/plating,/area/ruin/onehalf/bridge) +"dk" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/door/poddoor/preopen{id = "bridge_onehalf"; name = "bridge blast door"},/turf/open/floor/plating,/area/ruin/onehalf/bridge) +"dl" = (/obj/structure/lattice,/obj/item/stack/sheet/plasteel,/turf/open/space,/area/space) +"dm" = (/obj/structure/lattice,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/weapon/shard{icon_state = "medium"},/turf/open/space,/area/space) +"dn" = (/obj/structure/lattice,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/item/stack/rods,/turf/open/space,/area/space) +"do" = (/obj/structure/lattice,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/space,/area/space) +"dp" = (/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/open/space,/area/space) + +(1,1,1) = {" +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaabacacacacacacacacacadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaeacafagagagagagagahagagaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaajakakakagalamanagaoapaoagaqarasaratarauaravaraaaaaaaaaaaa +aaaaawaxaxayazagaAamaBagaCapaoagaDaraEaraFaraEaraEarawaraGaraaaa +aaaaaaaHaIaxaJagaKaLaMagaoapaoagaqaraNaraOaraParaQaraaaraRaraaaa +aaaaaSajaxaTaUagagaVagagagaWagagaXaYaZbaaZbbaZbcbdarararbeararaa +aaaaawbfbgbhbibjbjbkbibiblbjbmbnbobpbqbpbqbpbqbpbqbpbrbsbtbubeaa +aaaaaabvbwbwbxbxbwbybxbxbzbAbBbCbpbpbDbEbDbpbDbEbFbGarbHbIbJbeaa +aaaaaabKajakbLbMbNbObPbQbRbSbTbUbUbUbUbUbUbUbUbUbUbUararbeararaa +aaaaaaaabVbWbKakbQbRajawbRbWbXbYaabZcacbcccdcecfcgbUawaaaaaaaaaa +aaaaaaaaaaaaaaaachaaaabVaxaxcicjckclcmcncocpcococqcradaaaaaaaaaa +aaaaaaaaaaaaaacsctcuaaaaajcvcwcxbUbUcycoczcocococAcBaiaaaaaaaaaa +aaaaaaaaaaaaaaaaaaawcCaacDcEcFcGcHcIcoczcJcKcocLcecBaiaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaacsawajcMcNbUbUbUcOcocococococecBaiaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaacPcCaxcQcRcSawbZcTcncocUcocVcWcXcYaaaaaaaaaa +aaaaaaaaaaaaaaaaaacsaaaabRcZaJcSaabZdadbdccececoddbUaiaaaaaaaaaa +aaaaaaaaaaaaaaaaaadeawdfbQdgdhbUbUbUbUdidjdjdjdkbUbUaiaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaadldmdnacacacacacdoacacacdoacacafaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaadpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} diff --git a/code/game/objects/items/documents.dm b/code/game/objects/items/documents.dm index e9b23a5f450..1b7fa8663ff 100644 --- a/code/game/objects/items/documents.dm +++ b/code/game/objects/items/documents.dm @@ -28,6 +28,9 @@ desc = "\"Top Secret\" documents detailing sensitive Syndicate operational intelligence. These documents are verified with a blue wax seal." icon_state = "docs_blue" +/obj/item/documents/syndicate/mining + desc = "\"Top Secret\" documents detailing Syndicate plasma mining operations." + /obj/item/documents/photocopy desc = "A copy of some top-secret documents. Nobody will notice they aren't the originals... right?" var/forgedseal = 0 diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm index 7af7f6c084d..ee9a41d6bf1 100644 --- a/code/modules/paperwork/folders.dm +++ b/code/modules/paperwork/folders.dm @@ -85,6 +85,7 @@ update_icon() /obj/item/weapon/folder/syndicate + icon_state = "folder_syndie" name = "folder- 'TOP SECRET'" desc = "A folder stamped \"Top Secret - Property of The Syndicate.\"" @@ -102,4 +103,9 @@ /obj/item/weapon/folder/syndicate/blue/New() ..() new /obj/item/documents/syndicate/blue(src) + update_icon() + +/obj/item/weapon/folder/syndicate/mining/New() + ..() + new /obj/item/documents/syndicate/mining(src) update_icon() \ No newline at end of file diff --git a/code/modules/ruins/ruin_areas.dm b/code/modules/ruins/ruin_areas.dm index b6ab25dfa70..ad9688b1625 100644 --- a/code/modules/ruins/ruin_areas.dm +++ b/code/modules/ruins/ruin_areas.dm @@ -25,4 +25,23 @@ -/area/ruin/powered/snow_biodome \ No newline at end of file +/area/ruin/powered/snow_biodome + + +// Ruins of "onehalf" ship +/area/ruin/onehalf/hallway + name = "Hallway" + icon_state = "hallC" + + +/area/ruin/onehalf/drone_bay + name = "Mining Drone Bay" + icon_state = "engine" + +/area/ruin/onehalf/dorms_med + name = "Crew Quarters" + icon_state = "Sleep" + +/area/ruin/onehalf/bridge + name = "Bridge" + icon_state = "bridge" \ No newline at end of file From b8a5871f8444793c51374beaa179b43dfa1bc096 Mon Sep 17 00:00:00 2001 From: nullbear Date: Tue, 19 Apr 2016 09:10:25 -0700 Subject: [PATCH 067/265] Gets rid of the config portion of this UI --- code/__DEFINES/preferences.dm | 1 + code/modules/client/preferences.dm | 5 +++ code/modules/client/preferences_toggles.dm | 9 +++++ code/modules/crafting/table.dm | 34 +++++++++++-------- .../recipes/tablecraft/recipes_burger.dm | 2 +- 5 files changed, 36 insertions(+), 15 deletions(-) diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm index 207c01db0dc..26c682d487e 100644 --- a/code/__DEFINES/preferences.dm +++ b/code/__DEFINES/preferences.dm @@ -12,6 +12,7 @@ #define SOUND_PRAYERS 512 #define ANNOUNCE_LOGIN 1024 #define SOUND_ANNOUNCEMENTS 2048 +#define HIDE_RECIPES 4096 #define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|MEMBER_PUBLIC|INTENT_STYLE|MIDROUND_ANTAG|SOUND_INSTRUMENTS|SOUND_SHIP_AMBIENCE|SOUND_PRAYERS|SOUND_ANNOUNCEMENTS) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 7ffb0c72eb0..58745f48fd9 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -39,6 +39,7 @@ var/list/preferences_datums = list() var/ghost_hud = 1 var/inquisitive_ghost = 1 var/allow_midround_antag = 1 + var/hide_recipes = 0 var/preferred_map = null //character preferences @@ -343,6 +344,7 @@ var/list/preferences_datums = list() dat += "Ghost pda: [(chat_toggles & CHAT_GHOSTPDA) ? "All Messages" : "Nearest Creatures"]
" dat += "Pull requests: [(chat_toggles & CHAT_PULLR) ? "Yes" : "No"]
" dat += "Midround Antagonist: [(toggles & MIDROUND_ANTAG) ? "Yes" : "No"]
" + dat += "Hide uncraftable recipes: [(toggles & HIDE_RECIPES) ? "Yes" : "No"]
" if(config.allow_Metadata) dat += "OOC Notes: Edit
" @@ -1123,6 +1125,9 @@ var/list/preferences_datums = list() if("allow_midround_antag") toggles ^= MIDROUND_ANTAG + if("hide_recipes") + toggles ^= HIDE_RECIPES + if("save") save_preferences() save_character() diff --git a/code/modules/client/preferences_toggles.dm b/code/modules/client/preferences_toggles.dm index 8e8e856b4ae..118d8c55e47 100644 --- a/code/modules/client/preferences_toggles.dm +++ b/code/modules/client/preferences_toggles.dm @@ -115,6 +115,15 @@ src << "You will [(prefs.toggles & MIDROUND_ANTAG) ? "now" : "no longer"] be considered for midround antagonist positions." feedback_add_details("admin_verb","TMidroundA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! +/client/verb/togglehiderecipes() + set name = "Toggle Hidden Recipes" + set category = "Preferences" + set desc = "Toggles whether or not recipes you have no components for will be hidden from the tablecrafting menu." + prefs.toggles ^= HIDE_RECIPES + prefs.save_preferences() + src << "Recipes will [(prefs.toggles & HIDE_RECIPES) ? "now" : "no longer"] be hidden if you have no matching components." + feedback_add_details("admin_verb", "HiddenRecipes") + /client/verb/toggletitlemusic() set name = "Hear/Silence LobbyMusic" set category = "Preferences" diff --git a/code/modules/crafting/table.dm b/code/modules/crafting/table.dm index 687cae5be3b..8b0f3ff6e32 100644 --- a/code/modules/crafting/table.dm +++ b/code/modules/crafting/table.dm @@ -15,24 +15,30 @@ /obj/structure/table/proc/check_contents(datum/table_recipe/R) check_table() + var/has_components = 0 + var/stillneed = 0 main_loop: for(var/A in R.reqs) - var/needed_amount = R.reqs[A] + stillneed += R.reqs[A] for(var/B in table_contents) if(ispath(B, A)) if(table_contents[B] >= R.reqs[A]) + has_components += R.reqs[A] + stillneed -= R.reqs[A] continue main_loop else - needed_amount -= table_contents[B] - if(needed_amount <= 0) + stillneed -= table_contents[B] + has_components += table_contents[B] + if(stillneed <= 0) continue main_loop - else - continue - return 0 + // Early return was causing has_components to return less than it should. + if(stillneed) + return has_components + for(var/A in R.chem_catalysts) if(table_contents[A] < R.chem_catalysts[A]) - return 0 - return 1 + return has_components + return -1 /obj/structure/table/proc/check_table() table_contents = list() @@ -71,10 +77,10 @@ /obj/structure/table/proc/construct_item(mob/user, datum/table_recipe/R) check_table() var/send_feedback = 1 - if(check_contents(R)) + if(check_contents(R) < 0) if(check_tools(user, R)) if(do_after(user, R.time, target = src)) - if(!check_contents(R)) + if(!check_contents(R) < 0) return ", missing component." if(!check_tools(user, R)) return ", missing tool." @@ -203,9 +209,10 @@ for(var/datum/table_recipe/R in table_recipes) if(R.category != categories[viewing_category]) continue - if(check_contents(R)) + var/matched_contents = check_contents(R) // Really had no reason to be calling this loop 400+ times for an if/else statement. + if(matched_contents < 0) can_craft += R - else + else if(matched_contents && !(user.client.prefs.toggles & HIDE_RECIPES && !matched_contents)) cant_craft += R for(var/datum/table_recipe/R in can_craft) @@ -263,9 +270,8 @@ var/req_text = "" var/tool_text = "" var/catalist_text = "" - if(check_contents(R)) + if(check_contents(R) < 0) name_text ="[R.name]" - else name_text = "[R.name]" diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_burger.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_burger.dm index a775bcbad99..e147affcf4b 100644 --- a/code/modules/food&drinks/recipes/tablecraft/recipes_burger.dm +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_burger.dm @@ -180,7 +180,7 @@ /datum/table_recipe/spellburger name = "Spell burger" reqs = list( - /obj/item/clothing/head/wizard/fake, + /obj/item/clothing/head/wizard/fake = 1, ) result = /obj/item/weapon/reagent_containers/food/snacks/burger/spell category = CAT_FOOD From 421724d3839585c5da3777609328c3c523340858 Mon Sep 17 00:00:00 2001 From: nullbear Date: Tue, 19 Apr 2016 11:51:21 -0700 Subject: [PATCH 068/265] Brings back early return. Since min_req isnt needed anymore, no reason to continue the loop if it has at least one component. --- code/modules/crafting/table.dm | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/code/modules/crafting/table.dm b/code/modules/crafting/table.dm index 8b0f3ff6e32..7b12e4fe1f4 100644 --- a/code/modules/crafting/table.dm +++ b/code/modules/crafting/table.dm @@ -16,24 +16,21 @@ /obj/structure/table/proc/check_contents(datum/table_recipe/R) check_table() var/has_components = 0 - var/stillneed = 0 main_loop: for(var/A in R.reqs) - stillneed += R.reqs[A] + var/stillneed = R.reqs[A] for(var/B in table_contents) if(ispath(B, A)) if(table_contents[B] >= R.reqs[A]) - has_components += R.reqs[A] - stillneed -= R.reqs[A] + has_components = 1 continue main_loop else stillneed -= table_contents[B] - has_components += table_contents[B] + has_components = 1 if(stillneed <= 0) continue main_loop - // Early return was causing has_components to return less than it should. - if(stillneed) - return has_components + if(has_components) + return has_components for(var/A in R.chem_catalysts) if(table_contents[A] < R.chem_catalysts[A]) From 3e51b9673b94ff31e405ade92741c4f75d8a97e2 Mon Sep 17 00:00:00 2001 From: TechnoAlchemist Date: Tue, 19 Apr 2016 18:44:04 -0700 Subject: [PATCH 069/265] Makes syndicate bombs scarier. --- code/game/machinery/syndicatebomb.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index a625b89489d..ab2d9397084 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -19,7 +19,7 @@ /obj/machinery/syndicatebomb/process() if(active && !defused && (timer > 0)) //Tick Tock - var/volume = (timer <= 10 ? 40 : 10) // Tick louder when the bomb is closer to being detonated. + var/volume = (timer <= 5 ? 50 : 2) // Tick louder when the bomb is closer to being detonated. playsound(loc, beepsound, volume, 0) timer-- if(active && !defused && (timer <= 0)) //Boom From 3d9561a410ce379d6a0a4f47cb87b415fb5ac6ed Mon Sep 17 00:00:00 2001 From: Robustin Date: Tue, 19 Apr 2016 22:32:11 -0400 Subject: [PATCH 070/265] Merge Conflict Memes --- icons/obj/items.dmi | Bin 66676 -> 67223 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index f445282407db447b1a30209f3627bc59b348a63c..b1d3fd17ef6a2f518511d35c4afa96037cbd4e17 100644 GIT binary patch delta 48433 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 b&vA*UH4_4MeUv*O@aK`d>VqO#lfeH4A#2CO delta 47880 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⪻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 Date: Tue, 19 Apr 2016 22:35:34 -0400 Subject: [PATCH 071/265] Update ritual.dm --- code/game/gamemodes/cult/ritual.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index e47db0b3481..c91ba80fab9 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -207,7 +207,7 @@ This file contains the arcane tome files as well as innate cultist emergency com talisman functions differently from others. Rather than simply reading the words, the target must be attacked directly with the talisman. The talisman will then knock down the target for a long \ duration in addition to inhibiting their speech. Robotic lifeforms will suffer the effects of a heavy electromagnetic pulse instead." - text += "Talisman of Armaments
The Talisman of Arming will equip the user with armored robes, a backpack, an eldritch longsword, a bola, and a pair of boots. Any items that cannot \ + text += "Talisman of Armaments
The Talisman of Arming will equip the user with armored robes, a backpack, an eldritch longsword, an empowered bola, and a pair of boots. Any items that cannot \ be equipped will not be summoned.

" text += "Talisman of Horrors
The Talisman of Horror must be applied directly to the victim, it will shatter your victim's mind with visions of the endtimes.

" From f0556e57f0be8c1805ce42ebfa7afa4389adad90 Mon Sep 17 00:00:00 2001 From: Robustin Date: Wed, 20 Apr 2016 11:12:05 -0400 Subject: [PATCH 072/265] Descriptions and Nar-Sie rune improvements --- code/game/gamemodes/cult/ritual.dm | 89 +++++++++++++++++------------- 1 file changed, 51 insertions(+), 38 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index c91ba80fab9..19b40d788d7 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -8,6 +8,39 @@ This file contains the arcane tome files as well as innate cultist emergency com verbs += /mob/living/proc/cult_innate_comm verbs += /mob/living/proc/cult_help +/mob/living/proc/cult_help() + set category = "Cultist" + set name = "How to Play Cult" + var/text = "" + text += "
Tenets of the Dark One



" + + text += "I. SECRECY
Your cult is a SECRET organization. Your success DEPENDS on keeping your cult's members and locations SECRET for as long as possible. This means that your tome should be hidden \ + in your bag and never brought out in public. You should never create runes where other crew might find them, and you should avoid using talismans or other cult magic with witnesses around.

" + + text += "II. TOME
You start with a unique talisman in your bag. This supply talisman can be used 3 times, and creates starter equipment for your cult. The most critical of the talisman's functions is \ + the power to create a tome. This tome is your most important item and summoning one (in secret) is your FIRST PRIORITY. It lets you talk to fellow cultists and create runes, which in turn is essential to growing the cult's power.

" + + text += "III. RUNES
Runes are powerful sources of cult magic. Your tome will allow you to draw runes with your blood. Those runes, when hit with an empty hand, will attempt to \ + trigger the rune's magic. Runes are essential for the cult to convert new members, create powerful minions, or call upon incredibly powerful magic. Some runes require more than one cultist to use.

" + + text += "IV. TALISMANS
Talismans are a mobile source of cult magic that are NECESSARY to achieve success as a cult. Your starting talisman can produce certain talismans, but you will need \ + to use the -create talisman- rune (with ordinary paper on top) to get more talismans. Talismans are EXTREMELY powerful, therefore creating more talismans in a HIDDEN location should be one of your TOP PRIORITIES.

" + + text += "V. GROW THE CULT
There are certain basic strategies that all cultists should master. STUN talismans are the foundation of a successful cult. If you intend to convert the stunned person \ + you should use cuffs or talisman of shackling on them and remove their headset before they recover (it takes about 10 seconds to recover). If you intend to sacrifice the victim, striking them quickly and repeatedly with your tome \ + will knock them out before they can recover. Sacrificed victims will their soul behind in a shard, these shards can be used on construct shells to make powerful servants for the cult. Remember you need TWO cultists standing near a \ + conversion rune to convert someone. Your construct minions cannot trigger most runes, but they will count as cultists in helping you trigger more powerful runes like conversion or blood boil.

" + + text += "VI. VICTORY
You have two ultimate goals as a cultist, sacrifice your target, and summon Nar-Sie. Sacrificing the target involves killing that individual and then placing \ + their corpse on a sacrifice rune and triggering that rune with three cultists. Do NOT lose the target's corpse! Only once the target is sacrificed can Nar-Sie be summoned. Summoning Nar-Sie will take nearly one minute \ + just to draw the massive rune needed. Do not create the rune until your cult is ready, the crew will receive the NAME and LOCATION of anyone who attempts to create the Nar-Sie rune. Once the Nar-Sie rune is drawn \ + you must gathered 9 cultists (or constructs) over the rune and then click it to bring the Dark One into this world!

" + + var/datum/browser/popup = new(usr, "mind", "", 800, 600) + popup.set_content(text) + popup.open() + return 1 + /mob/living/proc/cult_innate_comm() set category = "Cultist" set name = "Imperfect Communion" @@ -45,39 +78,8 @@ This file contains the arcane tome files as well as innate cultist emergency com cultist_commune(usr, 0, 1, input) return - -/mob/living/proc/cult_help() - set category = "Cultist" - set name = "How to Play Cult" - var/text = "" - text += "
Tenets of the Dark One



" - text += "I. SECRECY
Your cult is a SECRET organization. Your success DEPENDS on keeping your cult's members and locations SECRET for as long as possible. This means that your tome should be hidden \ - in your bag and never brought out in public. You should never create runes where other crew might find them, and you should avoid using talismans or other cult magic with witnesses around.

" - - text += "II. TOME
You start with a unique talisman in your bag. This supply talisman can be used 3 times, and creates starter equipment for your cult. The most critical of the talisman's functions is \ - the power to create a tome. This tome is your most important item and summoning one (in secret) is your FIRST PRIORITY. It lets you talk to fellow cultists and create runes, which in turn is essential to growing the cult's power.

" - text += "III.> RUNES
Runes are powerful sources of cult magic. Your tome will allow you to draw runes with your blood. Those runes, when hit with an empty hand, will attempt to \ - trigger the rune's magic. Runes are essential for the cult to convert new members, create powerful minions, or call upon incredibly powerful magic. Some runes require more than one cultist to use.

" - - text += "IV. TALISMANS
Talismans are a mobile source of cult magic that are NECESSARY to achieve success as a cult. Your starting talisman can produce certain talismans, but you will need \ - to use the -create talisman- rune (with ordinary paper on top) to get more talismans. Talismans are EXTREMELY powerful, therefore creating more talismans in a HIDDEN location should be one of your TOP PRIORITIES.

" - - text += "V. GROW THE CULT
There are certain basic strategies that all cultists should master. STUN talismans are the foundation of a successful cult. If you intend to convert the stunned person \ - you should use cablecuffs on them and remove their headset before they recover. If you intend to sacrifice the victim, striking them quickly and repeatedly with your tome will knock them out before they can recover. \ - Sacrificed victims will their soul behind in a shard, these shards can be used on construct shells to make powerful servants for the cult. Remember you need TWO cultists standing near a conversion rune to convert someone. \ - Your construct minions cannot trigger most runes, but they will count as cultists in helping you trigger more powerful runes like conversion or blood boil.

" - - text += "VI. VICTORY
You have two ultimate goals as a cultist, sacrifice your target, and summon Nar-Sie. Sacrificing the target involves killing that individual and then placing \ - their corpse on a sacrifice rune and triggering that rune with three cultists. Do NOT lose the target's corpse! Only once the target is sacrificed can Nar-Sie be summoned. Summoning Nar-Sie will take nearly one minute \ - just to draw the massive rune needed. Do not create the rune until your cult is ready, the crew will receive the NAME and LOCATION of anyone who attempts to create the Nar-Sie rune. Once the Nar-Sie rune is drawn \ - you must gathered 9 cultists (or constructs) over the rune and then click it to bring the Dark One into this world!

" - - var/datum/browser/popup = new(usr, "mind", "", 800, 600) - popup.set_content(text) - popup.open() - return 1 /obj/item/weapon/tome name = "arcane tome" @@ -126,9 +128,9 @@ This file contains the arcane tome files as well as innate cultist emergency com open_tome(user) /obj/item/weapon/tome/proc/open_tome(mob/user) - var/choice = alert(user,"You open the tome...",,"Commune","Scribe Rune","Read Tome") + var/choice = alert(user,"You open the tome...",,"Commune","Scribe Rune","More Information") switch(choice) - if("Information") + if("More Information") read_tome(user) if("Scribe Rune") scribe_rune(user) @@ -192,7 +194,7 @@ This file contains the arcane tome files as well as innate cultist emergency com text += "Talisman of Teleportation
The talisman form of the Rite of Translocation will transport the invoker to a randomly chosen rune of the same keyword, then \ disappear.

" - + text += "Talisman of Construction
The Rune of Fabrication is the main way of creating construct shells. To use it, one must place fifteen sheets of metal on top of the rune \ and invoke it. The sheets will them be twisted into a construct shell, ready to recieve a soul to occupy it.

" @@ -210,7 +212,9 @@ This file contains the arcane tome files as well as innate cultist emergency com text += "Talisman of Armaments
The Talisman of Arming will equip the user with armored robes, a backpack, an eldritch longsword, an empowered bola, and a pair of boots. Any items that cannot \ be equipped will not be summoned.

" - text += "Talisman of Horrors
The Talisman of Horror must be applied directly to the victim, it will shatter your victim's mind with visions of the endtimes.

" + text += "Talisman of Horrors
The Talisman of Horror must be applied directly to the victim, it will shatter your victim's mind with visions of the endtimes that may incapitate them.

" + + text += "Talisman of Shackling
The Talisman of Shackling must be applied directly to the victim, it has 4 uses and cuffs victims with magic shackles that disappear when removed.

" var/datum/browser/popup = new(user, "tome", "", 800, 600) popup.set_content(text) @@ -226,7 +230,7 @@ This file contains the arcane tome files as well as innate cultist emergency com var/list/shields = list() if(locate(/obj/effect/rune) in Turf) user << "There is already a rune here." - return + return for(var/T in subtypesof(/obj/effect/rune) - /obj/effect/rune/malformed) var/obj/effect/rune/R = T if(initial(R.cultist_name)) @@ -251,7 +255,7 @@ This file contains the arcane tome files as well as innate cultist emergency com var/turf/Thenewturfyouwalkedto = get_turf(user) //we may have moved. adjust as needed... if(locate(/obj/effect/rune) in Thenewturfyouwalkedto) user << "There is already a rune here." - return + return if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated()) return user.visible_message("[user] cuts open their arm and begins writing in their own blood!", \ @@ -260,6 +264,10 @@ This file contains the arcane tome files as well as innate cultist emergency com var/mob/living/carbon/C = user C.apply_damage(0.1, BRUTE, pick("l_arm", "r_arm")) if("Summon Nar-Sie" == entered_rune_name) + var/confirm_final = alert(usr, "This is the FINAL step to summon Nar-Sie, it is a long, painful ritual and the crew will be alerted to your presence", "Are you prepared for the final battle?", "My life for Nar-Sie!", "No") + if(confirm_final == "No") + usr << "On second thought, we should prepare further for the final battle..." + return C.apply_damage(40, BRUTE, pick("l_arm", "r_arm")) var/area/A = get_area(src) var/locname = initial(A.name) @@ -278,6 +286,11 @@ This file contains the arcane tome files as well as innate cultist emergency com qdel(S) return if(!do_after(user, 50, target = get_turf(user))) + if(shields.len) + for(var/V in shields) + var/obj/machinery/shield/S = V + if(S && !qdeleted(S)) + qdel(S) return user.visible_message("[user] creates a strange circle in their own blood.", \ "You finish drawing the arcane markings of the Geometer.") @@ -287,4 +300,4 @@ This file contains the arcane tome files as well as innate cultist emergency com if(S && !qdeleted(S)) qdel(S) new rune_to_scribe(Thenewturfyouwalkedto, chosen_keyword) - user << "The [lowertext(initial(rune_to_scribe.cultist_name))] rune [initial(rune_to_scribe.cultist_desc)]" + user << "The [lowertext(initial(rune_to_scribe.cultist_name))] rune [initial(rune_to_scribe.cultist_desc)]" From 585581bf31d2a241f62299267eafde3f02d61e4e Mon Sep 17 00:00:00 2001 From: Robustin Date: Wed, 20 Apr 2016 11:13:29 -0400 Subject: [PATCH 073/265] Talisman of Shacking description and "uses" fix --- code/game/gamemodes/cult/talisman.dm | 29 +++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index ff15480f430..cfbfecc0957 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -31,7 +31,7 @@ user.whisper(invocation) if(health_cost && iscarbon(user)) var/mob/living/carbon/C = user - C.apply_damage(health_cost, BRUTE, pick("l_arm", "r_arm")) + C.apply_damage(health_cost, BRUTE, pick("l_arm", "r_arm")) //Malformed Talisman: If something goes wrong. /obj/item/weapon/paper/talisman/malformed @@ -153,7 +153,7 @@ "You speak the words of the talisman!") new /obj/item/weapon/tome(get_turf(user)) user.visible_message("A tome appears at [user]'s feet!", \ - "An arcane tome materializes at your feet.") + "An arcane tome materializes at your feet.") /obj/item/weapon/paper/talisman/true_sight cultist_name = "Talisman of Veiling" @@ -181,7 +181,7 @@ for(var/obj/effect/rune/R in range(3,user)) R.invisibility = 0 R.visible_message("[R] suddenly appears!") - R.alpha = initial(R.alpha) + R.alpha = initial(R.alpha) //Rite of False Truths: Same as rune /obj/item/weapon/paper/talisman/make_runes_fake @@ -217,7 +217,7 @@ color = "#ff0000" // red invocation = "Fuu ma'jin!" health_cost = 10 - + /obj/item/weapon/paper/talisman/stun/invoke(mob/living/user, successfuluse = 0) if(successfuluse) //if we're forced to be successful(we normally aren't) then do the normal stuff return ..() @@ -226,7 +226,7 @@ else user << "There are indecipherable images scrawled on the paper in what looks to be... blood?" return 0 - + /obj/item/weapon/paper/talisman/stun/attack(mob/living/target, mob/living/user, successfuluse = 1) if(iscultist(user)) invoke(user, 1) @@ -260,7 +260,7 @@ cultist_desc = "A talisman that will equip the invoker with cultist equipment if there is a slot to equip it to." color = "#33cc33" // green invocation = "N'ath reth sh'yro eth draggathnor!" - + /obj/item/weapon/paper/talisman/armor/invoke(mob/living/user, successfuluse = 1) . = ..() user.visible_message("Otherworldly armor suddenly appears on [user]!", \ @@ -308,15 +308,15 @@ user << "To use this talisman, attack the target directly." else user << "There are indecipherable images scrawled on the paper in what looks to be... blood?" - - + + /obj/item/weapon/paper/talisman/construction/attack(obj/M,mob/living/user) if(iscultist(user)) user << "This talisman will only work on a stack of metal sheets!" log_game("Construct talisman failed - not a valid target") - + /obj/item/weapon/restraints/handcuffs/energy/cult //For the talisman of shackling - name = "cultist shackles" + name = "cult shackle" desc = "shackles that bind the wrists with sinister magic." trashtype = /obj/item/weapon/restraints/handcuffs/energy/used origin_tech = "materials=2;magnets=5" @@ -351,7 +351,6 @@ /obj/item/weapon/paper/talisman/shackle/attack(mob/living/target, mob/living/user) if(iscultist(user)) - invoke(user, 1) if(isrobot(target)) ..() return @@ -375,7 +374,11 @@ C.handcuffed = new /obj/item/weapon/restraints/handcuffs/energy/cult/used(C) C.update_handcuffed() user << "You shackle [C]." - add_logs(user, C, "handcuffed") + add_logs(user, C, "handcuffed" + uses-- else - user << "You fail to shackle [C]." + user << "You fail to shackle [C]." + if(uses <= 0) + user.drop_item() + qdel(src) return From 792846e452175222e0e71caf4aff6f59025160be Mon Sep 17 00:00:00 2001 From: Robustin Date: Wed, 20 Apr 2016 11:14:14 -0400 Subject: [PATCH 074/265] Cult Bola proper icon state --- code/game/objects/items/weapons/handcuffs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index 1af8204694c..25c7de621d8 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -314,6 +314,6 @@ /obj/item/weapon/restraints/legcuffs/bola/cult //cult variant, comes with armament talisman name = "nar'sian bola" desc = "A strong bola, bound with dark magic. Throw it to trip and slow your victim." - icon_state = "bola_c" + icon_state = "bola_cult" breakouttime = 45 weaken = 1 From a53019a0e0d01e0c5c7e0e5b82f56655d3a29912 Mon Sep 17 00:00:00 2001 From: Robustin Date: Wed, 20 Apr 2016 12:14:44 -0400 Subject: [PATCH 075/265] Rogue Parenthesis --- code/game/gamemodes/cult/talisman.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index cfbfecc0957..bc09d9bea66 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -374,7 +374,7 @@ C.handcuffed = new /obj/item/weapon/restraints/handcuffs/energy/cult/used(C) C.update_handcuffed() user << "You shackle [C]." - add_logs(user, C, "handcuffed" + add_logs(user, C, "handcuffed") uses-- else user << "You fail to shackle [C]." From 97be99d0b6c530333d89a2b9f3e13268bff376ed Mon Sep 17 00:00:00 2001 From: Robustin Date: Wed, 20 Apr 2016 17:27:57 -0400 Subject: [PATCH 076/265] Desc./color changes, EMP consumption fix --- code/game/gamemodes/cult/talisman.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index bc09d9bea66..9deaba98935 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -102,6 +102,7 @@ /obj/item/weapon/paper/talisman/teleport cultist_name = "Talisman of Teleportation" cultist_desc = "A single-use talisman that will teleport a user to a random rune of the same keyword." + color = "#551A8B" // purple invocation = "Sas'so c'arta forbici!" health_cost = 5 @@ -206,6 +207,7 @@ health_cost = 5 /obj/item/weapon/paper/talisman/emp/invoke(mob/living/user, successfuluse = 1) + . = ..() user.visible_message("[user]'s hand flashes a bright blue!", \ "You speak the words of the talisman, emitting an EMP blast.") empulse(src, 4, 8) From 9bd0d5ec481cb28ba848fca5ecb75109c996b854 Mon Sep 17 00:00:00 2001 From: Robustin Date: Wed, 20 Apr 2016 17:29:44 -0400 Subject: [PATCH 077/265] Color and Teleport Rune Fix --- code/game/gamemodes/cult/runes.dm | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 3651ca3d30c..284ddedfc06 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -1,6 +1,5 @@ /var/list/sacrificed = list() var/list/non_revealed_runes = (subtypesof(/obj/effect/rune) - /obj/effect/rune/malformed) -var/list/teleport_runes = list() /* @@ -38,6 +37,11 @@ To draw a rune, use an arcane tome. var/req_keyword = 0 //If the rune requires a keyword - go figure amirite var/keyword //The actual keyword for the rune + +/obj/effect/rune/New(loc, set_keyword) + ..() + if(set_keyword) + keyword = set_keyword /obj/effect/rune/examine(mob/user) ..() @@ -207,13 +211,14 @@ structure_check() searches for nearby cultist structures required for the invoca visible_message("[src] glows with power, and bloody images form themselves on [paper_to_imbue].") qdel(paper_to_imbue) rune_in_use = 0 - + +var/list/teleport_runes = list() /obj/effect/rune/teleport cultist_name = "Teleport" cultist_desc = "warps everything above it to another chosen teleport rune." invocation = "Sas'so c'arta forbici!" icon_state = "2" - color = rgb(0, 0, 255) + color = "#551A8B" req_keyword = 1 var/listkey @@ -274,7 +279,7 @@ structure_check() searches for nearby cultist structures required for the invoca user << "You[user.loc == UT ? " send everything above the rune away":"r vision blurs, and you suddenly appear somewhere else"]." else fail_invoke() - + //Rite of Enlightenment: Converts a normal crewmember to the cult. Faster for every cultist nearby. /obj/effect/rune/convert @@ -819,7 +824,7 @@ structure_check() searches for nearby cultist structures required for the invoca break user.apply_damage(1, BRUTE) sleep(30) - + qdel(N) if(new_human) new_human.visible_message("[new_human] suddenly dissolves into bones and ashes.", \ From 4292dc8adbd1f82d566ba02d081fda3755947e1f Mon Sep 17 00:00:00 2001 From: Robustin Date: Wed, 20 Apr 2016 17:31:21 -0400 Subject: [PATCH 078/265] Nar-Sie shield fix --- code/game/gamemodes/cult/ritual.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 19b40d788d7..87ece6f4d04 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -5,8 +5,9 @@ This file contains the arcane tome files as well as innate cultist emergency com */ /mob/proc/cult_add_comm() //why the fuck does this have its own proc? not removing it because it might be used somewhere but... - verbs += /mob/living/proc/cult_innate_comm verbs += /mob/living/proc/cult_help + verbs += /mob/living/proc/cult_innate_comm + /mob/living/proc/cult_help() set category = "Cultist" @@ -79,8 +80,6 @@ This file contains the arcane tome files as well as innate cultist emergency com cultist_commune(usr, 0, 1, input) return - - /obj/item/weapon/tome name = "arcane tome" desc = "An old, dusty tome with frayed edges and a sinister-looking cover." @@ -279,6 +278,7 @@ This file contains the arcane tome files as well as innate cultist emergency com N.color = "red" N.health = 60 shields |= N + if(!do_after(user, 400, target = get_turf(user))) if(shields.len) for(var/V in shields) var/obj/machinery/shield/S = V From d53d6ac698cfef25e254faa4edd0369d4544863e Mon Sep 17 00:00:00 2001 From: CorruptComputer Date: Wed, 20 Apr 2016 16:02:12 -0500 Subject: [PATCH 079/265] It lives again --- _maps/asteroidstation.dm | 31 + .../AsteroidStation/AsteroidStation.dmm | 64674 ++++++++++++++++ _maps/map_files/AsteroidStation/z5.dmm | 271 + 3 files changed, 64976 insertions(+) create mode 100644 _maps/asteroidstation.dm create mode 100644 _maps/map_files/AsteroidStation/AsteroidStation.dmm create mode 100644 _maps/map_files/AsteroidStation/z5.dmm diff --git a/_maps/asteroidstation.dm b/_maps/asteroidstation.dm new file mode 100644 index 00000000000..d0805e0648f --- /dev/null +++ b/_maps/asteroidstation.dm @@ -0,0 +1,31 @@ +/* +The /tg/ codebase currently requires you to have 7 z-levels of the same size dimensions. +z-level order is important, the order you put them in inside this file will determine what z level number they are assigned ingame. +Names of z-level do not matter, but order does greatly, for instances such as checking alive status of revheads on z1 +*/ + +#if !defined(MAP_FILE) + + #define TITLESCREEN "title" //Add an image in misc/fullscreen.dmi, and set this define to the icon_state, to set a custom titlescreen for your map + + #define MINETYPE "mining" + + #include "map_files\AsteroidStation\AsteroidStation.dmm" + #include "map_files\generic\z2.dmm" + #include "map_files\generic\z3.dmm" + #include "map_files\generic\z4.dmm" + #include "map_files\AsteroidStation\z5.dmm" + #include "map_files\generic\z6.dmm" + #include "map_files\generic\z7.dmm" + + #define MAP_PATH "map_files/AsteroidStation" + #define MAP_FILE "AsteroidStation.dmm" + #define MAP_NAME "AsteroidStation" + + #define MAP_TRANSITION_CONFIG list(MAIN_STATION = CROSSLINKED, CENTCOMM = SELFLOOPING, ABANDONED_SATELLITE = CROSSLINKED, DERELICT = CROSSLINKED, MINING = CROSSLINKED, EMPTY_AREA_1 = CROSSLINKED, EMPTY_AREA_2 = CROSSLINKED) + +#elif !defined(MAP_OVERRIDE) + + #warn a map has already been included, ignoring AsteroidStation. + +#endif \ No newline at end of file diff --git a/_maps/map_files/AsteroidStation/AsteroidStation.dmm b/_maps/map_files/AsteroidStation/AsteroidStation.dmm new file mode 100644 index 00000000000..f30468aae07 --- /dev/null +++ b/_maps/map_files/AsteroidStation/AsteroidStation.dmm @@ -0,0 +1,64674 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aaa" = ( +/turf/open/space, +/area/space) +"aab" = ( +/turf/closed/mineral/random/low_chance, +/area/mine/explored) +"aac" = ( +/turf/closed/mineral/random, +/area/mine/unexplored) +"aad" = ( +/turf/closed/mineral/random/high_chance, +/area/mine/unexplored) +"aae" = ( +/turf/open/space, +/obj/machinery/porta_turret/syndicate, +/turf/closed/wall/shuttle{ + dir = 8; + icon_state = "diagonalWall3" + }, +/area/shuttle/syndicate) +"aaf" = ( +/turf/closed/wall/shuttle{ + icon_state = "wall3" + }, +/area/shuttle/syndicate) +"aag" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/shutters{ + id = "syndieshutters"; + name = "blast shutters" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/shuttle/syndicate) +"aah" = ( +/turf/open/space, +/obj/machinery/porta_turret/syndicate, +/turf/closed/wall/shuttle{ + dir = 1; + icon_state = "diagonalWall3" + }, +/area/shuttle/syndicate) +"aai" = ( +/obj/structure/table, +/obj/machinery/microwave, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaj" = ( +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aak" = ( +/obj/structure/table, +/obj/item/device/flashlight/lamp{ + pixel_x = 4; + pixel_y = 1 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aal" = ( +/obj/machinery/computer/shuttle/syndicate, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aam" = ( +/obj/structure/table, +/obj/machinery/button/door{ + id = "syndieshutters"; + name = "remote shutter control"; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aan" = ( +/obj/structure/computerframe, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aao" = ( +/obj/structure/table, +/obj/item/weapon/storage/box/donkpockets{ + pixel_x = 3; + pixel_y = 3 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aap" = ( +/obj/structure/chair/comfy/black{ + dir = 1; + icon_state = "comfychair"; + name = "pilot's chair" + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaq" = ( +/obj/structure/table, +/obj/item/stack/sheet/glass{ + amount = 10 + }, +/obj/item/device/multitool, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aar" = ( +/obj/item/device/radio/intercom{ + desc = "Talk through this. Evilly"; + freerange = 1; + frequency = 1213; + name = "Syndicate Intercom"; + pixel_y = -32; + subspace_transmission = 1; + syndie = 1 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aas" = ( +/obj/structure/closet/syndicate/personal, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aat" = ( +/turf/open/space, +/turf/closed/wall/shuttle{ + dir = 2; + icon_state = "diagonalWall3" + }, +/area/shuttle/syndicate) +"aau" = ( +/obj/machinery/door/window{ + name = "Cockpit"; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aav" = ( +/turf/open/space, +/turf/closed/wall/shuttle{ + dir = 4; + icon_state = "diagonalWall3" + }, +/area/shuttle/syndicate) +"aaw" = ( +/obj/structure/table, +/obj/item/stack/cable_coil, +/obj/item/weapon/crowbar/red, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aax" = ( +/obj/structure/table, +/obj/item/weapon/storage/box/zipties{ + pixel_x = 1; + pixel_y = 2 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aay" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaz" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaA" = ( +/turf/open/space, +/turf/closed/wall/shuttle{ + dir = 8; + icon_state = "diagonalWall3" + }, +/area/shuttle/syndicate) +"aaB" = ( +/obj/machinery/porta_turret/syndicate, +/turf/closed/wall/shuttle{ + icon_state = "wall3" + }, +/area/shuttle/syndicate) +"aaC" = ( +/obj/machinery/suit_storage_unit/syndicate, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaD" = ( +/obj/structure/closet/syndicate/nuclear, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaE" = ( +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"aaF" = ( +/obj/structure/chair/stool, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaG" = ( +/obj/structure/table, +/obj/item/device/aicard, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaH" = ( +/obj/machinery/door/poddoor{ + auto_close = 300; + id = "smindicate"; + name = "outer blast door" + }, +/obj/machinery/button/door{ + id = "smindicate"; + name = "external door control"; + pixel_x = -26; + pixel_y = 0; + req_access_txt = "150" + }, +/obj/docking_port/mobile{ + dheight = 9; + dir = 2; + dwidth = 5; + height = 22; + id = "syndicate"; + name = "syndicate infiltrator"; + roundstart_move = "syndicate_away"; + travelDir = 180; + width = 18 + }, +/obj/docking_port/stationary{ + area_type = /area/space; + dheight = 9; + dir = 2; + dwidth = 5; + height = 22; + id = "syndicate_sw"; + name = "southwest of station"; + turf_type = /turf/open/space; + width = 18 + }, +/turf/open/floor/plating, +/area/shuttle/syndicate) +"aaI" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_x = 0 + }, +/turf/closed/wall/shuttle{ + icon_state = "wall3" + }, +/area/shuttle/syndicate) +"aaJ" = ( +/turf/open/space, +/turf/closed/wall/shuttle{ + dir = 1; + icon_state = "diagonalWall3" + }, +/area/shuttle/syndicate) +"aaK" = ( +/obj/docking_port/stationary{ + dheight = 9; + dir = 2; + dwidth = 5; + height = 22; + id = "syndicate_ne"; + name = "northeast of station"; + turf_type = /turf/open/space; + width = 18 + }, +/turf/open/space, +/area/space) +"aaL" = ( +/obj/structure/table, +/obj/item/weapon/c4{ + pixel_x = 2; + pixel_y = 1 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaM" = ( +/obj/machinery/door/window{ + dir = 4; + name = "EVA Storage"; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaN" = ( +/obj/machinery/door/airlock/external{ + req_access_txt = "150" + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaO" = ( +/obj/machinery/door/window{ + base_state = "right"; + dir = 4; + icon_state = "right"; + name = "EVA Storage"; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaP" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/shuttle/syndicate) +"aaQ" = ( +/obj/structure/rack, +/obj/item/clothing/suit/space/syndicate/black/red, +/obj/item/clothing/head/helmet/space/syndicate/black/red, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaR" = ( +/obj/item/device/radio/intercom{ + desc = "Talk through this. Evilly"; + freerange = 1; + frequency = 1213; + name = "Syndicate Intercom"; + pixel_x = -32; + subspace_transmission = 1; + syndie = 1 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaS" = ( +/obj/machinery/recharge_station, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaT" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaU" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaV" = ( +/obj/structure/table, +/obj/item/stack/medical/ointment, +/obj/item/stack/medical/bruise_pack, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaW" = ( +/obj/structure/table, +/obj/item/weapon/stock_parts/cell/high{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/weapon/stock_parts/cell/high, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaX" = ( +/obj/structure/table, +/obj/item/weapon/screwdriver{ + pixel_y = 9 + }, +/obj/item/device/assembly/voice{ + pixel_y = 3 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaY" = ( +/obj/structure/table, +/obj/item/weapon/wrench, +/obj/item/device/assembly/infra, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaZ" = ( +/obj/structure/table, +/obj/item/device/assembly/signaler, +/obj/item/device/assembly/signaler, +/obj/item/device/assembly/prox_sensor{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/device/assembly/prox_sensor{ + pixel_x = -8; + pixel_y = 4 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aba" = ( +/obj/structure/table, +/obj/item/weapon/weldingtool/largetank{ + pixel_y = 3 + }, +/obj/item/device/multitool, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abb" = ( +/obj/machinery/door/window{ + dir = 4; + name = "Infirmary"; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abc" = ( +/obj/machinery/door/window/westright{ + name = "Tool Storage"; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abd" = ( +/obj/structure/table, +/obj/item/weapon/storage/toolbox/syndicate, +/obj/item/weapon/crowbar/red, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abe" = ( +/turf/closed/wall, +/area/space/nearstation) +"abf" = ( +/turf/closed/mineral/random, +/area/mine/explored) +"abg" = ( +/obj/machinery/sleeper{ + icon_state = "sleeper-open"; + dir = 4 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abh" = ( +/obj/machinery/door/window{ + base_state = "right"; + dir = 4; + icon_state = "right"; + name = "Infirmary"; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abi" = ( +/obj/machinery/door/window{ + dir = 8; + name = "Tool Storage"; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abj" = ( +/obj/structure/table, +/obj/item/weapon/gun/syringe{ + pixel_x = 1; + pixel_y = 2 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abk" = ( +/obj/structure/table, +/obj/item/weapon/reagent_containers/syringe/charcoal, +/obj/item/weapon/reagent_containers/syringe/charcoal{ + pixel_y = 2 + }, +/obj/item/weapon/reagent_containers/syringe/charcoal{ + pixel_y = 4 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abl" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abm" = ( +/obj/machinery/door/window{ + dir = 1; + name = "Secure Storage"; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abn" = ( +/obj/structure/table, +/obj/item/device/sbeacondrop/bomb{ + pixel_y = 5 + }, +/obj/item/device/sbeacondrop/bomb, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abo" = ( +/obj/structure/table, +/obj/item/weapon/grenade/syndieminibomb{ + pixel_x = 4; + pixel_y = 2 + }, +/obj/item/weapon/grenade/syndieminibomb{ + pixel_x = -1 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abp" = ( +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"abq" = ( +/obj/structure/sink{ + dir = 4; + icon_state = "sink"; + pixel_x = 11; + pixel_y = 0 + }, +/obj/structure/mirror{ + pixel_x = 30 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abr" = ( +/obj/machinery/telecomms/allinone{ + intercept = 1 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abs" = ( +/obj/machinery/nuclearbomb/syndicate, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abt" = ( +/obj/structure/table, +/obj/item/weapon/circular_saw, +/obj/item/weapon/cautery, +/obj/item/weapon/surgicaldrill, +/obj/item/robot_parts/l_arm, +/obj/item/robot_parts/r_arm, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abu" = ( +/obj/structure/table/optable, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abv" = ( +/obj/structure/table, +/obj/item/weapon/scalpel, +/obj/item/weapon/retractor, +/obj/item/weapon/hemostat, +/obj/item/weapon/surgical_drapes, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abw" = ( +/obj/structure/shuttle/engine/heater, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plating, +/area/shuttle/syndicate) +"abx" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aby" = ( +/obj/structure/table, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/sheet/rglass{ + amount = 50 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abz" = ( +/obj/structure/table, +/obj/item/stack/rods{ + amount = 50 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abA" = ( +/obj/structure/shuttle/engine/propulsion{ + icon_state = "propulsion_l" + }, +/turf/open/floor/plating, +/area/shuttle/syndicate) +"abB" = ( +/obj/structure/shuttle/engine/propulsion, +/turf/open/floor/plating, +/area/shuttle/syndicate) +"abC" = ( +/obj/structure/shuttle/engine/propulsion{ + icon_state = "propulsion_r" + }, +/turf/open/floor/plating, +/area/shuttle/syndicate) +"abD" = ( +/turf/open/space, +/area/space/nearstation) +"abE" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall_s6" + }, +/area/shuttle/arrival) +"abF" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall14" + }, +/area/shuttle/arrival) +"abG" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall12" + }, +/area/shuttle/arrival) +"abH" = ( +/obj/structure/window/shuttle, +/obj/structure/grille, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/arrival) +"abI" = ( +/turf/open/space, +/turf/closed/wall/shuttle{ + dir = 3; + icon_state = "swall_f10" + }, +/area/shuttle/arrival) +"abJ" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 4 + }, +/turf/open/space, +/area/shuttle/arrival) +"abK" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall11" + }, +/area/shuttle/arrival) +"abL" = ( +/turf/open/floor/plasteel/shuttle, +/area/shuttle/arrival) +"abM" = ( +/obj/machinery/computer/arcade, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/arrival) +"abN" = ( +/obj/structure/closet/wardrobe/white, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/arrival) +"abO" = ( +/obj/structure/closet/wardrobe/black, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/arrival) +"abP" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall7" + }, +/area/shuttle/arrival) +"abQ" = ( +/turf/open/space, +/turf/closed/wall/shuttle{ + icon_state = "swall_f10" + }, +/area/shuttle/arrival) +"abR" = ( +/obj/structure/shuttle/engine/heater{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/arrival) +"abS" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/landmark{ + name = "JoinLate" + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/arrival) +"abT" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/arrival) +"abU" = ( +/obj/structure/table, +/obj/item/weapon/pen, +/obj/item/weapon/paper{ + icon_state = "paper_words"; + info = "Pilot's Log, . I think the engine trouble might be serious this time. This station hasn't exactly been a big help for fixing our problems, either; so I think this shuttle's grounded for the forseeable future. Fuck."; + name = "Pilot's Log" + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/arrival) +"abV" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall3" + }, +/area/shuttle/arrival) +"abW" = ( +/obj/effect/landmark{ + name = "Observer-Start" + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/arrival) +"abX" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Arrivals Shuttle Airlock" + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/arrival) +"abY" = ( +/obj/structure/table, +/obj/item/weapon/cigbutt/cigarbutt, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/arrival) +"abZ" = ( +/turf/open/space, +/turf/closed/wall/shuttle{ + icon_state = "swall_f6" + }, +/area/shuttle/pod_1) +"aca" = ( +/obj/structure/grille, +/obj/structure/window/shuttle, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/pod_1) +"acb" = ( +/turf/open/space, +/turf/closed/wall/shuttle{ + icon_state = "swall_f10" + }, +/area/shuttle/pod_1) +"acc" = ( +/turf/open/space, +/turf/closed/wall/shuttle{ + icon_state = "swall_f6" + }, +/area/shuttle/pod_2) +"acd" = ( +/obj/structure/grille, +/obj/structure/window/shuttle, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/pod_2) +"ace" = ( +/turf/open/space, +/turf/closed/wall/shuttle{ + icon_state = "swall_f10" + }, +/area/shuttle/pod_2) +"acf" = ( +/obj/structure/table, +/obj/machinery/microwave, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/arrival) +"acg" = ( +/obj/structure/closet/wardrobe/grey, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/arrival) +"ach" = ( +/obj/structure/closet/wardrobe/green, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/arrival) +"aci" = ( +/obj/structure/table, +/obj/machinery/requests_console{ + department = "Arrival shuttle"; + name = "Arrivals Shuttle Requests Console"; + pixel_y = -30 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/arrival) +"acj" = ( +/turf/open/space, +/turf/closed/wall/shuttle{ + icon_state = "swall_f9" + }, +/area/shuttle/arrival) +"ack" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall3" + }, +/area/shuttle/pod_1) +"acl" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/status_display{ + pixel_x = 32 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/pod_1) +"acm" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall3" + }, +/area/shuttle/pod_2) +"acn" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/status_display{ + pixel_x = 32 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/pod_2) +"aco" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall_s5" + }, +/area/shuttle/arrival) +"acp" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall13" + }, +/area/shuttle/arrival) +"acq" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Arrivals Shuttle Airlock" + }, +/obj/docking_port/mobile{ + dwidth = 5; + height = 7; + id = "arrival"; + name = "arrival shuttle"; + travelDir = -90; + width = 15 + }, +/obj/docking_port/stationary{ + dwidth = 5; + height = 7; + id = "arrival_home"; + name = "port bay 1"; + width = 15 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/arrival) +"acr" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall_s9" + }, +/area/shuttle/arrival) +"acs" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/item/device/radio/intercom{ + pixel_x = 25 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/pod_1) +"act" = ( +/turf/closed/wall/r_wall, +/area/hallway/secondary/entry) +"acu" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/item/device/radio/intercom{ + pixel_x = 25 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/pod_2) +"acv" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"acw" = ( +/obj/machinery/door/airlock/external{ + name = "Arrivals Docking Airlock" + }, +/turf/open/floor/plating, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"acx" = ( +/turf/closed/wall, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"acy" = ( +/turf/open/floor/plating, +/obj/structure/shuttle/engine/propulsion/burst, +/turf/closed/wall/shuttle{ + icon_state = "swall_f5" + }, +/area/shuttle/pod_1) +"acz" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Escape Pod Airlock" + }, +/obj/docking_port/mobile/pod{ + id = "pod1"; + name = "escape pod 1" + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/pod_1) +"acA" = ( +/turf/open/floor/plating, +/obj/structure/shuttle/engine/propulsion/burst, +/turf/closed/wall/shuttle{ + icon_state = "swall_f9" + }, +/area/shuttle/pod_1) +"acB" = ( +/turf/closed/wall, +/area/hallway/secondary/entry) +"acC" = ( +/turf/open/floor/plating, +/obj/structure/shuttle/engine/propulsion/burst, +/turf/closed/wall/shuttle{ + icon_state = "swall_f5" + }, +/area/shuttle/pod_2) +"acD" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Escape Pod Airlock" + }, +/obj/docking_port/mobile/pod{ + id = "pod2"; + name = "escape pod 2" + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/pod_2) +"acE" = ( +/turf/open/floor/plating, +/obj/structure/shuttle/engine/propulsion/burst, +/turf/closed/wall/shuttle{ + icon_state = "swall_f9" + }, +/area/shuttle/pod_2) +"acF" = ( +/turf/open/floor/plating, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"acG" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"acH" = ( +/obj/structure/closet/emcloset, +/obj/machinery/camera{ + c_tag = "Escape Pod One"; + dir = 8 + }, +/turf/open/floor/plating, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"acI" = ( +/obj/structure/closet/emcloset, +/obj/machinery/camera{ + c_tag = "Escape Pod Two"; + dir = 8 + }, +/turf/open/floor/plating, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"acJ" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall_s6"; + dir = 2 + }, +/area/shuttle/transport) +"acK" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall12"; + dir = 2 + }, +/area/shuttle/transport) +"acL" = ( +/obj/structure/window/shuttle, +/obj/structure/grille, +/turf/open/floor/plating, +/area/shuttle/transport) +"acM" = ( +/obj/structure/grille, +/obj/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/transport) +"acN" = ( +/obj/structure/shuttle/engine/propulsion{ + icon_state = "propulsion"; + dir = 8 + }, +/turf/closed/wall/shuttle{ + icon_state = "swall_s10"; + dir = 2 + }, +/area/shuttle/transport) +"acO" = ( +/turf/closed/wall, +/area/maintenance/fpmaint) +"acP" = ( +/obj/machinery/door/airlock/external{ + name = "External Airlock"; + req_access_txt = "13" + }, +/turf/open/floor/plating{ + icon_state = "warnplate" + }, +/area/maintenance/fpmaint) +"acQ" = ( +/obj/machinery/door/airlock/external{ + desc = "Leads to one of the station's small, FTL-capable lifeboats."; + name = "Escape Pod One" + }, +/turf/open/floor/plating{ + icon_state = "warnplate" + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"acR" = ( +/obj/structure/sign/pods, +/turf/closed/wall, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"acS" = ( +/obj/machinery/door/airlock/external{ + desc = "Leads to one of the station's small, FTL-capable lifeboats."; + name = "Escape Pod Two" + }, +/turf/open/floor/plating{ + icon_state = "warnplate" + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"acT" = ( +/obj/structure/chair, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"acU" = ( +/obj/machinery/camera{ + c_tag = "Arrivals Docking" + }, +/obj/structure/chair, +/turf/open/floor/plasteel{ + icon_state = "warningcorner" + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"acV" = ( +/obj/structure/chair, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/transport) +"acW" = ( +/obj/machinery/computer/shuttle/ferry/request, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/transport) +"acX" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/transport) +"acY" = ( +/turf/open/floor/plasteel/shuttle, +/turf/closed/wall/shuttle/interior{ + icon_state = "swall_f5" + }, +/area/shuttle/transport) +"acZ" = ( +/turf/closed/wall/r_wall, +/area/maintenance/fpmaint) +"ada" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_x = -32 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/maintenance/fpmaint) +"adb" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adc" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"add" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/firealarm{ + pixel_y = 25 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"ade" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adf" = ( +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-y"; + dir = 2 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adg" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adh" = ( +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adi" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adj" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adk" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Arrivals Hallway" + }, +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 8 + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adm" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adn" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 4 + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"ado" = ( +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adp" = ( +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 8 + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adq" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adr" = ( +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 4 + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"ads" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warning" + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adt" = ( +/obj/machinery/door/airlock/external{ + name = "Arrivals Docking Airlock" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 8 + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adu" = ( +/obj/machinery/door/airlock/external{ + name = "Arrivals Docking Airlock" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adv" = ( +/obj/machinery/door/airlock/shuttle, +/obj/docking_port/mobile{ + dir = 4; + dwidth = 2; + height = 12; + id = "ferry"; + name = "ferry shuttle"; + roundstart_move = "ferry_away"; + travelDir = 180; + width = 5 + }, +/obj/docking_port/stationary{ + dir = 4; + dwidth = 2; + height = 12; + id = "ferry_home"; + name = "port bay 2"; + turf_type = /turf/open/space; + width = 5 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/transport) +"adw" = ( +/turf/open/floor/plasteel/shuttle, +/area/shuttle/transport) +"adx" = ( +/obj/machinery/door/airlock/shuttle, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/transport) +"ady" = ( +/obj/machinery/newscaster{ + dir = 8; + pixel_x = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adz" = ( +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adA" = ( +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adB" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adN" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adO" = ( +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adP" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adQ" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 4 + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adR" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 8 + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adS" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/transport) +"adT" = ( +/obj/structure/closet/crate, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/transport) +"adU" = ( +/turf/open/floor/plasteel/shuttle, +/turf/closed/wall/shuttle/interior{ + icon_state = "swall_f6" + }, +/area/shuttle/transport) +"adV" = ( +/obj/structure/shuttle/engine/propulsion{ + icon_state = "propulsion"; + dir = 8 + }, +/turf/closed/wall/shuttle{ + icon_state = "swall_s9"; + dir = 2 + }, +/area/shuttle/transport) +"adW" = ( +/obj/structure/lattice, +/turf/open/space, +/area/space) +"adX" = ( +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/maintenance/fpmaint) +"adY" = ( +/obj/machinery/vending/snack, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adZ" = ( +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aea" = ( +/obj/effect/landmark/start{ + name = "Assistant" + }, +/obj/structure/chair/comfy/beige{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeb" = ( +/obj/structure/table/wood, +/turf/open/floor/carpet, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aec" = ( +/obj/structure/table/wood, +/obj/item/device/flashlight/lamp/green, +/turf/open/floor/carpet, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aed" = ( +/obj/structure/table/wood, +/obj/item/weapon/lipstick/jade, +/turf/open/floor/carpet, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aee" = ( +/obj/structure/chair/comfy/beige{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/carpet, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aef" = ( +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeg" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/status_display{ + pixel_x = 32 + }, +/obj/machinery/camera{ + c_tag = "Arrivals Lounge"; + dir = 8; + network = list("SS13","Medbay") + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeh" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall, +/area/construction) +"aei" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/construction) +"aej" = ( +/turf/closed/wall, +/area/construction) +"aek" = ( +/obj/machinery/door/airlock/engineering{ + name = "Construction Area"; + req_access_txt = "32" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/construction) +"ael" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/construction) +"aem" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aen" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall_s5"; + dir = 2 + }, +/area/shuttle/transport) +"aeo" = ( +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aep" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/vending/cola, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeq" = ( +/turf/open/floor/carpet, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aer" = ( +/obj/structure/chair/comfy/beige{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aes" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/carpet, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aet" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeu" = ( +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aev" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/plating, +/area/construction) +"aew" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/construction) +"aex" = ( +/obj/machinery/light_switch{ + dir = 1; + pixel_y = 22 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/construction) +"aey" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/construction) +"aez" = ( +/obj/machinery/camera{ + c_tag = "Construction Area" + }, +/turf/open/floor/plasteel, +/area/construction) +"aeA" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel, +/area/construction) +"aeB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/construction) +"aeC" = ( +/obj/structure/closet/crate, +/turf/open/floor/plating, +/area/construction) +"aeD" = ( +/obj/machinery/vending/cigarette, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeE" = ( +/obj/structure/chair/comfy/beige, +/turf/open/floor/carpet, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeF" = ( +/obj/structure/chair/comfy/beige, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/carpet, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeG" = ( +/obj/item/device/radio/beacon, +/turf/open/floor/carpet, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeH" = ( +/obj/structure/chair/comfy/beige, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/carpet, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeI" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeJ" = ( +/obj/machinery/door/airlock{ + name = "Fore Emergency Storage"; + req_access_txt = "0" + }, +/turf/open/floor/plating, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeK" = ( +/obj/machinery/portable_atmospherics/canister/air, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeL" = ( +/obj/machinery/light_construct{ + dir = 8 + }, +/turf/open/floor/plating, +/area/construction) +"aeM" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plating, +/area/construction) +"aeN" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plating, +/area/construction) +"aeO" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/construction) +"aeP" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/construction) +"aeQ" = ( +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plasteel, +/area/construction) +"aeR" = ( +/turf/open/floor/plating, +/area/construction) +"aeS" = ( +/obj/machinery/light_construct{ + dir = 4 + }, +/turf/open/floor/plating, +/area/construction) +"aeT" = ( +/obj/machinery/vending/coffee, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeU" = ( +/obj/structure/table/wood, +/obj/item/weapon/reagent_containers/food/snacks/chips, +/obj/item/weapon/reagent_containers/food/drinks/soda_cans/cola, +/turf/open/floor/carpet, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeV" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/carpet, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeW" = ( +/obj/structure/table/wood, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeX" = ( +/obj/structure/table/wood, +/obj/item/weapon/storage/fancy/cigarettes, +/obj/item/weapon/lighter, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/carpet, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeY" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeZ" = ( +/obj/item/weapon/storage/box/lights/mixed, +/turf/open/floor/plating, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"afa" = ( +/obj/structure/rack, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/item/weapon/tank/internals/emergency_oxygen, +/obj/item/weapon/tank/internals/emergency_oxygen, +/turf/open/floor/plating, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"afb" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plating, +/area/construction) +"afc" = ( +/obj/effect/landmark{ + name = "blobstart" + }, +/turf/open/floor/plating, +/area/construction) +"afd" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/turf/open/floor/plating, +/area/construction) +"afe" = ( +/turf/open/floor/plasteel, +/area/construction) +"aff" = ( +/obj/structure/cable/orange{ + icon_state = "0-2"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/power/smes{ + charge = 1e+006 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"afg" = ( +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"afh" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/closed/wall, +/area/maintenance/fpmaint) +"afi" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"afj" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_access_txt = "0"; + req_one_access_txt = "1; 12; 18; 23; 32; 48" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"afk" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"afl" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"afm" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"afn" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"afo" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"afp" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=FrCH2"; + location = "Arrival" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"afq" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"afr" = ( +/obj/item/weapon/extinguisher, +/turf/open/floor/plating, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"afs" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plating, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aft" = ( +/obj/structure/closet, +/turf/open/floor/plating, +/area/construction) +"afu" = ( +/obj/structure/table, +/obj/item/device/flashlight, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/construction) +"afv" = ( +/obj/structure/rack, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/head/hardhat, +/turf/open/floor/plating, +/area/construction) +"afw" = ( +/obj/structure/closet/toolcloset, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plating, +/area/construction) +"afx" = ( +/obj/machinery/power/apc{ + name = "Construction Area APC"; + pixel_y = -24 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/construction) +"afy" = ( +/obj/machinery/light_construct, +/turf/open/floor/plating, +/area/construction) +"afz" = ( +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/construction) +"afA" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/open/floor/plasteel, +/area/construction) +"afB" = ( +/turf/closed/wall, +/area/maintenance/electrical) +"afC" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/camera{ + c_tag = "Arrivals Power Control"; + dir = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"afD" = ( +/obj/structure/cable/orange{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "E.V.A. Maintenance APC"; + pixel_x = 24 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"afE" = ( +/obj/structure/closet, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"afF" = ( +/obj/machinery/camera{ + c_tag = "Customs Desk"; + dir = 4 + }, +/obj/structure/table, +/obj/item/weapon/paper_bin, +/obj/item/weapon/pen, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"afG" = ( +/turf/open/floor/plasteel{ + icon_state = "redcorner" + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"afH" = ( +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"afI" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "redcorner" + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"afJ" = ( +/obj/structure/cable, +/obj/machinery/power/apc{ + cell_type = 5000; + name = "Arrival Shuttle Hallway APC"; + pixel_y = -24 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"afK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"afL" = ( +/turf/closed/wall/r_wall, +/area/gateway) +"afM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall, +/area/gateway) +"afN" = ( +/obj/machinery/recharge_station, +/turf/open/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/maintenance/electrical) +"afO" = ( +/obj/item/stack/rods{ + amount = 50 + }, +/obj/structure/rack, +/obj/item/stack/cable_coil{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/stack/cable_coil{ + amount = 5 + }, +/obj/item/stack/sheet/mineral/plasma{ + amount = 10; + layer = 2.9 + }, +/turf/open/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/maintenance/electrical) +"afP" = ( +/obj/machinery/power/port_gen/pacman, +/turf/open/floor/plating, +/area/maintenance/electrical) +"afQ" = ( +/turf/open/floor/plating, +/area/maintenance/electrical) +"afR" = ( +/obj/machinery/mech_bay_recharge_port, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"afS" = ( +/turf/open/floor/mech_bay_recharge_floor, +/area/maintenance/electrical) +"afT" = ( +/obj/machinery/computer/mech_bay_power_console, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/open/floor/bluegrid, +/area/maintenance/electrical) +"afU" = ( +/turf/closed/wall/r_wall, +/area/turret_protected/ai) +"afV" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/orange, +/obj/machinery/computer/monitor, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"afW" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"afX" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/engineering{ + name = "EVA Power Control and Solar Access"; + req_access_txt = "11" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"afY" = ( +/obj/structure/cable/orange{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"afZ" = ( +/turf/closed/wall, +/area/security/checkpoint) +"aga" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/checkpoint) +"agb" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/brigdoor{ + dir = 1; + name = "Arrivals Security Checkpoint"; + req_access_txt = "63" + }, +/turf/open/floor/plasteel{ + icon_state = "redfull" + }, +/area/security/checkpoint) +"agc" = ( +/obj/structure/noticeboard, +/turf/closed/wall, +/area/security/checkpoint) +"agd" = ( +/obj/machinery/door/airlock/glass{ + name = "Fore Hallway" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"age" = ( +/obj/machinery/door/airlock/glass{ + name = "Fore Hallway" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"agf" = ( +/obj/machinery/door/airlock/glass{ + name = "Fore Hallway" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"agg" = ( +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/gateway) +"agh" = ( +/obj/machinery/gateway{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 1 + }, +/area/gateway) +"agi" = ( +/obj/machinery/gateway{ + dir = 1 + }, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/gateway) +"agj" = ( +/obj/machinery/gateway{ + dir = 5 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 4 + }, +/area/gateway) +"agk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/gateway) +"agl" = ( +/obj/machinery/conveyor{ + dir = 5; + id = "Recycler" + }, +/turf/open/floor/plating{ + icon_state = "warnplatecorner" + }, +/area/maintenance/apmaint) +"agm" = ( +/obj/machinery/recycler, +/obj/machinery/conveyor{ + dir = 4; + id = "Recycler" + }, +/turf/open/floor/plating{ + icon_state = "warnplate" + }, +/area/maintenance/apmaint) +"agn" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "Recycler3" + }, +/turf/open/floor/plating{ + icon_state = "warnplate" + }, +/area/maintenance/apmaint) +"ago" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "Recycler3" + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 1 + }, +/area/maintenance/apmaint) +"agp" = ( +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/disposal/deliveryChute{ + dir = 8 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"agq" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/apmaint) +"agr" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/mine/explored) +"ags" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"agt" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"agu" = ( +/turf/open/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/maintenance/electrical) +"agv" = ( +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"agw" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Electrical Maintenance APC"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"agx" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/open/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/maintenance/electrical) +"agy" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 27; + pixel_y = 0 + }, +/turf/open/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/maintenance/electrical) +"agz" = ( +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/machinery/power/smes{ + charge = 1e+006 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"agA" = ( +/obj/machinery/power/terminal{ + dir = 8 + }, +/turf/closed/wall/r_wall, +/area/turret_protected/ai) +"agB" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"agC" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/structure/table, +/obj/machinery/recharger, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 9 + }, +/area/security/checkpoint) +"agD" = ( +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 1 + }, +/area/security/checkpoint) +"agE" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 1 + }, +/area/security/checkpoint) +"agF" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/paper_bin, +/obj/item/weapon/pen, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 1 + }, +/area/security/checkpoint) +"agG" = ( +/obj/item/device/assembly/flash/handheld, +/obj/item/weapon/crowbar/red, +/obj/structure/table/reinforced, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 5 + }, +/area/security/checkpoint) +"agH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "redcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"agI" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"agJ" = ( +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"agK" = ( +/obj/machinery/gateway{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/gateway) +"agL" = ( +/obj/machinery/gateway/centerstation, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/gateway) +"agM" = ( +/obj/machinery/gateway{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/gateway) +"agN" = ( +/obj/machinery/conveyor{ + dir = 1; + id = "Recycler" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/maintenance/apmaint) +"agO" = ( +/obj/machinery/conveyor_switch{ + id = "Recycler" + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 9 + }, +/area/maintenance/apmaint) +"agP" = ( +/obj/machinery/conveyor_switch{ + id = "Recycler3" + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 5 + }, +/area/maintenance/apmaint) +"agQ" = ( +/obj/machinery/conveyor{ + dir = 6; + id = "Recycler3" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 8 + }, +/area/maintenance/apmaint) +"agR" = ( +/obj/machinery/conveyor{ + dir = 9; + id = "Recycler3"; + verted = -1 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"agS" = ( +/turf/closed/wall, +/area/maintenance/apmaint) +"agT" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"agU" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"agV" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"agW" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"agX" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"agY" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/maintenance/electrical) +"agZ" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/maintenance/electrical) +"aha" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/maintenance/electrical) +"ahb" = ( +/obj/structure/table, +/obj/item/clothing/gloves/color/fyellow, +/obj/item/weapon/storage/toolbox/electrical{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/item/device/multitool, +/obj/item/device/radio/intercom{ + freerange = 0; + frequency = 1459; + name = "Station Intercom (General)"; + pixel_x = 29 + }, +/turf/open/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/maintenance/electrical) +"ahc" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"ahd" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"ahe" = ( +/obj/machinery/camera/motion{ + c_tag = "AI Chamber Fore" + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"ahf" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"ahg" = ( +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"ahh" = ( +/obj/structure/rack, +/obj/item/weapon/storage/fancy/cigarettes, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/landmark/costume, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ahi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ahj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ahk" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ahl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ahm" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance{ + name = "Customs Deck Maintenance"; + req_access_txt = "1" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ahn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/security/checkpoint) +"aho" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint) +"ahp" = ( +/turf/open/floor/plasteel, +/area/security/checkpoint) +"ahq" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint) +"ahr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/checkpoint) +"ahs" = ( +/obj/machinery/door/airlock/security{ + desc = "Have your documents ready."; + name = "Security Checkpoint"; + req_access = null; + req_access_txt = "1" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "redfull" + }, +/area/security/checkpoint) +"aht" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/junction, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"ahu" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/gateway) +"ahv" = ( +/obj/machinery/gateway{ + dir = 10 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 4 + }, +/area/gateway) +"ahw" = ( +/obj/machinery/gateway, +/obj/structure/cable/orange{ + icon_state = "0-2"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/gateway) +"ahx" = ( +/obj/machinery/gateway{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 1 + }, +/area/gateway) +"ahy" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/gateway) +"ahz" = ( +/obj/machinery/conveyor{ + dir = 1; + id = "Recycler" + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/maintenance/apmaint) +"ahA" = ( +/obj/structure/cable/orange{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/chair/stool, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 8 + }, +/area/maintenance/apmaint) +"ahB" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Recycler APC"; + pixel_x = 24 + }, +/obj/structure/cable/orange{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/camera{ + c_tag = "Recycler"; + dir = 8 + }, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 8 + }, +/area/maintenance/apmaint) +"ahC" = ( +/obj/machinery/conveyor{ + dir = 1; + id = "Recycler3" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"ahD" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/mine/explored) +"ahE" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"ahF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"ahG" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"ahH" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"ahI" = ( +/obj/structure/table, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/obj/item/wallframe/camera, +/obj/item/wallframe/camera, +/obj/machinery/airalarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 24 + }, +/obj/item/device/assembly/prox_sensor{ + pixel_x = -8; + pixel_y = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/maintenance/electrical) +"ahJ" = ( +/obj/machinery/porta_turret/ai{ + dir = 4 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"ahK" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"ahL" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"ahM" = ( +/obj/machinery/ai_slipper{ + icon_state = "motion0" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"ahN" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"ahO" = ( +/obj/machinery/porta_turret/ai{ + dir = 8 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"ahP" = ( +/obj/structure/closet/crate, +/obj/item/device/assembly/prox_sensor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ahQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/closet/firecloset, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ahR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/mob/living/simple_animal/mouse, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ahS" = ( +/obj/structure/cable/orange{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ahT" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ahU" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ahV" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ahW" = ( +/obj/structure/cable/orange{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "Security Checkpoint APC"; + pixel_x = 24 + }, +/turf/open/floor/plating, +/area/security/checkpoint) +"ahX" = ( +/obj/structure/closet/wardrobe/red, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 10 + }, +/area/security/checkpoint) +"ahY" = ( +/obj/machinery/computer/secure_data, +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/security/checkpoint) +"ahZ" = ( +/obj/machinery/computer/card, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/security/checkpoint) +"aia" = ( +/obj/machinery/computer/security, +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/security/checkpoint) +"aib" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/security/checkpoint) +"aic" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 6 + }, +/area/security/checkpoint) +"aid" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "redcorner"; + dir = 1 + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"aie" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/gateway) +"aif" = ( +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/gateway) +"aig" = ( +/obj/machinery/door/window{ + name = "Gateway Chamber"; + req_access_txt = "62" + }, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/gateway) +"aih" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/gateway) +"aii" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/gateway) +"aij" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 8 + }, +/area/maintenance/apmaint) +"aik" = ( +/obj/machinery/conveyor_switch{ + id = "Recycler2" + }, +/obj/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"ail" = ( +/obj/machinery/mineral/stacking_unit_console{ + machinedir = 4 + }, +/turf/closed/wall, +/area/maintenance/apmaint) +"aim" = ( +/obj/machinery/mineral/stacking_machine{ + input_dir = 2; + output_dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"ain" = ( +/obj/machinery/door/airlock/external{ + name = "External Airlock"; + req_access_txt = "13" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating{ + icon_state = "warnplate" + }, +/area/maintenance/apmaint) +"aio" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/electrical) +"aip" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/plating, +/area/maintenance/electrical) +"aiq" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/weapon/stock_parts/cell/high/plus, +/obj/item/weapon/stock_parts/cell/high/plus, +/turf/open/floor/plating, +/area/maintenance/electrical) +"air" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"ais" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"ait" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aiu" = ( +/obj/structure/cable/orange{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aiv" = ( +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aiw" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/orange{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aix" = ( +/turf/closed/wall, +/area/storage/tech) +"aiy" = ( +/turf/closed/wall/r_wall, +/area/storage/tech) +"aiz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"aiA" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"aiB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bluecorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"aiC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/gateway) +"aiD" = ( +/obj/structure/table, +/obj/structure/sign/biohazard{ + pixel_x = -32 + }, +/obj/item/weapon/storage/firstaid/regular, +/obj/machinery/camera{ + c_tag = "Gateway"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/gateway) +"aiE" = ( +/obj/structure/table, +/obj/item/weapon/paper/pamphlet, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/gateway) +"aiF" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/gateway) +"aiG" = ( +/obj/structure/table, +/obj/item/device/radio/off{ + pixel_y = 6 + }, +/obj/item/device/radio/off{ + pixel_x = 6; + pixel_y = 4 + }, +/obj/item/device/radio/off{ + pixel_x = -6; + pixel_y = 4 + }, +/obj/item/device/radio/off, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/gateway) +"aiH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/table, +/obj/machinery/recharger, +/obj/structure/sign/biohazard{ + pixel_x = 32 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/gateway) +"aiI" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/window/northright{ + dir = 8; + name = "Disposal Exit"; + req_access_txt = "12" + }, +/obj/machinery/door/window/northright{ + dir = 4; + name = "Disposal Exit"; + req_access_txt = "12" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 8 + }, +/area/maintenance/apmaint) +"aiJ" = ( +/obj/machinery/conveyor{ + dir = 5; + id = "Recycler2" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"aiK" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "Recycler2" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"aiL" = ( +/obj/machinery/conveyor{ + dir = 10; + id = "Recycler2" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"aiM" = ( +/obj/structure/rack, +/obj/item/weapon/tank/internals/emergency_oxygen, +/obj/item/clothing/mask/breath, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 8 + }, +/area/maintenance/apmaint) +"aiN" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/maintenance/apmaint) +"aiO" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 4 + }, +/area/maintenance/apmaint) +"aiP" = ( +/turf/open/floor/plating, +/area/maintenance/apmaint) +"aiQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"aiR" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"aiS" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9; + pixel_y = 0 + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"aiT" = ( +/obj/machinery/power/terminal, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"aiU" = ( +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"aiV" = ( +/obj/machinery/light_switch{ + pixel_y = -25 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/maintenance/electrical) +"aiW" = ( +/obj/machinery/power/terminal, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/maintenance/electrical) +"aiX" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 6; + on = 1; + scrub_Toxins = 0 + }, +/turf/open/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/maintenance/electrical) +"aiY" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"aiZ" = ( +/obj/effect/landmark/start{ + name = "AI" + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/machinery/button/door{ + desc = "A remote control switch for the AI chamber door."; + id = "aishutter"; + name = "AI Shutters Control"; + pixel_x = -10; + pixel_y = 25; + req_access_txt = "16" + }, +/obj/item/device/radio/intercom{ + broadcasting = 1; + canhear_range = 6; + freerange = 1; + name = "Common Channel"; + pixel_x = 32; + pixel_y = 10 + }, +/obj/machinery/requests_console{ + department = "AI"; + departmentType = 5; + name = "AI Core RC"; + pixel_x = 30; + pixel_y = 30 + }, +/obj/machinery/newscaster/security_unit{ + pixel_x = -33; + pixel_y = 33 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/turret_protected/ai) +"aja" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"ajb" = ( +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "yellow" + }, +/area/storage/tech) +"ajc" = ( +/obj/structure/rack, +/obj/item/weapon/circuitboard/pandemic{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/weapon/circuitboard/rdconsole, +/obj/item/weapon/circuitboard/rdserver{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/weapon/circuitboard/destructive_analyzer, +/obj/item/weapon/circuitboard/protolathe, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "yellow" + }, +/area/storage/tech) +"ajd" = ( +/obj/structure/rack, +/obj/item/weapon/circuitboard/robotics{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/weapon/circuitboard/mecha_control{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/machinery/camera{ + c_tag = "Secure Tool Storage"; + dir = 4 + }, +/turf/open/floor/plating, +/area/storage/tech) +"aje" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/storage/tech) +"ajf" = ( +/obj/structure/rack, +/obj/item/weapon/circuitboard/borgupload{ + pixel_x = -1; + pixel_y = 1 + }, +/obj/item/weapon/circuitboard/aiupload{ + pixel_x = 2; + pixel_y = -2 + }, +/turf/open/floor/plating, +/area/storage/tech) +"ajg" = ( +/obj/structure/rack, +/obj/item/weapon/circuitboard/message_monitor{ + pixel_y = -5 + }, +/obj/item/weapon/circuitboard/crew{ + pixel_x = -1; + pixel_y = 1 + }, +/obj/item/weapon/circuitboard/arcade/battle, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "yellow" + }, +/area/storage/tech) +"ajh" = ( +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "yellow" + }, +/area/storage/tech) +"aji" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"ajj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/orange{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"ajk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "blue" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"ajl" = ( +/obj/machinery/door/airlock/command{ + desc = "A powerful and mysterious object is housed here, and thus, ID restrictions are tight. Can be opened to the public via bridge controls."; + name = "Gateway Access"; + req_access_txt = "62" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/gateway) +"ajm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/gateway) +"ajn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/gateway) +"ajo" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/gateway) +"ajp" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/gateway) +"ajq" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/gateway) +"ajr" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 8 + }, +/area/maintenance/apmaint) +"ajs" = ( +/obj/machinery/conveyor{ + dir = 1; + id = "Recycler2" + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"ajt" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall_s6"; + dir = 2 + }, +/area/shuttle/supply) +"aju" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall12"; + dir = 2 + }, +/area/shuttle/supply) +"ajv" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall14"; + dir = 2 + }, +/area/shuttle/supply) +"ajw" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall_s10"; + dir = 2 + }, +/area/shuttle/supply) +"ajx" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"ajy" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"ajz" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"ajA" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/maintenance/electrical) +"ajB" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"ajC" = ( +/obj/machinery/power/smes{ + charge = 0 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/open/floor/plating, +/area/mine/explored) +"ajD" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/turf/closed/wall, +/area/maintenance/electrical) +"ajE" = ( +/obj/machinery/computer/monitor{ + name = "backup power monitoring console" + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/electrical) +"ajF" = ( +/obj/machinery/power/smes{ + charge = 0 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"ajG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/turret_protected/ai) +"ajH" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"ajI" = ( +/obj/machinery/ai_slipper{ + icon_state = "motion0" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"ajJ" = ( +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/item/device/radio/intercom{ + canhear_range = 6; + freerange = 1; + frequency = 1447; + name = "AI Private Channel"; + pixel_x = -30; + pixel_y = -2 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "AI Chamber APC"; + pixel_x = 0; + pixel_y = 25 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"ajK" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"ajL" = ( +/obj/item/device/radio/intercom{ + freerange = 1; + listening = 0; + name = "Custom Channel"; + pixel_x = 30; + pixel_y = -2 + }, +/obj/machinery/flasher{ + id = "AI"; + pixel_x = -4; + pixel_y = 25 + }, +/obj/machinery/turretid{ + name = "AI Chamber turret control"; + pixel_x = 4; + pixel_y = 28 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"ajM" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"ajN" = ( +/obj/structure/grille, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"ajO" = ( +/obj/structure/grille{ + density = 0; + icon_state = "brokengrille" + }, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"ajP" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ajQ" = ( +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"ajR" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ajS" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ajT" = ( +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ajU" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ajV" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/storage/tech) +"ajW" = ( +/obj/structure/rack, +/obj/item/weapon/circuitboard/cloning, +/obj/item/weapon/circuitboard/med_data{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/weapon/circuitboard/clonescanner, +/obj/item/weapon/circuitboard/clonepod, +/obj/item/weapon/circuitboard/scan_consolenew, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/storage/tech) +"ajX" = ( +/obj/machinery/door/airlock/highsecurity{ + desc = "The high-risk electronic storage area, only a few people can legally access this area."; + name = "Secure Tech Storage"; + req_access_txt = "19;23" + }, +/turf/open/floor/plating{ + icon_state = "warnplate" + }, +/area/storage/tech) +"ajY" = ( +/obj/structure/rack, +/obj/item/weapon/circuitboard/mining, +/obj/item/weapon/circuitboard/autolathe{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/weapon/circuitboard/communications{ + pixel_x = 5; + pixel_y = -5 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/storage/tech) +"ajZ" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/storage/tech) +"aka" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"akb" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "bluecorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"akc" = ( +/obj/machinery/door/poddoor/shutters{ + id = "gateshutter"; + name = "Gateway Access Shutter" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "bluecorner" + }, +/area/gateway) +"akd" = ( +/turf/open/floor/plasteel, +/area/gateway) +"ake" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/gateway) +"akf" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/cable/orange{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plasteel{ + icon_state = "warningcorner" + }, +/area/gateway) +"akg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/gateway) +"akh" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/gateway) +"aki" = ( +/obj/machinery/conveyor{ + dir = 1; + id = "Recycler2" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"akj" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"akk" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"akl" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/camera{ + c_tag = "Cargo Atmospheric Control" + }, +/obj/machinery/meter, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"akm" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"akn" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall3"; + dir = 2 + }, +/area/shuttle/supply) +"ako" = ( +/turf/open/floor/plasteel/shuttle, +/area/shuttle/supply) +"akp" = ( +/turf/open/floor/plasteel/shuttle, +/turf/closed/wall/shuttle/interior{ + icon_state = "swall_f5" + }, +/area/shuttle/supply) +"akq" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall15"; + dir = 2 + }, +/area/shuttle/supply) +"akr" = ( +/obj/structure/shuttle/engine/propulsion{ + icon_state = "propulsion"; + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/supply) +"aks" = ( +/obj/machinery/door/airlock/external{ + name = "External Airlock"; + req_access_txt = "13" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"akt" = ( +/obj/machinery/door/airlock/engineering{ + name = "Electrical Maintenance"; + req_access_txt = "11" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"aku" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'HIGH VOLTAGE'"; + icon_state = "shock"; + name = "HIGH VOLTAGE"; + pixel_y = 0 + }, +/turf/closed/wall, +/area/maintenance/electrical) +"akv" = ( +/obj/machinery/door/airlock/engineering{ + name = "Electrical Maintenance"; + req_access_txt = "11" + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"akw" = ( +/obj/effect/landmark{ + name = "tripai" + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/button/door{ + desc = "A remote control switch for the AI chamber door."; + id = "aishutter"; + name = "AI Shutters Control"; + pixel_x = 4; + pixel_y = -27; + req_access_txt = "16" + }, +/obj/machinery/turretid{ + name = "AI Chamber turret control"; + pixel_x = -8; + pixel_y = 32 + }, +/obj/machinery/flasher{ + id = "AI"; + pixel_x = 6; + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/turret_protected/ai) +"akx" = ( +/obj/machinery/door/window{ + dir = 4; + name = "AI Core Door"; + req_access_txt = "16" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"aky" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"akz" = ( +/obj/machinery/door/window{ + base_state = "right"; + dir = 8; + icon_state = "right"; + name = "AI Core Door"; + req_access_txt = "16" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"akA" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"akB" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"akC" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"akD" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"akE" = ( +/obj/effect/landmark{ + name = "tripai" + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/button/door{ + desc = "A remote control switch for the AI chamber door."; + id = "aishutter"; + name = "AI Shutters Control"; + pixel_x = -4; + pixel_y = 27; + req_access_txt = "16" + }, +/obj/machinery/turretid{ + name = "AI Chamber turret control"; + pixel_x = 8; + pixel_y = -32 + }, +/obj/machinery/flasher{ + id = "AI"; + pixel_x = -6; + pixel_y = -32 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/turret_protected/ai) +"akF" = ( +/obj/machinery/camera/motion{ + c_tag = "AI Chamber Exterior"; + dir = 4 + }, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"akG" = ( +/turf/closed/wall/r_wall, +/area/storage/eva) +"akH" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/storage/tech) +"akI" = ( +/obj/structure/rack, +/obj/item/weapon/circuitboard/secure_data{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/weapon/circuitboard/security{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/item/weapon/circuitboard/card{ + pixel_x = 2; + pixel_y = -2 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowcorner" + }, +/area/storage/tech) +"akJ" = ( +/obj/structure/table, +/obj/machinery/cell_charger{ + pixel_y = 5 + }, +/obj/item/device/multitool, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/storage/tech) +"akK" = ( +/obj/structure/table, +/obj/item/device/t_scanner, +/obj/item/device/t_scanner, +/obj/item/weapon/crowbar/red, +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 8 + }, +/area/storage/tech) +"akL" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/storage/tech) +"akM" = ( +/obj/structure/table, +/obj/item/weapon/cartridge/signal, +/obj/item/wallframe/camera, +/obj/item/wallframe/camera, +/obj/item/wallframe/camera, +/obj/item/wallframe/camera, +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 4 + }, +/area/storage/tech) +"akN" = ( +/obj/structure/table, +/obj/item/stack/cable_coil{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/stack/cable_coil, +/obj/item/weapon/stock_parts/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowcorner" + }, +/area/storage/tech) +"akO" = ( +/obj/structure/rack, +/obj/item/weapon/circuitboard/powermonitor{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/weapon/circuitboard/stationalert{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/item/weapon/circuitboard/atmos_alert{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/storage/tech) +"akP" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/storage/tech) +"akQ" = ( +/obj/machinery/door/poddoor/shutters{ + id = "gateshutter"; + name = "Gateway Access Shutter" + }, +/turf/open/floor/plasteel, +/area/gateway) +"akR" = ( +/obj/machinery/light_switch{ + pixel_x = -6; + pixel_y = -22 + }, +/obj/machinery/button/door{ + id = "gateshutter"; + name = "Gateway Shutter Control"; + pixel_x = 6; + pixel_y = -26; + req_access_txt = "19" + }, +/turf/open/floor/plasteel, +/area/gateway) +"akS" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/obj/structure/closet/emcloset, +/obj/machinery/light, +/obj/machinery/newscaster{ + hitstaken = 1; + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/gateway) +"akT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/orange, +/obj/machinery/power/apc{ + name = "Gateway APC"; + pixel_y = -24 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warning" + }, +/area/gateway) +"akU" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/obj/structure/closet/secure_closet/exile, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "warning" + }, +/area/gateway) +"akV" = ( +/obj/structure/closet/l3closet/scientist, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/gateway) +"akW" = ( +/obj/structure/disposalpipe/trunk, +/obj/structure/disposaloutlet{ + dir = 1 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/maintenance/apmaint) +"akX" = ( +/obj/structure/disposalpipe/trunk, +/obj/structure/disposaloutlet{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"akY" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Cargo Bay Maintenance APC"; + pixel_x = -24 + }, +/obj/structure/cable/orange{ + d2 = 2; + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"akZ" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"ala" = ( +/obj/machinery/atmospherics/components/binary/pump/on, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"alb" = ( +/obj/machinery/computer/atmos_alert, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"alc" = ( +/obj/structure/shuttle/engine/heater{ + icon_state = "heater"; + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/supply) +"ald" = ( +/obj/structure/closet/wardrobe/black, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"ale" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 8 + }, +/area/maintenance/apmaint) +"alf" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/maintenance/apmaint) +"alg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 4 + }, +/area/maintenance/apmaint) +"alh" = ( +/obj/machinery/door/poddoor/preopen{ + id = "maint3" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"ali" = ( +/obj/machinery/button/door{ + id = "maint3"; + name = "Blast Door Control C"; + pixel_x = 0; + pixel_y = 24; + req_access_txt = "0" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"alj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"alk" = ( +/obj/structure/grille{ + density = 0; + icon_state = "brokengrille" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9; + pixel_y = 0 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"all" = ( +/obj/machinery/door/poddoor/preopen{ + id = "maint2" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"alm" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"aln" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"alo" = ( +/obj/machinery/button/door{ + id = "maint1"; + name = "Blast Door Control A"; + pixel_x = 0; + pixel_y = 24; + req_access_txt = "0" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"alp" = ( +/obj/machinery/door/poddoor/preopen{ + id = "maint1" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"alq" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8"; + tag = "" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"alr" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"als" = ( +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"alt" = ( +/obj/machinery/door/poddoor/preopen{ + id = "aishutter"; + name = "AI core shutters" + }, +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/turret_protected/ai) +"alu" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/door/poddoor/preopen{ + id = "aishutter"; + name = "AI core shutters" + }, +/turf/open/floor/plating, +/area/turret_protected/ai) +"alv" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"alw" = ( +/obj/machinery/power/solar{ + id = "auxsolareast"; + name = "Port Auxiliary Solar Array" + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/open/floor/plasteel/airless{ + icon_state = "solarpanel" + }, +/area/solar/auxstarboard) +"alx" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/auxstarboard) +"aly" = ( +/obj/machinery/power/solar{ + id = "auxsolareast"; + name = "Port Auxiliary Solar Array" + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plasteel/airless{ + icon_state = "solarpanel" + }, +/area/solar/auxstarboard) +"alz" = ( +/turf/closed/mineral/random/low_chance, +/area/maintenance/fpmaint) +"alA" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/eva) +"alB" = ( +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/obj/machinery/suit_storage_unit/standard_unit, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/eva) +"alC" = ( +/obj/structure/cable/orange{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "Tech Storage APC"; + pixel_x = -24 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/storage/tech) +"alD" = ( +/turf/open/floor/plasteel, +/area/storage/tech) +"alE" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/storage/tech) +"alF" = ( +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel, +/area/storage/tech) +"alG" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/storage/tech) +"alH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/storage/tech) +"alI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/storage/tech) +"alJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/storage/tech) +"alK" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "cautioncorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"alL" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/landmark{ + name = "lightsout" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"alM" = ( +/obj/machinery/camera{ + c_tag = "Fore Hallway Fore"; + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"alN" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall, +/area/maintenance/apmaint) +"alO" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance{ + desc = "All disposals systems lead here. Take heed, the crusher does not discriminate junk from bodies."; + name = "Recycler Access"; + req_access_txt = "12"; + req_one_access_txt = "0" + }, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 4 + }, +/area/maintenance/apmaint) +"alP" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/closed/wall, +/area/maintenance/apmaint) +"alQ" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/door/airlock/atmos{ + name = "Cargo Atmospheric Control"; + req_access_txt = "24" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"alR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/maintenance/apmaint) +"alS" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"alT" = ( +/obj/machinery/door/poddoor/preopen{ + id = "maint3" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"alU" = ( +/obj/effect/spawner/lootdrop/maintenance, +/obj/structure/rack, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"alV" = ( +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"alW" = ( +/obj/machinery/button/door{ + id = "maint2"; + name = "Blast Door Control B"; + pixel_x = 0; + pixel_y = -24; + req_access_txt = "0" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"alX" = ( +/obj/structure/grille{ + density = 0; + icon_state = "brokengrille" + }, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"alY" = ( +/obj/machinery/door/poddoor/preopen{ + id = "maint1" + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/apmaint) +"alZ" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"ama" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/closet/firecloset, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"amb" = ( +/obj/machinery/camera/motion{ + c_tag = "AI Chamber Port"; + dir = 4 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"amc" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"amd" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"ame" = ( +/obj/machinery/camera/motion{ + c_tag = "AI Chamber Starboard"; + dir = 9 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"amf" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/auxstarboard) +"amg" = ( +/obj/machinery/button/door{ + id = "evashutter"; + name = "E.V.A. Storage Shutter Control"; + pixel_x = -26; + req_access_txt = "19" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/storage/eva) +"amh" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/storage/eva) +"ami" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"amj" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"amk" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance{ + name = "Tech Storage Maintenance"; + req_access_txt = "23" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aml" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/storage/tech) +"amm" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/storage/tech) +"amn" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/storage/tech) +"amo" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/storage/tech) +"amp" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plasteel, +/area/storage/tech) +"amq" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/storage/tech) +"amr" = ( +/obj/machinery/door/airlock/engineering{ + desc = "The high-tech storage wing, with computer and electronic equipment."; + name = "Tech Storage"; + req_access_txt = "23" + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowfull" + }, +/area/storage/tech) +"ams" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"amt" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"amu" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"amv" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_one_access_txt = "12; 31" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"amw" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"amx" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"amy" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"amz" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"amA" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"amB" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"amC" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"amD" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"amE" = ( +/obj/structure/cable/orange{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 9 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"amF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"amG" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"amH" = ( +/turf/closed/wall/r_wall, +/area/tcommsat/server) +"amI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"amJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"amK" = ( +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"amL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"amM" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/storage/eva) +"amN" = ( +/turf/open/floor/plasteel, +/area/storage/eva) +"amO" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/storage/eva) +"amP" = ( +/obj/structure/table, +/obj/item/device/aicard, +/obj/item/weapon/aiModule/reset, +/turf/open/floor/plasteel{ + icon_state = "yellow"; + dir = 10 + }, +/area/storage/tech) +"amQ" = ( +/obj/structure/table, +/obj/item/weapon/screwdriver{ + pixel_y = 16 + }, +/obj/item/weapon/wirecutters, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/storage/tech) +"amR" = ( +/obj/structure/table, +/obj/item/weapon/electronics/apc, +/obj/item/weapon/electronics/airlock, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/storage/tech) +"amS" = ( +/obj/structure/rack, +/obj/item/weapon/storage/toolbox/electrical{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/item/device/multitool, +/obj/item/clothing/glasses/meson, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/storage/tech) +"amT" = ( +/obj/machinery/vending/assist, +/obj/machinery/camera{ + c_tag = "Tech Storage"; + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/storage/tech) +"amU" = ( +/obj/structure/rack, +/obj/item/weapon/storage/toolbox/electrical{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/item/clothing/gloves/color/yellow, +/obj/item/device/multitool, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/storage/tech) +"amV" = ( +/obj/structure/table, +/obj/item/device/analyzer/plant_analyzer, +/obj/item/weapon/stock_parts/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/obj/machinery/light_switch{ + pixel_y = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/storage/tech) +"amW" = ( +/obj/structure/table, +/obj/item/device/analyzer, +/obj/item/device/healthanalyzer, +/obj/machinery/requests_console{ + department = "Tech storage"; + name = "Tech Storage Requests Console"; + pixel_y = -32 + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/storage/tech) +"amX" = ( +/obj/structure/table, +/obj/item/device/flashlight{ + pixel_x = 1; + pixel_y = 5 + }, +/obj/item/device/flashlight{ + pixel_x = 1; + pixel_y = 5 + }, +/obj/item/device/assembly/flash/handheld, +/obj/item/device/assembly/flash/handheld, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "yellow" + }, +/area/storage/tech) +"amY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"amZ" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"ana" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "Fore Hallway APC"; + pixel_x = 24 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"anb" = ( +/turf/closed/wall, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"anc" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/quartermaster/qm) +"and" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/quartermaster/office) +"ane" = ( +/obj/machinery/button/door{ + id = "QMLoaddoor"; + name = "Loading Doors"; + pixel_x = 0; + pixel_y = -24 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/supply) +"anf" = ( +/turf/open/floor/plasteel/shuttle, +/turf/closed/wall/shuttle/interior{ + icon_state = "swall_f6" + }, +/area/shuttle/supply) +"ang" = ( +/obj/machinery/telecomms/bus/preset_two, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"anh" = ( +/obj/machinery/telecomms/processor/preset_one, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"ani" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Telecommunications APC"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/open/floor/plasteel{ + icon_state = "dark"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"anj" = ( +/obj/machinery/telecomms/broadcaster/preset_left, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"ank" = ( +/obj/machinery/camera{ + c_tag = "Telecommunications Server Room" + }, +/obj/machinery/telecomms/broadcaster/preset_right, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"anl" = ( +/turf/open/floor/plasteel{ + icon_state = "dark"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"anm" = ( +/obj/machinery/telecomms/processor/preset_three, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"ann" = ( +/obj/machinery/telecomms/bus/preset_three, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"ano" = ( +/obj/item/clothing/gloves/color/rainbow, +/obj/item/clothing/head/soft/rainbow, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"anp" = ( +/obj/machinery/ai_status_display{ + pixel_y = -32 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"anq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"anr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"ans" = ( +/obj/machinery/ai_slipper{ + icon_state = "motion0" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"ant" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"anu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"anv" = ( +/obj/machinery/status_display{ + pixel_y = -32 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"anw" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"anx" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"any" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"anz" = ( +/obj/structure/closet/crate, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"anA" = ( +/obj/structure/closet, +/obj/item/device/flashlight, +/obj/item/weapon/extinguisher, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"anB" = ( +/obj/structure/cable/orange{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/storage/eva) +"anC" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/poddoor/shutters{ + id = "evashutter"; + name = "E.V.A. Storage Shutter" + }, +/turf/open/floor/plasteel{ + dir = 0; + icon_state = "blue" + }, +/area/storage/eva) +"anD" = ( +/obj/structure/cable/orange{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/orange{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/door/poddoor/shutters{ + id = "evashutter"; + name = "E.V.A. Storage Shutter" + }, +/turf/open/floor/plasteel{ + dir = 0; + icon_state = "blue" + }, +/area/storage/eva) +"anE" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/orange{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/storage/eva) +"anF" = ( +/obj/machinery/door/airlock/glass_command{ + desc = "Storage area for the station's general-purpose space suits and other critical materials. Can be opened via bridge controls in an emergency."; + name = "Standard E.V.A. Suits"; + req_access_txt = "18" + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 0; + icon_state = "blue" + }, +/area/storage/eva) +"anG" = ( +/obj/structure/cable/orange{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/storage/eva) +"anH" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"anI" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"anJ" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"anK" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall_s5"; + dir = 2 + }, +/area/shuttle/supply) +"anL" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Supply Shuttle Airlock"; + req_access_txt = "31" + }, +/turf/open/floor/plating, +/area/shuttle/supply) +"anM" = ( +/obj/machinery/door/poddoor{ + id = "QMLoaddoor"; + name = "Supply Dock Loading Door" + }, +/obj/machinery/conveyor{ + dir = 2; + id = "QMLoad" + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/supply) +"anN" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Supply Shuttle Airlock"; + req_access_txt = "31" + }, +/obj/docking_port/mobile/supply{ + dir = 1; + dwidth = 7; + width = 12 + }, +/obj/docking_port/stationary{ + dir = 1; + dwidth = 7; + height = 7; + id = "supply_home"; + name = "Cargo Bay"; + width = 12 + }, +/turf/open/floor/plating, +/area/shuttle/supply) +"anO" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall13"; + dir = 2 + }, +/area/shuttle/supply) +"anP" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall_s9"; + dir = 2 + }, +/area/shuttle/supply) +"anQ" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "dark"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"anR" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "dark"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"anS" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"anT" = ( +/obj/item/clothing/under/color/rainbow, +/obj/item/clothing/shoes/sneakers/rainbow, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"anU" = ( +/obj/machinery/light, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"anV" = ( +/turf/closed/wall/r_wall, +/area/maintenance/auxsolarstarboard) +"anW" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/auxsolarstarboard) +"anX" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"anY" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 1 + }, +/obj/machinery/camera{ + c_tag = "Mining Atmospherics Control"; + dir = 8; + network = list("SS13","Medbay") + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"anZ" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aoa" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Storage"; + req_access_txt = "12"; + req_one_access_txt = "0" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aob" = ( +/obj/structure/table/reinforced, +/obj/item/device/flashlight, +/obj/item/device/flashlight, +/obj/item/device/flashlight, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/eva) +"aoc" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "blue" + }, +/area/storage/eva) +"aod" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "blue" + }, +/area/storage/eva) +"aoe" = ( +/obj/structure/rack, +/obj/item/weapon/pickaxe{ + desc = "The pickaxe looks blunt."; + force = 5; + pixel_x = -3 + }, +/obj/item/weapon/pickaxe{ + desc = "The pickaxe looks blunt."; + force = 5; + pixel_x = 3 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "blue" + }, +/area/storage/eva) +"aof" = ( +/obj/structure/rack, +/obj/item/clothing/shoes/magboots, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/eva) +"aog" = ( +/obj/structure/grille{ + density = 0; + icon_state = "brokengrille" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aoh" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_access_txt = "0"; + req_one_access_txt = "1; 12; 18; 23; 32; 48" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aoi" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"aoj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/closet/firecloset, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"aok" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/orange, +/obj/machinery/power/apc{ + name = "Quartermaster's Office APC"; + pixel_y = -24 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"aol" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"aom" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/rack, +/obj/item/weapon/storage/toolbox/emergency, +/obj/item/clothing/mask/gas, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"aon" = ( +/obj/structure/rack, +/obj/item/weapon/extinguisher, +/obj/item/weapon/storage/belt/utility, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"aoo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/power/apc{ + name = "Cargo Bay APC"; + pixel_y = -24 + }, +/obj/structure/cable/orange, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"aop" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"aoq" = ( +/turf/closed/wall, +/area/quartermaster/office) +"aor" = ( +/obj/machinery/door/airlock/external{ + name = "Supply Dock Airlock"; + req_access_txt = "31" + }, +/turf/open/floor/plating, +/area/quartermaster/office) +"aos" = ( +/obj/machinery/conveyor{ + id = "QMLoad" + }, +/obj/machinery/door/poddoor{ + id = "QMLoaddoor"; + name = "Supply Dock Loading Door" + }, +/turf/open/floor/plating, +/area/quartermaster/office) +"aot" = ( +/turf/open/floor/plating/airless, +/area/space/nearstation) +"aou" = ( +/obj/machinery/telecomms/processor/preset_two, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"aov" = ( +/obj/machinery/telecomms/bus/preset_one, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"aow" = ( +/obj/machinery/telecomms/receiver/preset_left, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"aox" = ( +/obj/machinery/telecomms/receiver/preset_right, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"aoy" = ( +/obj/machinery/telecomms/bus/preset_four, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"aoz" = ( +/obj/machinery/telecomms/processor/preset_four, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"aoA" = ( +/obj/machinery/door/airlock/highsecurity{ + desc = "The heart of the AI, defended by autoturrets and motion alarms."; + icon_state = "door_locked"; + locked = 1; + name = "AI Chamber"; + req_access_txt = "16" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"aoB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall, +/area/turret_protected/ai) +"aoC" = ( +/obj/machinery/power/smes{ + charge = 1e+006 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/auxsolarstarboard) +"aoD" = ( +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/open/floor/plating, +/area/maintenance/auxsolarstarboard) +"aoE" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/auxsolarstarboard) +"aoF" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_x = 32 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/auxsolarstarboard) +"aoG" = ( +/obj/structure/cable, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/auxstarboard) +"aoH" = ( +/obj/machinery/computer/atmos_alert, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aoI" = ( +/obj/machinery/atmospherics/components/binary/pump/on, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aoJ" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aoK" = ( +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aoL" = ( +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aoM" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aoN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/storage/eva) +"aoO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/table/reinforced, +/obj/item/clothing/head/welding, +/obj/item/weapon/crowbar, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/eva) +"aoP" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/storage/eva) +"aoQ" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/orange{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/storage/eva) +"aoR" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/storage/eva) +"aoS" = ( +/obj/machinery/door/airlock/maintenance{ + name = "E.V.A. Maintenance"; + req_access_txt = "18"; + req_one_access_txt = "0" + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aoT" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aoU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"aoV" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"aoW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/quartermaster/office) +"aoX" = ( +/turf/closed/wall, +/area/quartermaster/qm) +"aoY" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall, +/area/quartermaster/qm) +"aoZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock/maintenance{ + name = "Cargo Bay Maintenance"; + req_access_txt = "31"; + req_one_access_txt = "5; 6; 9; 12; 22; 33; 37" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"apa" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/quartermaster/office) +"apb" = ( +/turf/open/floor/plating, +/area/quartermaster/office) +"apc" = ( +/obj/machinery/conveyor{ + id = "QMLoad" + }, +/obj/structure/plasticflaps, +/turf/open/floor/plating, +/area/quartermaster/office) +"apd" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plasteel{ + icon_state = "dark"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"ape" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "dark"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"apf" = ( +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/smes{ + charge = 1e+006 + }, +/turf/open/floor/plasteel{ + icon_state = "dark"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"apg" = ( +/obj/structure/grille{ + density = 0; + icon_state = "brokengrille" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"aph" = ( +/turf/closed/wall/r_wall, +/area/turret_protected/ai_upload) +"api" = ( +/obj/machinery/light_switch{ + dir = 1; + pixel_y = 22 + }, +/obj/machinery/porta_turret/ai, +/turf/open/floor/bluegrid, +/area/turret_protected/ai_upload) +"apj" = ( +/obj/machinery/flasher{ + id = "AI"; + pixel_x = 6; + pixel_y = 32 + }, +/obj/machinery/computer/upload/ai, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/bluegrid, +/area/turret_protected/ai_upload) +"apk" = ( +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) +"apl" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/machinery/computer/upload/borg, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/bluegrid, +/area/turret_protected/ai_upload) +"apm" = ( +/obj/structure/sign/kiddieplaque{ + pixel_x = 32 + }, +/obj/machinery/porta_turret/ai, +/turf/open/floor/bluegrid, +/area/turret_protected/ai_upload) +"apn" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/auxsolarstarboard) +"apo" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/auxsolarstarboard) +"app" = ( +/turf/open/floor/plating, +/area/maintenance/auxsolarstarboard) +"apq" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/auxsolarstarboard) +"apr" = ( +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance"; + req_access = null; + req_access_txt = "10; 13" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/auxsolarstarboard) +"aps" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/auxsolarstarboard) +"apt" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/auxstarboard) +"apu" = ( +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/auxstarboard) +"apv" = ( +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/auxstarboard) +"apw" = ( +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/auxstarboard) +"apx" = ( +/obj/machinery/power/tracker, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plasteel/airless{ + icon_state = "solarpanel" + }, +/area/solar/auxstarboard) +"apy" = ( +/turf/closed/wall, +/area/quartermaster/miningdock) +"apz" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock/atmos{ + name = "Mining Atmospheric Control"; + req_access_txt = "24" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"apA" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/closed/wall, +/area/maintenance/fpmaint) +"apB" = ( +/obj/structure/rack, +/obj/item/weapon/storage/belt/utility, +/obj/item/clothing/mask/gas, +/obj/item/weapon/storage/box/lights/mixed, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"apC" = ( +/obj/structure/table/reinforced, +/obj/item/stack/sheet/glass{ + amount = 50 + }, +/obj/item/weapon/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = -1 + }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/eva) +"apD" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/hand_labeler, +/obj/item/weapon/storage/toolbox/electrical{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/eva) +"apE" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/storage/belt/utility, +/obj/item/device/multitool, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/eva) +"apF" = ( +/obj/structure/rack, +/obj/item/weapon/tank/jetpack/carbondioxide, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/eva) +"apG" = ( +/obj/structure/rack, +/obj/item/weapon/tank/jetpack/carbondioxide, +/obj/machinery/camera{ + c_tag = "E.V.A."; + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/eva) +"apH" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"apI" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/power/apc{ + dir = 4; + name = "Vacant Office APC"; + pixel_x = 24 + }, +/obj/structure/cable/orange{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/security/vacantoffice) +"apJ" = ( +/turf/closed/wall, +/area/security/vacantoffice) +"apK" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"apL" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"apM" = ( +/obj/structure/table/reinforced, +/obj/machinery/recharger{ + pixel_y = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 9 + }, +/area/quartermaster/office) +"apN" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 1 + }, +/area/quartermaster/office) +"apO" = ( +/obj/machinery/computer/secure_data, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 5 + }, +/area/quartermaster/office) +"apP" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "brown" + }, +/area/quartermaster/qm) +"apQ" = ( +/obj/structure/closet, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/qm) +"apR" = ( +/obj/structure/closet/secure_closet/quartermaster, +/obj/machinery/requests_console{ + department = "Cargo Bay"; + departmentType = 2; + name = "Cargo Bay Requests Console"; + pixel_y = 30 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/qm) +"apS" = ( +/obj/structure/table/glass, +/obj/item/weapon/cartridge/quartermaster{ + pixel_x = 6; + pixel_y = 5 + }, +/obj/item/weapon/cartridge/quartermaster, +/obj/item/weapon/cartridge/quartermaster{ + pixel_x = -4; + pixel_y = 7 + }, +/obj/item/weapon/coin/silver, +/obj/machinery/camera{ + c_tag = "Quartermaster's Office" + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/qm) +"apT" = ( +/obj/structure/table/glass, +/obj/item/weapon/clipboard, +/obj/item/weapon/stamp/qm, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/qm) +"apU" = ( +/obj/structure/table/glass, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/pen, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "brown" + }, +/area/quartermaster/qm) +"apV" = ( +/obj/machinery/photocopier, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "brown" + }, +/area/quartermaster/office) +"apW" = ( +/obj/structure/table/glass, +/obj/item/device/toner, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "browncorner" + }, +/area/quartermaster/office) +"apX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "warningcorner" + }, +/area/quartermaster/office) +"apY" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "QMLoad" + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/quartermaster/office) +"apZ" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "QMLoad" + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/status_display{ + pixel_y = 32; + supply_display = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/quartermaster/office) +"aqa" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "QMLoad" + }, +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/quartermaster/office) +"aqb" = ( +/obj/machinery/conveyor{ + dir = 10; + id = "QMLoad" + }, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "warning" + }, +/area/quartermaster/office) +"aqc" = ( +/obj/machinery/button/door{ + id = "QMLoaddoor"; + name = "Loading Doors"; + pixel_y = 24 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warning" + }, +/area/quartermaster/office) +"aqd" = ( +/turf/open/floor/plasteel, +/area/quartermaster/office) +"aqe" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_y = 32 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"aqf" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=8"; + freq = 1400; + location = "QM #1" + }, +/mob/living/simple_animal/bot/mulebot{ + beacon_freq = 1400; + home_destination = "QM #1"; + suffix = "#1" + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/quartermaster/office) +"aqg" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=8"; + freq = 1400; + location = "QM #2" + }, +/mob/living/simple_animal/bot/mulebot{ + home_destination = "QM #2"; + suffix = "#2" + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/quartermaster/office) +"aqh" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=8"; + freq = 1400; + location = "QM #3" + }, +/mob/living/simple_animal/bot/mulebot{ + beacon_freq = 1450 + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/quartermaster/office) +"aqi" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=8"; + freq = 1400; + location = "QM #4" + }, +/mob/living/simple_animal/bot/mulebot{ + beacon_freq = 1455 + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/quartermaster/office) +"aqj" = ( +/obj/structure/cable/blue{ + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "Telecommunications Maintenance APC"; + pixel_x = -24 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"aqk" = ( +/obj/machinery/telecomms/relay/preset/station, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"aql" = ( +/obj/machinery/telecomms/hub/preset, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"aqm" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"aqn" = ( +/obj/machinery/blackbox_recorder, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"aqo" = ( +/obj/machinery/message_server, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"aqp" = ( +/obj/structure/grille, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"aqq" = ( +/obj/structure/table, +/obj/item/weapon/aiModule/core/full/antimov, +/obj/item/weapon/aiModule/reset/purge, +/obj/item/weapon/aiModule/zeroth/oneHuman, +/obj/item/weapon/aiModule/supplied/oxygen, +/obj/machinery/door/window/southleft{ + layer = 2.9; + name = "High-Risk Modules"; + req_access_txt = "20" + }, +/obj/item/weapon/aiModule/core/full/tyrant, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) +"aqr" = ( +/turf/open/floor/bluegrid, +/area/turret_protected/ai_upload) +"aqs" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/turret_protected/ai_upload) +"aqt" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/turret_protected/ai_upload) +"aqu" = ( +/obj/structure/table, +/obj/item/weapon/aiModule/core/full/corp, +/obj/item/weapon/aiModule/core/freeformcore, +/obj/item/weapon/aiModule/core/full/asimov, +/obj/machinery/door/window/southright{ + layer = 2.9; + name = "Core Modules"; + req_access_txt = "20" + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) +"aqv" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Fore Starboard Solar APC"; + pixel_x = -25; + pixel_y = 3 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/auxsolarstarboard) +"aqw" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/auxsolarstarboard) +"aqx" = ( +/obj/structure/chair/stool, +/obj/machinery/camera{ + c_tag = "Fore Starboard Solar Control"; + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/auxsolarstarboard) +"aqy" = ( +/obj/machinery/power/solar_control{ + id = "auxsolareast"; + name = "Fore Starboard Solar Control" + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/auxsolarstarboard) +"aqz" = ( +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/auxstarboard) +"aqA" = ( +/obj/structure/rack, +/obj/item/weapon/pickaxe{ + desc = "The pickaxe looks blunt."; + force = 5; + pixel_x = -3 + }, +/obj/item/weapon/pickaxe{ + desc = "The pickaxe looks blunt."; + force = 5; + pixel_x = 3 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"aqB" = ( +/obj/structure/rack, +/obj/item/weapon/shovel{ + pixel_x = 3 + }, +/obj/item/weapon/shovel{ + pixel_x = -3 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"aqC" = ( +/obj/machinery/suit_storage_unit/mining, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"aqD" = ( +/obj/machinery/suit_storage_unit/mining, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"aqE" = ( +/obj/structure/table, +/obj/item/device/mining_scanner, +/obj/item/device/mining_scanner, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"aqF" = ( +/obj/structure/table, +/obj/machinery/microwave, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"aqG" = ( +/obj/structure/table, +/obj/item/weapon/storage/box/donkpockets, +/obj/machinery/requests_console{ + department = "Mining"; + name = "Mining Requests Console"; + pixel_y = 30 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"aqH" = ( +/obj/machinery/mineral/input, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"aqI" = ( +/obj/machinery/mineral/mint, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"aqJ" = ( +/obj/machinery/mineral/output, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"aqK" = ( +/obj/structure/closet/crate, +/obj/item/clothing/suit/fire/firefighter, +/obj/item/weapon/extinguisher, +/obj/item/clothing/glasses/meson, +/obj/effect/landmark{ + name = "blobstart" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aqL" = ( +/obj/structure/table/reinforced, +/obj/item/stack/sheet/rglass{ + amount = 50 + }, +/obj/item/stack/rods{ + amount = 50 + }, +/obj/machinery/button/door{ + id = "evashutter"; + name = "E.V.A. Storage Shutter Control"; + pixel_x = -26; + req_access_txt = "19" + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/eva) +"aqM" = ( +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/obj/item/weapon/stock_parts/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/obj/item/weapon/stock_parts/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/eva) +"aqN" = ( +/obj/structure/table/reinforced, +/obj/item/device/assembly/signaler, +/obj/item/device/assembly/signaler, +/obj/item/stack/cable_coil{ + pixel_x = 3; + pixel_y = -7 + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/eva) +"aqO" = ( +/obj/structure/closet/crate/rcd, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/eva) +"aqP" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aqQ" = ( +/obj/structure/table/wood, +/obj/item/weapon/pen/red, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aqR" = ( +/obj/structure/table/wood, +/obj/item/weapon/paper, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aqS" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aqT" = ( +/obj/structure/table/wood, +/obj/item/device/flashlight/lamp/green, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aqU" = ( +/obj/machinery/newscaster{ + pixel_y = 32 + }, +/obj/structure/chair/office/dark{ + dir = 8 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aqV" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aqW" = ( +/obj/structure/table/wood, +/obj/item/weapon/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aqX" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aqY" = ( +/obj/structure/table/wood, +/obj/item/weapon/folder/red, +/obj/machinery/newscaster/security_unit{ + pixel_x = 30 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aqZ" = ( +/obj/structure/filingcabinet, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/quartermaster/office) +"ara" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/quartermaster/office) +"arb" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/qm) +"arc" = ( +/turf/open/floor/plasteel, +/area/quartermaster/qm) +"ard" = ( +/obj/structure/chair/office/light{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/quartermaster/qm) +"are" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/qm) +"arf" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/quartermaster/qm) +"arg" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/office) +"arh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 8 + }, +/area/quartermaster/office) +"ari" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/quartermaster/office) +"arj" = ( +/obj/effect/landmark/start{ + name = "Cargo Technician" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/quartermaster/office) +"ark" = ( +/obj/machinery/conveyor_switch{ + id = "QMLoad" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/quartermaster/office) +"arl" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 4 + }, +/area/quartermaster/office) +"arm" = ( +/turf/open/floor/plasteel{ + icon_state = "loadingarea" + }, +/area/quartermaster/office) +"arn" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/turf/open/floor/plasteel{ + icon_state = "loadingarea" + }, +/area/quartermaster/office) +"aro" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"arp" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/tcommsat/server) +"arq" = ( +/obj/machinery/door/airlock/glass_engineering{ + desc = "The main server room. Dangerously cold to protect the sensitive machinery."; + name = "Telecommunications Server Room"; + req_access_txt = "61" + }, +/turf/open/floor/plasteel, +/area/tcommsat/server) +"arr" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) +"ars" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai_upload) +"art" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai_upload) +"aru" = ( +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) +"arv" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai_upload) +"arw" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai_upload) +"arx" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) +"ary" = ( +/obj/machinery/door/airlock/engineering{ + name = "Fore Starboard Solar Access"; + req_access_txt = "10" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/auxsolarstarboard) +"arz" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'HIGH VOLTAGE'"; + icon_state = "shock"; + name = "HIGH VOLTAGE" + }, +/turf/closed/wall/r_wall, +/area/maintenance/auxsolarstarboard) +"arA" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/auxstarboard) +"arB" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"arC" = ( +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"arD" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"arE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"arF" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"arG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"arH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"arI" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"arJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance{ + name = "Mining Maintenance"; + req_access_txt = "48" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"arK" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"arL" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"arM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"arN" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"arO" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"arP" = ( +/obj/structure/table/reinforced, +/obj/item/stack/sheet/plasteel, +/obj/machinery/requests_console{ + department = "E.V.A."; + name = "E.V.A. Requests Console"; + pixel_x = -32 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/eva) +"arQ" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/storage/eva) +"arR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/storage/eva) +"arS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/storage/eva) +"arT" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/storage/eva) +"arU" = ( +/obj/structure/tank_dispenser/oxygen, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/eva) +"arV" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"arW" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Vacant Office Maintenance"; + req_access_txt = "32" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/security/vacantoffice) +"arX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"arY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"arZ" = ( +/turf/open/floor/wood, +/area/security/vacantoffice) +"asa" = ( +/obj/effect/landmark{ + name = "blobstart" + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"asb" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"asc" = ( +/obj/machinery/door/airlock/engineering{ + desc = "As the name suggests, this office space is available for any purpose, and currently has none."; + name = "Vacant Office"; + req_access_txt = "32" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/vacantoffice) +"asd" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/junction, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"ase" = ( +/obj/structure/closet/secure_closet/security/cargo, +/obj/machinery/camera{ + c_tag = "Cargo Security Post"; + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/quartermaster/office) +"asf" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/book/manual/wiki/security_space_law, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/quartermaster/office) +"asg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/qm) +"ash" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) +"asi" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) +"asj" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) +"ask" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/qm) +"asl" = ( +/obj/machinery/door/airlock/mining{ + desc = "The office of the station's chief Supply officer, the Quartermaster. Smells faintly of swag."; + name = "Quartermaster's Office"; + req_access_txt = "41" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/qm) +"asm" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/office) +"asn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"aso" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/quartermaster/office) +"asp" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/quartermaster/office) +"asq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/quartermaster/office) +"asr" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"ass" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"ast" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"asu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance{ + name = "Cargo Bay Maintenance"; + req_access_txt = "31"; + req_one_access_txt = "5; 6; 9; 12; 22; 33; 37" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"asv" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"asw" = ( +/obj/machinery/telecomms/server/presets/service, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"asx" = ( +/obj/machinery/telecomms/server/presets/supply, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"asy" = ( +/obj/machinery/telecomms/server/presets/science, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"asz" = ( +/obj/machinery/telecomms/server/presets/medical, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"asA" = ( +/turf/open/floor/plasteel, +/area/tcommsat/server) +"asB" = ( +/obj/machinery/telecomms/server/presets/command, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"asC" = ( +/obj/machinery/telecomms/server/presets/common, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"asD" = ( +/obj/machinery/telecomms/server/presets/security, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"asE" = ( +/obj/machinery/telecomms/server/presets/engineering, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"asF" = ( +/obj/structure/table, +/obj/item/weapon/aiModule/supplied/freeform, +/obj/item/weapon/aiModule/supplied/protectStation, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) +"asG" = ( +/obj/machinery/power/apc{ + cell_type = 5000; + name = "Upload APC"; + pixel_y = -24 + }, +/obj/structure/cable/blue{ + icon_state = "0-4"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai_upload) +"asH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai_upload) +"asI" = ( +/obj/structure/cable/blue{ + icon_state = "2-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) +"asJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/bluegrid, +/area/turret_protected/ai_upload) +"asK" = ( +/obj/machinery/camera/motion{ + c_tag = "AI Upload"; + dir = 1 + }, +/obj/item/device/radio/intercom{ + broadcasting = 1; + frequency = 1447; + name = "Private AI Channel"; + pixel_y = -25 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai_upload) +"asL" = ( +/obj/structure/table, +/obj/item/weapon/aiModule/reset, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) +"asM" = ( +/turf/closed/wall, +/area/turret_protected/ai_upload_foyer) +"asN" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"asO" = ( +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"asP" = ( +/turf/closed/wall, +/area/maintenance/disposal) +"asQ" = ( +/obj/structure/ore_box, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"asR" = ( +/obj/structure/table, +/obj/item/weapon/storage/bag/ore{ + pixel_y = 3 + }, +/obj/item/weapon/storage/bag/ore{ + pixel_x = -3 + }, +/obj/machinery/status_display{ + pixel_x = -32 + }, +/obj/machinery/camera{ + c_tag = "Mining Equipment Room"; + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"asS" = ( +/obj/effect/landmark/start{ + name = "Shaft Miner" + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"asT" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"asU" = ( +/obj/machinery/door/airlock/glass_mining{ + desc = "Storage of the Company's specialized mining gear."; + name = "Mining Equipment Room"; + req_access_txt = "54" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"asV" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"asW" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"asX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"asY" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen"; + opened = 1 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"asZ" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Mining APC"; + pixel_x = -24 + }, +/obj/structure/cable/orange{ + d2 = 4; + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"ata" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 5 + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"atb" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"atc" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"atd" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ate" = ( +/obj/structure/cable/orange, +/obj/machinery/power/apc{ + dir = 4; + name = "EVA APC"; + pixel_x = 24 + }, +/turf/open/floor/plating, +/area/storage/eva) +"atf" = ( +/obj/structure/table/reinforced, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/eva) +"atg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/storage/eva) +"ath" = ( +/obj/structure/table/reinforced, +/obj/item/device/radio/off, +/obj/item/device/radio/off, +/obj/item/device/assembly/prox_sensor, +/obj/item/device/assembly/prox_sensor, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/eva) +"ati" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"atj" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/carpet, +/area/security/vacantoffice) +"atk" = ( +/obj/structure/table/wood, +/obj/item/device/flashlight/lamp/green{ + pixel_x = 1; + pixel_y = 5 + }, +/turf/open/floor/carpet, +/area/security/vacantoffice) +"atl" = ( +/obj/structure/table/wood, +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/carpet, +/area/security/vacantoffice) +"atm" = ( +/obj/structure/chair/office/dark{ + dir = 8 + }, +/turf/open/floor/carpet, +/area/security/vacantoffice) +"atn" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/obj/structure/chair/office/dark, +/turf/open/floor/wood, +/area/security/vacantoffice) +"ato" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"atp" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"atq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/security/vacantoffice) +"atr" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"ats" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/obj/item/weapon/pen, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 10 + }, +/area/quartermaster/office) +"att" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/quartermaster/office) +"atu" = ( +/obj/structure/reagent_dispensers/peppertank{ + pixel_x = 30 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 6 + }, +/area/quartermaster/office) +"atv" = ( +/obj/effect/landmark/start{ + name = "Quartermaster" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/chair, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "brown" + }, +/area/quartermaster/qm) +"atw" = ( +/obj/machinery/computer/cargo, +/turf/open/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/qm) +"atx" = ( +/obj/machinery/photocopier, +/obj/machinery/light, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/qm) +"aty" = ( +/turf/open/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/qm) +"atz" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/qm) +"atA" = ( +/obj/structure/filingcabinet, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "brown" + }, +/area/quartermaster/qm) +"atB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"atC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"atD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"atE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "browncorner" + }, +/area/quartermaster/office) +"atF" = ( +/obj/structure/closet/wardrobe/cargotech, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/office) +"atG" = ( +/obj/structure/closet/wardrobe/cargotech, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Cargo Loading Dock"; + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/office) +"atH" = ( +/obj/structure/closet/wardrobe/cargotech, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "browncorner" + }, +/area/quartermaster/office) +"atI" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"atJ" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"atK" = ( +/obj/machinery/button/door{ + id = "qm_warehouse"; + name = "Warehouse Door Control"; + pixel_y = -24; + req_access_txt = "50" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"atL" = ( +/obj/structure/table/glass, +/obj/machinery/cell_charger, +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"atM" = ( +/obj/structure/table/glass, +/obj/item/device/taperecorder/empty, +/obj/item/device/tape/random, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"atN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"atO" = ( +/turf/closed/wall/r_wall, +/area/tcommsat/computer) +"atP" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/tcommsat/computer) +"atQ" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating{ + icon_state = "warnplatecorner" + }, +/area/tcommsat/computer) +"atR" = ( +/obj/machinery/door/airlock/glass_engineering{ + desc = "The main server room. Dangerously cold to protect the sensitive machinery."; + name = "Telecommunications Server Room"; + req_access_txt = "61" + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/tcommsat/computer) +"atS" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 1 + }, +/area/tcommsat/computer) +"atT" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating{ + icon_state = "warnplate" + }, +/area/tcommsat/computer) +"atU" = ( +/turf/closed/wall/r_wall, +/area/turret_protected/ai_upload_foyer) +"atV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/porta_turret/ai{ + dir = 1 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai_upload) +"atW" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) +"atX" = ( +/obj/machinery/porta_turret/ai{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/bluegrid, +/area/turret_protected/ai_upload) +"atY" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"atZ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"aua" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"aub" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"auc" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"aud" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"aue" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"auf" = ( +/obj/structure/closet/emcloset, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"aug" = ( +/turf/closed/wall, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"auh" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_access_txt = "0"; + req_one_access_txt = "1; 12; 18; 23; 32; 48" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aui" = ( +/obj/machinery/door/poddoor/shutters{ + id = "evashutter"; + name = "E.V.A. Storage Shutter" + }, +/turf/open/floor/plasteel{ + dir = 0; + icon_state = "blue" + }, +/area/storage/eva) +"auj" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/door/poddoor/shutters{ + id = "evashutter"; + name = "E.V.A. Storage Shutter" + }, +/turf/open/floor/plasteel{ + dir = 0; + icon_state = "blue" + }, +/area/storage/eva) +"auk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/orange{ + d2 = 8; + icon_state = "0-8" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/storage/eva) +"aul" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/glass_command{ + desc = "Storage area for the station's general-purpose space suits and other critical materials. Can be opened via bridge controls in an emergency."; + name = "E.V.A."; + req_access_txt = "18" + }, +/turf/open/floor/plasteel{ + dir = 0; + icon_state = "blue" + }, +/area/storage/eva) +"aum" = ( +/obj/structure/cable/orange{ + d2 = 8; + icon_state = "0-8" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/storage/eva) +"aun" = ( +/obj/structure/cable/orange, +/obj/machinery/power/apc{ + name = "Tool Storage APC"; + pixel_y = -24 + }, +/turf/open/floor/plating, +/area/storage/primary{ + name = "Tool Storage" + }) +"auo" = ( +/turf/open/floor/carpet, +/area/security/vacantoffice) +"aup" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/security/vacantoffice) +"auq" = ( +/obj/structure/table/wood, +/obj/item/weapon/folder/blue, +/turf/open/floor/carpet, +/area/security/vacantoffice) +"aur" = ( +/obj/machinery/light, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aus" = ( +/obj/structure/table/wood, +/obj/item/weapon/folder/white, +/obj/machinery/camera{ + c_tag = "Vacant Office"; + dir = 1 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aut" = ( +/obj/structure/table/wood, +/obj/item/weapon/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/obj/machinery/newscaster{ + pixel_y = -32 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"auu" = ( +/obj/structure/table/wood, +/obj/item/device/flashlight/lamp/green{ + pixel_x = 1; + pixel_y = 5 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"auv" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"auw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/airlock/glass{ + name = "Fore Hallway" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"aux" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/glass{ + name = "Fore Hallway" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"auy" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/door/airlock/glass{ + name = "Fore Hallway" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"auz" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/quartermaster/office) +"auA" = ( +/obj/machinery/door/airlock/glass_security{ + desc = "The guardpost for the Cargo Bay. High turnover rate due to allegations of corruption, bribery, and weapons trafficking."; + name = "Security Post"; + req_access_txt = "63" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 1 + }, +/area/quartermaster/office) +"auB" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/northleft{ + name = "Quartermaster Desk"; + req_access_txt = "41" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/qm) +"auC" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/quartermaster/qm) +"auD" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/quartermaster/qm) +"auE" = ( +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/quartermaster/office) +"auF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/landmark/start{ + name = "Cargo Technician" + }, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/quartermaster/office) +"auG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/quartermaster/office) +"auH" = ( +/obj/structure/table/glass, +/obj/item/weapon/folder/yellow, +/obj/item/device/multitool, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 29 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/office) +"auI" = ( +/obj/machinery/door/poddoor/shutters{ + id = "qm_warehouse"; + name = "Warehouse Shutters" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/quartermaster/office) +"auJ" = ( +/obj/machinery/door/poddoor/shutters{ + id = "qm_warehouse"; + name = "Warehouse Shutters" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/quartermaster/office) +"auK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/grille, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"auL" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Telecommunications Control APC"; + pixel_x = 24 + }, +/obj/structure/cable/blue{ + icon_state = "0-2" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/tcommsat/computer) +"auM" = ( +/obj/machinery/computer/message_monitor, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowcorner" + }, +/area/tcommsat/computer) +"auN" = ( +/obj/machinery/computer/telecomms/monitor{ + network = "tcommsat" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/tcommsat/computer) +"auO" = ( +/obj/machinery/computer/telecomms/server{ + network = "tcommsat" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/tcommsat/computer) +"auP" = ( +/obj/structure/table, +/obj/item/weapon/paper/monitorkey, +/obj/item/device/multitool, +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 8 + }, +/area/tcommsat/computer) +"auQ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/tcommsat/computer) +"auR" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 4 + }, +/area/tcommsat/computer) +"auS" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/tcommsat/computer) +"auT" = ( +/obj/structure/table/glass, +/obj/item/weapon/stock_parts/subspace/ansible, +/obj/item/weapon/stock_parts/subspace/ansible, +/obj/item/weapon/stock_parts/subspace/ansible, +/obj/item/weapon/stock_parts/subspace/crystal, +/obj/item/weapon/stock_parts/subspace/crystal, +/obj/item/weapon/stock_parts/subspace/crystal, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "warning" + }, +/area/tcommsat/computer) +"auU" = ( +/obj/structure/table/glass, +/obj/item/weapon/stock_parts/subspace/transmitter, +/obj/item/weapon/stock_parts/subspace/transmitter, +/obj/item/weapon/stock_parts/subspace/amplifier, +/obj/item/weapon/stock_parts/subspace/amplifier, +/obj/item/weapon/stock_parts/subspace/amplifier, +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/tcommsat/computer) +"auV" = ( +/obj/structure/table/glass, +/obj/item/weapon/stock_parts/subspace/analyzer, +/obj/item/weapon/stock_parts/subspace/analyzer, +/obj/item/weapon/stock_parts/subspace/analyzer, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "warning" + }, +/area/tcommsat/computer) +"auW" = ( +/obj/machinery/computer/station_alert, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"auX" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"auY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/turret_protected/ai_upload) +"auZ" = ( +/obj/machinery/door/airlock/highsecurity{ + desc = "Byond this door lies the AI's Upload and Core areas, defended by autoturrets. Few are ever allowed inside."; + icon_state = "door_locked"; + locked = 1; + name = "AI Upload"; + req_access_txt = "16" + }, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) +"ava" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall, +/area/turret_protected/ai_upload) +"avb" = ( +/obj/machinery/computer/aifixer, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"avc" = ( +/obj/structure/table, +/obj/item/weapon/phone, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"avd" = ( +/obj/effect/spawner/lootdrop/maintenance, +/obj/structure/rack, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"ave" = ( +/obj/structure/closet/secure_closet/miner, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"avf" = ( +/obj/structure/closet/secure_closet/miner, +/turf/open/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"avg" = ( +/turf/open/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"avh" = ( +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"avi" = ( +/obj/machinery/mineral/equipment_vendor, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"avj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"avk" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"avl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/machinery/camera{ + c_tag = "Mining North"; + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "browncorner"; + dir = 4 + }, +/area/quartermaster/miningdock) +"avm" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "browncorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"avn" = ( +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"avo" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"avp" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"avq" = ( +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"avr" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"avs" = ( +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"avt" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/light_switch{ + dir = 1; + pixel_y = 22 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"avu" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"avv" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/sign/electricshock{ + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "bluecorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"avw" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "blue" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"avx" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "blue" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"avy" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "blue" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"avz" = ( +/turf/closed/wall, +/area/storage/primary{ + name = "Tool Storage" + }) +"avA" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Tool Storage Maintenance"; + req_access_txt = "12" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"avB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/camera{ + c_tag = "Fore Hallway Aft"; + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"avC" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"avD" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "browncorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"avE" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"avF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"avG" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"avH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"avI" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "loadingarea" + }, +/area/quartermaster/office) +"avJ" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "packageExternal" + }, +/obj/structure/plasticflaps, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/office) +"avK" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "packageExternal" + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "brown" + }, +/area/quartermaster/office) +"avL" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/office) +"avM" = ( +/obj/structure/table/glass, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/machinery/status_display{ + pixel_y = 32; + supply_display = 1 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/office) +"avN" = ( +/obj/structure/filingcabinet/filingcabinet, +/obj/machinery/requests_console{ + department = "Cargo Bay"; + departmentType = 2; + name = "Cargo Bay Requests Console"; + pixel_y = 30 + }, +/obj/machinery/camera{ + c_tag = "Cargo Port" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/office) +"avO" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "browncorner" + }, +/area/quartermaster/office) +"avP" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"avQ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"avR" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/firstaid/regular, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/newscaster{ + pixel_x = 32 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/office) +"avS" = ( +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"avT" = ( +/turf/open/floor/plasteel{ + icon_state = "warndarkcorners"; + dir = 8 + }, +/area/quartermaster/office) +"avU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "warndark"; + dir = 1 + }, +/area/quartermaster/office) +"avV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "warndark"; + dir = 1 + }, +/area/quartermaster/office) +"avW" = ( +/obj/machinery/button/door{ + id = "qm_warehouse"; + name = "Warehouse Door Control"; + pixel_y = 24; + req_access_txt = "50" + }, +/turf/open/floor/plasteel{ + icon_state = "warndarkcorners"; + dir = 4 + }, +/area/quartermaster/office) +"avX" = ( +/obj/machinery/status_display{ + pixel_y = 32; + supply_display = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"avY" = ( +/obj/structure/closet, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"avZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/structure/reagent_dispensers/fueltank, +/obj/structure/cable/blue{ + icon_state = "1-4"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"awa" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "2-8"; + d1 = 1; + d2 = 2 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"awb" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Telecommunications Maintenance"; + req_access_txt = "61" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"awc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"awd" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"awe" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"awf" = ( +/obj/machinery/door/airlock/glass_engineering{ + desc = "The control facility for station telecomms, where a variety of functions can be changed."; + name = "Telecommunications Control"; + req_access_txt = "61" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"awg" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"awh" = ( +/obj/machinery/door/airlock/glass_engineering{ + desc = "The secured storage area for highly valuable comms equipment."; + name = "Telecommunications Storage"; + req_access_txt = "61" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warning" + }, +/area/tcommsat/computer) +"awi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warning" + }, +/area/tcommsat/computer) +"awj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"awk" = ( +/obj/structure/table/glass, +/obj/item/weapon/stock_parts/subspace/treatment, +/obj/item/weapon/stock_parts/subspace/treatment, +/obj/item/weapon/stock_parts/subspace/treatment, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warning" + }, +/area/tcommsat/computer) +"awl" = ( +/obj/machinery/computer/message_monitor, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"awm" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"awn" = ( +/obj/machinery/door/airlock/highsecurity{ + desc = "A small monitoring station to allow the AI to keep tabs on the crew and (usually) help."; + name = "AI Monitoring Station"; + req_access_txt = "16" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"awo" = ( +/obj/machinery/turretid{ + control_area = "AI Upload Chamber"; + name = "AI Upload turret control"; + pixel_x = 8; + pixel_y = 24 + }, +/obj/item/device/radio/intercom{ + broadcasting = 1; + frequency = 1447; + name = "Private AI Channel"; + pixel_x = -8; + pixel_y = 22 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"awp" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"awq" = ( +/obj/machinery/camera/motion{ + c_tag = "AI Upload Foyer" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"awr" = ( +/obj/machinery/door/airlock/highsecurity{ + desc = "A small maintenance area to allow the AI to be repaired in case of damage, and for its borgs to recharge."; + name = "AI Maintenance Control"; + req_access_txt = "16" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"aws" = ( +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"awt" = ( +/obj/machinery/camera{ + c_tag = "AI Maintenance Control"; + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"awu" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/auxstarboard) +"awv" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/airless, +/area/quartermaster/miningdock) +"aww" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"awx" = ( +/obj/machinery/door/airlock/glass_mining{ + desc = "Storage of the Company's specialized mining gear."; + name = "Mining Equipment Room"; + req_access_txt = "54" + }, +/turf/open/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"awy" = ( +/obj/machinery/mineral/equipment_vendor, +/obj/machinery/status_display{ + pixel_x = -32 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"awz" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"awA" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"awB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"awC" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"awD" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"awE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"awF" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/camera{ + c_tag = "Port Central Hallway Starboard"; + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"awG" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/obj/machinery/requests_console{ + department = "Tool Storage"; + name = "Tool Storage Requests Console"; + pixel_y = 30 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"awH" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"awI" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"awJ" = ( +/obj/machinery/vending/assist, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"awK" = ( +/obj/structure/table, +/obj/item/weapon/wirecutters, +/obj/item/device/flashlight{ + pixel_x = 1; + pixel_y = 5 + }, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"awL" = ( +/obj/structure/table, +/obj/item/device/t_scanner, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"awM" = ( +/obj/structure/table, +/obj/item/device/assembly/igniter{ + pixel_x = -8; + pixel_y = -4 + }, +/obj/item/device/assembly/igniter, +/obj/item/weapon/screwdriver{ + pixel_y = 16 + }, +/obj/machinery/camera{ + c_tag = "Tool Storage" + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"awN" = ( +/obj/structure/table, +/obj/item/device/assembly/signaler, +/obj/item/device/assembly/signaler, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/obj/item/device/multitool, +/obj/item/device/multitool{ + pixel_x = 4 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"awO" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/weapon/stock_parts/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/obj/machinery/light_switch{ + dir = 1; + pixel_y = 22 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"awP" = ( +/obj/structure/table, +/obj/item/weapon/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = -1 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"awQ" = ( +/obj/structure/table, +/obj/item/stack/cable_coil{ + pixel_x = 2; + pixel_y = -2 + }, +/obj/item/stack/cable_coil{ + pixel_x = 3; + pixel_y = -7 + }, +/obj/item/weapon/screwdriver{ + pixel_y = 16 + }, +/obj/item/weapon/stock_parts/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"awR" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"awS" = ( +/obj/machinery/vending/tool, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/primary{ + name = "Tool Storage" + }) +"awT" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/storage/primary{ + name = "Tool Storage" + }) +"awU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"awV" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"awW" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"awX" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"awY" = ( +/obj/machinery/computer/cargo/request, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"awZ" = ( +/obj/machinery/conveyor_switch/oneway{ + convdir = -1; + id = "packageExternal" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/office) +"axa" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"axb" = ( +/obj/machinery/hologram/holopad, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"axc" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"axd" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/quartermaster/office) +"axe" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/quartermaster/office) +"axf" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/quartermaster/office) +"axg" = ( +/obj/effect/landmark/start{ + name = "Cargo Technician" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"axh" = ( +/obj/structure/table/glass, +/obj/item/weapon/folder/yellow, +/obj/item/clothing/head/soft, +/obj/item/clothing/head/soft, +/obj/machinery/camera{ + c_tag = "Cargo Starboard"; + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/office) +"axi" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/quartermaster/office) +"axj" = ( +/obj/structure/closet/crate/freezer, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"axk" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"axl" = ( +/obj/structure/closet/crate/hydroponics, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"axm" = ( +/obj/structure/closet/crate, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"axn" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"axo" = ( +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"axp" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"axq" = ( +/obj/item/device/radio/intercom{ + dir = 8; + freerange = 1; + name = "Station Intercom (Telecoms)"; + pixel_x = -30 + }, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"axr" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Telecoms Admin"; + departmentType = 5; + name = "Telecoms Requests Console"; + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"axs" = ( +/obj/machinery/light/small, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"axt" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel{ + icon_state = "yellowcorner" + }, +/area/tcommsat/computer) +"axu" = ( +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/tcommsat/computer) +"axv" = ( +/obj/machinery/disposal/bin, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/obj/structure/disposalpipe/trunk, +/obj/machinery/camera{ + c_tag = "Telecommunications"; + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellowcorner" + }, +/area/tcommsat/computer) +"axw" = ( +/obj/structure/rack, +/obj/item/weapon/circuitboard/telecomms/processor, +/obj/item/weapon/circuitboard/telecomms/processor, +/obj/item/weapon/circuitboard/telecomms/receiver, +/obj/item/weapon/circuitboard/telecomms/server, +/obj/item/weapon/circuitboard/telecomms/server, +/obj/item/weapon/circuitboard/telecomms/bus, +/obj/item/weapon/circuitboard/telecomms/bus, +/obj/item/weapon/circuitboard/telecomms/broadcaster, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "warning" + }, +/area/tcommsat/computer) +"axx" = ( +/obj/structure/table/glass, +/obj/item/weapon/stock_parts/micro_laser, +/obj/item/weapon/stock_parts/manipulator, +/obj/item/weapon/stock_parts/manipulator, +/obj/item/weapon/stock_parts/manipulator, +/obj/item/weapon/stock_parts/manipulator, +/obj/item/weapon/stock_parts/capacitor, +/obj/item/weapon/stock_parts/micro_laser/high, +/obj/item/weapon/stock_parts/micro_laser/high, +/obj/item/weapon/stock_parts/micro_laser/high, +/obj/item/weapon/stock_parts/micro_laser/high, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/tcommsat/computer) +"axy" = ( +/obj/structure/table/glass, +/obj/item/weapon/stock_parts/subspace/filter, +/obj/item/weapon/stock_parts/subspace/filter, +/obj/item/weapon/stock_parts/subspace/filter, +/obj/item/weapon/stock_parts/subspace/filter, +/obj/item/weapon/stock_parts/subspace/filter, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "warning" + }, +/area/tcommsat/computer) +"axz" = ( +/obj/structure/grille{ + density = 0; + icon_state = "brokengrille" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"axA" = ( +/obj/machinery/computer/crew, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"axB" = ( +/obj/machinery/camera{ + c_tag = "AI Monitoring Station"; + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"axC" = ( +/obj/effect/landmark/start{ + name = "Cyborg" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "AI Upload Access APC"; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_y = -22 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/blue{ + icon_state = "0-4"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"axD" = ( +/obj/effect/landmark/start{ + name = "Cyborg" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/blue{ + icon_state = "2-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"axE" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/obj/effect/landmark/start{ + name = "Cyborg" + }, +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"axF" = ( +/obj/machinery/recharge_station, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"axG" = ( +/obj/structure/cable/blue{ + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "Disposal APC"; + pixel_x = -24 + }, +/turf/open/floor/plating, +/area/maintenance/disposal) +"axH" = ( +/obj/machinery/conveyor_switch{ + id = "Disposal" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/disposal) +"axI" = ( +/obj/machinery/button/massdriver{ + id = "trash"; + pixel_x = 6; + pixel_y = 24 + }, +/obj/structure/chair/stool, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/maintenance/disposal) +"axJ" = ( +/obj/structure/table, +/obj/item/device/gps/mining, +/obj/item/device/gps/mining, +/obj/item/device/gps/mining, +/obj/item/device/gps/mining, +/obj/item/clothing/glasses/meson, +/obj/item/clothing/glasses/meson, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"axK" = ( +/obj/structure/table, +/obj/item/weapon/storage/toolbox/emergency, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"axL" = ( +/obj/structure/tank_dispenser/oxygen, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"axM" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"axN" = ( +/obj/machinery/recharge_station, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"axO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "loadingarea" + }, +/area/quartermaster/miningdock) +"axP" = ( +/obj/machinery/mineral/ore_redemption{ + input_dir = 8; + output_dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"axQ" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"axR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"axS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"axT" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"axU" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"axV" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"axW" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"axX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"axY" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"axZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"aya" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"ayb" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"ayc" = ( +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"ayd" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aye" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"ayf" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"ayg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/office) +"ayh" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"ayi" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"ayj" = ( +/obj/machinery/door/window/eastright{ + name = "Cargo Front Desk"; + req_access_txt = "50" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/structure/table/reinforced, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/office) +"ayk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Cargo Technician" + }, +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/office) +"ayl" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"aym" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"ayn" = ( +/obj/structure/table/glass, +/obj/item/weapon/hand_labeler, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/office) +"ayo" = ( +/obj/structure/closet/crate/internals, +/obj/machinery/camera{ + c_tag = "Cargo Warehouse'"; + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"ayp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"ayq" = ( +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"ayr" = ( +/obj/structure/closet/crate, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"ays" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_one_access_txt = "12; 31; 61" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"ayt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/tcommsat/computer) +"ayu" = ( +/obj/machinery/door/airlock/engineering{ + desc = "The nerve center of all station communications. Locked except to Engineering staff."; + name = "Telecommunications"; + req_access_txt = "61" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowfull" + }, +/area/tcommsat/computer) +"ayv" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall/r_wall, +/area/tcommsat/computer) +"ayw" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_one_access_txt = "12; 31; 61" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"ayx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/maintenance/apmaint) +"ayy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/closed/wall/r_wall, +/area/turret_protected/ai_upload_foyer) +"ayz" = ( +/obj/machinery/ai_status_display, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/closed/wall/r_wall, +/area/turret_protected/ai_upload_foyer) +"ayA" = ( +/obj/machinery/door/airlock/highsecurity{ + desc = "The main area for the facility's hyper-advanced AI. A highly restricted area."; + name = "AI Upload Foyer"; + req_access_txt = "19" + }, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"ayB" = ( +/obj/machinery/ai_status_display, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9; + pixel_y = 0 + }, +/turf/closed/wall/r_wall, +/area/turret_protected/ai_upload_foyer) +"ayC" = ( +/obj/structure/cable/blue{ + icon_state = "2-4"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"ayD" = ( +/obj/machinery/door/airlock/maintenance{ + desc = "All disposals systems lead here. Take heed, the crusher does not discriminate junk from bodies."; + name = "Disposal Access"; + req_access_txt = "12"; + req_one_access_txt = "0" + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/disposal) +"ayE" = ( +/obj/structure/cable/blue{ + icon_state = "1-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plating{ + icon_state = "warnplatecorner" + }, +/area/maintenance/disposal) +"ayF" = ( +/obj/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplate" + }, +/area/maintenance/disposal) +"ayG" = ( +/obj/structure/window/reinforced, +/obj/machinery/door/window/northright{ + dir = 4; + name = "Disposal Exit"; + req_access_txt = "12" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 6 + }, +/area/maintenance/disposal) +"ayH" = ( +/obj/machinery/mass_driver{ + dir = 4; + id = "trash" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 8 + }, +/area/maintenance/disposal) +"ayI" = ( +/obj/machinery/door/poddoor{ + id = "trash"; + name = "Disposal External Door" + }, +/turf/open/floor/plating, +/area/maintenance/disposal) +"ayJ" = ( +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/mine/explored) +"ayK" = ( +/obj/machinery/door/airlock/external{ + name = "Mining External Airlock"; + req_access_txt = "54" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"ayL" = ( +/obj/machinery/door/airlock/external{ + name = "Mining External Airlock"; + req_access_txt = "54" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"ayM" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/obj/effect/landmark/start{ + name = "Shaft Miner" + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"ayN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/glass_mining{ + desc = "Storage of the Company's specialized mining gear."; + name = "Mining E.V.A."; + req_access_txt = "54" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"ayO" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"ayP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"ayQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"ayR" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"ayS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"ayT" = ( +/obj/machinery/door/airlock/glass{ + desc = "The primary storage area for tools aboard the station. Any spaceman knows this place by heart."; + name = "Tool Storage" + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"ayU" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"ayV" = ( +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/storage/primary{ + name = "Tool Storage" + }) +"ayW" = ( +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"ayX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/storage/primary{ + name = "Tool Storage" + }) +"ayY" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"ayZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"aza" = ( +/obj/machinery/door/airlock/glass{ + desc = "The primary storage area for tools aboard the station. Any spaceman knows this place by heart."; + name = "Tool Storage" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"azb" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"azc" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/office) +"azd" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"aze" = ( +/obj/machinery/computer/cargo, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "browncorner" + }, +/area/quartermaster/office) +"azf" = ( +/obj/item/weapon/stamp, +/obj/item/weapon/stamp/denied{ + force = 15; + pixel_x = 3; + pixel_y = 2 + }, +/obj/structure/table/glass, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"azg" = ( +/obj/structure/table/glass, +/obj/item/weapon/hand_labeler, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"azh" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"azi" = ( +/obj/effect/landmark/start{ + name = "Cargo Technician" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"azj" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"azk" = ( +/obj/machinery/light_switch{ + pixel_y = -22 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "browncorner" + }, +/area/quartermaster/office) +"azl" = ( +/obj/machinery/status_display{ + pixel_y = -32 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/office) +"azm" = ( +/obj/machinery/autolathe, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "brown" + }, +/area/quartermaster/office) +"azn" = ( +/obj/structure/closet/crate, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"azo" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azp" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "1-4"; + d1 = 1; + d2 = 2 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azs" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azt" = ( +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azv" = ( +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azx" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azB" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azC" = ( +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "caution" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azD" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "caution" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azE" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/obj/structure/cable/blue{ + icon_state = "2-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azG" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/closed/wall, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azH" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"azI" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"azJ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"azK" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"azL" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/disposal) +"azM" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/maintenance/disposal) +"azN" = ( +/obj/structure/disposaloutlet{ + dir = 4 + }, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 9 + }, +/area/maintenance/disposal) +"azO" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "Disposal" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/maintenance/disposal) +"azP" = ( +/obj/machinery/conveyor{ + dir = 10; + id = "Disposal" + }, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 4 + }, +/area/maintenance/disposal) +"azQ" = ( +/obj/machinery/light/small, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"azR" = ( +/obj/structure/ore_box, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"azS" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"azT" = ( +/obj/machinery/mech_bay_recharge_port, +/turf/open/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"azU" = ( +/obj/machinery/camera{ + c_tag = "Mining E.V.A."; + dir = 1 + }, +/obj/machinery/light, +/turf/open/floor/mech_bay_recharge_floor, +/area/quartermaster/miningdock) +"azV" = ( +/obj/machinery/computer/mech_bay_power_console, +/turf/open/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"azW" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"azX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"azY" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"azZ" = ( +/obj/machinery/camera{ + c_tag = "Port Central Hallway Port"; + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aAa" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"aAb" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"aAc" = ( +/obj/structure/table, +/obj/item/weapon/weldingtool, +/obj/item/weapon/crowbar, +/obj/item/stack/packageWrap, +/obj/item/stack/packageWrap, +/obj/item/stack/packageWrap, +/obj/item/stack/packageWrap, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/primary{ + name = "Tool Storage" + }) +"aAd" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"aAe" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"aAf" = ( +/obj/machinery/door/airlock/glass_mining{ + desc = "The station's cargo bay, where supplies can be ordered and certain items sold for a profit back to CentCom."; + name = "Cargo Bay"; + req_access_txt = "31" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "warningcorner" + }, +/area/quartermaster/office) +"aAg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/quartermaster/office) +"aAh" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/quartermaster/office) +"aAi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/conveyor_switch/oneway{ + id = "packageSort2" + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/quartermaster/office) +"aAj" = ( +/obj/structure/table/glass, +/obj/item/device/destTagger{ + pixel_x = 4; + pixel_y = 3 + }, +/obj/item/device/destTagger{ + pixel_x = 4; + pixel_y = 3 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/quartermaster/office) +"aAk" = ( +/obj/structure/table/glass, +/obj/item/stack/wrapping_paper, +/obj/item/stack/wrapping_paper, +/obj/item/stack/packageWrap{ + pixel_x = 2; + pixel_y = -3 + }, +/obj/item/stack/packageWrap{ + pixel_x = 2; + pixel_y = -3 + }, +/obj/item/stack/packageWrap{ + pixel_x = 2; + pixel_y = -3 + }, +/obj/item/stack/packageWrap{ + pixel_x = 2; + pixel_y = -3 + }, +/obj/item/stack/packageWrap{ + pixel_x = 2; + pixel_y = -3 + }, +/obj/item/stack/packageWrap{ + pixel_x = 2; + pixel_y = -3 + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/quartermaster/office) +"aAl" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box, +/obj/item/weapon/storage/box, +/obj/item/weapon/storage/box, +/obj/item/weapon/storage/box, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/quartermaster/office) +"aAm" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"aAn" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"aAo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"aAp" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"aAq" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"aAr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aAs" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aAt" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aAu" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aAv" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aAw" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aAx" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aAy" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aAz" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=StHF2"; + location = "AI" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aAA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aAB" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aAC" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aAD" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aAE" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aAF" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9; + pixel_y = 0 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aAG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aAH" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/closed/wall, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aAI" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/structure/cable/blue{ + icon_state = "2-4"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aAJ" = ( +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aAK" = ( +/obj/structure/cable/blue{ + icon_state = "1-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aAL" = ( +/turf/closed/wall, +/area/construction/Storage{ + name = "Construction Site" + }) +"aAM" = ( +/obj/structure/grille, +/turf/open/floor/plating, +/area/construction/Storage{ + name = "Construction Site" + }) +"aAN" = ( +/obj/machinery/camera{ + c_tag = "Mining External"; + dir = 8 + }, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"aAO" = ( +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/disposal/bin, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "browncorner" + }, +/area/quartermaster/miningdock) +"aAP" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"aAQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"aAR" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"aAS" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/glass_mining{ + desc = "The base for the station's critical mining efforts."; + name = "Mining"; + req_access_txt = "48" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"aAT" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aAU" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aAV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aAW" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aAX" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aAY" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/storage/primary{ + name = "Tool Storage" + }) +"aAZ" = ( +/obj/structure/table, +/obj/item/weapon/wrench, +/obj/item/device/analyzer, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"aBa" = ( +/obj/structure/table, +/obj/item/weapon/storage/toolbox/electrical{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"aBb" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"aBc" = ( +/obj/structure/table, +/obj/item/weapon/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = -1 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"aBd" = ( +/obj/structure/table, +/obj/item/weapon/crowbar, +/obj/item/device/assembly/prox_sensor{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/clothing/gloves/color/fyellow, +/obj/machinery/light, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"aBe" = ( +/obj/structure/table, +/obj/item/weapon/storage/belt/utility, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"aBf" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"aBg" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/primary{ + name = "Tool Storage" + }) +"aBh" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/storage/primary{ + name = "Tool Storage" + }) +"aBi" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/junction, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aBj" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel{ + icon_state = "browncorner"; + dir = 4 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aBk" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/obj/machinery/camera{ + c_tag = "Cargo Lobby"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"aBl" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"aBm" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/structure/disposalpipe/sortjunction{ + dir = 4; + icon_state = "pipe-j2s"; + sortType = 3 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"aBn" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light, +/obj/structure/table, +/obj/item/weapon/paper_bin, +/obj/item/weapon/pen, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"aBo" = ( +/obj/structure/disposaloutlet{ + dir = 4 + }, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/quartermaster/office) +"aBp" = ( +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/obj/machinery/conveyor{ + dir = 4; + id = "packageSort2"; + layer = 2.7 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/quartermaster/office) +"aBq" = ( +/obj/machinery/light, +/obj/machinery/conveyor{ + dir = 4; + id = "packageSort2"; + layer = 2.7 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/quartermaster/office) +"aBr" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "packageSort2"; + layer = 2.7 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/quartermaster/office) +"aBs" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/conveyor{ + dir = 4; + id = "packageSort2"; + layer = 2.7 + }, +/obj/machinery/door/window/northright{ + layer = 2.8; + name = "Disposals Conveyor"; + req_access_txt = "31" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/quartermaster/office) +"aBt" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "packageSort2"; + layer = 2.7 + }, +/obj/machinery/door/window/northleft{ + layer = 2.8; + name = "Disposals Conveyor"; + req_access_txt = "31" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/quartermaster/office) +"aBu" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/machinery/conveyor{ + dir = 4; + id = "packageSort2"; + layer = 2.7 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/quartermaster/office) +"aBv" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "packageSort2"; + layer = 2.7 + }, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 4 + }, +/area/quartermaster/office) +"aBw" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "packageSort2"; + layer = 2.7 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/quartermaster/office) +"aBx" = ( +/obj/machinery/disposal/deliveryChute{ + dir = 8 + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plating, +/area/quartermaster/office) +"aBy" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen"; + opened = 1 + }, +/obj/item/stack/rods{ + amount = 50 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"aBz" = ( +/obj/structure/disposalpipe/sortjunction{ + dir = 4; + icon_state = "pipe-j2s"; + sortType = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"aBA" = ( +/obj/structure/closet/crate/medical, +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-j2"; + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"aBB" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"aBC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/junction{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aBD" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aBE" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 6 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aBF" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aBG" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aBH" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-j2"; + dir = 4 + }, +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aBI" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aBJ" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/power/apc{ + cell_type = 5000; + name = "Starboard Hallway APC"; + pixel_y = -24 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aBK" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aBL" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aBM" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aBN" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aBO" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Starboard Hallway Fore Central"; + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aBP" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 10 + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aBQ" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aBR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/blue{ + icon_state = "1-4"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aBS" = ( +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/turf/closed/wall, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aBT" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/blue{ + icon_state = "2-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aBU" = ( +/turf/closed/wall, +/area/maintenance/maintcentral) +"aBV" = ( +/obj/item/weapon/pickaxe{ + pixel_x = 5 + }, +/turf/open/floor/plating, +/area/construction/Storage{ + name = "Construction Site" + }) +"aBW" = ( +/turf/open/floor/plating, +/area/construction/Storage{ + name = "Construction Site" + }) +"aBX" = ( +/obj/machinery/constructable_frame/machine_frame, +/turf/open/floor/plating, +/area/construction/Storage{ + name = "Construction Site" + }) +"aBY" = ( +/obj/structure/computerframe, +/turf/open/floor/plating, +/area/construction/Storage{ + name = "Construction Site" + }) +"aBZ" = ( +/obj/structure/table, +/obj/item/device/radio/off, +/turf/open/floor/plating, +/area/construction/Storage{ + name = "Construction Site" + }) +"aCa" = ( +/obj/item/weapon/screwdriver, +/turf/open/floor/plating, +/area/construction/Storage{ + name = "Construction Site" + }) +"aCb" = ( +/obj/item/weapon/rack_parts, +/turf/open/floor/plating, +/area/construction/Storage{ + name = "Construction Site" + }) +"aCc" = ( +/obj/structure/closet, +/obj/item/weapon/storage/toolbox/emergency, +/turf/open/floor/plating, +/area/construction/Storage{ + name = "Construction Site" + }) +"aCd" = ( +/turf/open/floor/plating/asteroid/airless, +/area/quartermaster/miningdock) +"aCe" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/quartermaster/miningdock) +"aCf" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "Mininginput" + }, +/obj/item/weapon/paper{ + info = "A hastily written note has been scribbled here...

Please use the ore redemption machine in the mining bay wing for smelting. PLEASE!

--The Research Staff"; + name = "URGENT!" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/quartermaster/miningdock) +"aCg" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "Mininginput" + }, +/obj/structure/plasticflaps/mining, +/obj/structure/barricade/wooden, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"aCh" = ( +/obj/machinery/mineral/unloading_machine, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"aCi" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "Mininginput" + }, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"aCj" = ( +/obj/machinery/conveyor{ + dir = 9; + id = "Mininginput" + }, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"aCk" = ( +/obj/machinery/mineral/stacking_unit_console{ + machinedir = 10 + }, +/turf/closed/wall, +/area/quartermaster/miningdock) +"aCl" = ( +/obj/machinery/camera{ + c_tag = "Mining South" + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"aCm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"aCn" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "browncorner" + }, +/area/quartermaster/miningdock) +"aCo" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aCp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aCq" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aCr" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/storage/primary{ + name = "Tool Storage" + }) +"aCs" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/storage/primary{ + name = "Tool Storage" + }) +"aCt" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aCu" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall, +/area/quartermaster/office) +"aCv" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/office) +"aCw" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/office) +"aCx" = ( +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/quartermaster/office) +"aCy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/newscaster{ + dir = 8; + pixel_x = -32 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aCz" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aCA" = ( +/turf/closed/wall, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aCB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aCC" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aCD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aCE" = ( +/turf/closed/wall, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aCF" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aCG" = ( +/mob/living/simple_animal/mouse, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aCH" = ( +/obj/machinery/power/smes{ + charge = 1e+006 + }, +/obj/structure/cable/blue{ + icon_state = "0-4"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aCI" = ( +/obj/structure/cable/blue{ + icon_state = "2-8"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/camera{ + c_tag = "Bridge Power Control" + }, +/obj/effect/decal/cleanable/cobweb2, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aCJ" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plating, +/area/construction/Storage{ + name = "Construction Site" + }) +"aCK" = ( +/turf/open/floor/plasteel, +/area/construction/Storage{ + name = "Construction Site" + }) +"aCL" = ( +/turf/open/floor/plasteel{ + icon_state = "warningcorner" + }, +/area/construction/Storage{ + name = "Construction Site" + }) +"aCM" = ( +/obj/machinery/conveyor_switch/oneway{ + id = "Mininginput" + }, +/turf/open/floor/plating/asteroid/airless, +/area/quartermaster/miningdock) +"aCN" = ( +/obj/machinery/mineral/processing_unit, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"aCO" = ( +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"aCP" = ( +/obj/machinery/conveyor_switch/oneway{ + id = "Mininginput" + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"aCQ" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"aCR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/table, +/obj/item/weapon/paper_bin, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"aCS" = ( +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"aCT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aCU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aCV" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aCW" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 9 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aCX" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aCY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aCZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aDa" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aDb" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/glass{ + name = "Fore Central Hallway" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDc" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-j2"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDd" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDe" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Fore Central Hallway Port" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDf" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDg" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/structure/sign/directions/security{ + dir = 8; + pixel_y = 40 + }, +/obj/structure/sign/directions/science{ + dir = 8; + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDh" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-j2"; + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDi" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDj" = ( +/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDk" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light_switch{ + dir = 1; + pixel_y = 22 + }, +/obj/structure/sign/directions/engineering{ + dir = 4; + pixel_y = 32 + }, +/obj/structure/sign/directions/medical{ + dir = 4; + icon_state = "direction_med"; + pixel_x = 0; + pixel_y = 40 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDl" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/sortjunction{ + dir = 4; + icon_state = "pipe-j2s"; + sortType = 2 + }, +/turf/open/floor/plasteel{ + icon_state = "browncorner"; + dir = 4 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDm" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDn" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDp" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "browncorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDq" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDr" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDs" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/light_switch{ + dir = 1; + pixel_y = 22 + }, +/obj/machinery/camera{ + c_tag = "Fore Central Hallway Starboard" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDt" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDv" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/firealarm{ + pixel_y = 25 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDw" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDx" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/sign/directions/security{ + dir = 8; + pixel_y = 24 + }, +/obj/structure/sign/directions/engineering{ + pixel_y = 32 + }, +/obj/structure/sign/directions/medical{ + pixel_y = 40 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDy" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/glass{ + name = "Starboard Hallway" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aDz" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aDA" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aDB" = ( +/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aDC" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/carpet, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aDD" = ( +/obj/structure/closet/secure_closet/personal, +/turf/open/floor/carpet, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aDE" = ( +/obj/machinery/washing_machine, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aDF" = ( +/obj/machinery/washing_machine, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aDG" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aDH" = ( +/obj/structure/table, +/obj/item/clothing/under/suit_jacket/really_black{ + pixel_x = -2 + }, +/obj/item/clothing/under/suit_jacket/female, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aDI" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aDJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aDK" = ( +/obj/structure/cable/blue{ + icon_state = "1-4"; + d1 = 1; + d2 = 2 + }, +/obj/structure/cable/blue{ + icon_state = "2-4"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aDL" = ( +/obj/structure/cable/blue{ + icon_state = "2-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aDM" = ( +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/machinery/power/terminal{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aDN" = ( +/turf/closed/wall/r_wall, +/area/maintenance/maintcentral) +"aDO" = ( +/obj/item/weapon/shovel{ + pixel_x = -5 + }, +/turf/open/floor/plating, +/area/construction/Storage{ + name = "Construction Site" + }) +"aDP" = ( +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plasteel, +/area/construction/Storage{ + name = "Construction Site" + }) +"aDQ" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warning" + }, +/area/construction/Storage{ + name = "Construction Site" + }) +"aDR" = ( +/obj/structure/door_assembly/door_assembly_ext{ + anchored = 0; + name = "Broken External Airlock" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 8 + }, +/area/construction/Storage{ + name = "Construction Site" + }) +"aDS" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_y = 32 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/construction/Storage{ + name = "Construction Site" + }) +"aDT" = ( +/obj/machinery/door/airlock/external{ + name = "External Airlock"; + req_access_txt = "0" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 8 + }, +/area/construction/Storage{ + name = "Construction Site" + }) +"aDU" = ( +/obj/structure/ore_box, +/turf/open/floor/plating/asteroid/airless, +/area/quartermaster/miningdock) +"aDV" = ( +/obj/machinery/conveyor{ + dir = 1; + id = "Mininginput" + }, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"aDW" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"aDX" = ( +/obj/effect/landmark/start{ + name = "Shaft Miner" + }, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"aDY" = ( +/obj/structure/table, +/obj/item/weapon/folder/yellow, +/obj/item/weapon/pen, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"aDZ" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aEa" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=FrCH1"; + location = "PtCH" + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aEb" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aEc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aEd" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/glass{ + name = "Fore Central Hallway" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aEe" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aEf" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aEg" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aEh" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aEi" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aEj" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Arrival"; + location = "FrCH1" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aEk" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aEl" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=StHF1"; + location = "FrCH2" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aEm" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aEn" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/glass{ + name = "Starboard Hallway" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aEo" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aEp" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=AI"; + location = "StHF1" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aEq" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aEr" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/carpet, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aEs" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/red, +/obj/machinery/button/door{ + id = "Dorm1"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_y = -25; + req_access_txt = "0"; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/carpet, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aEt" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/carpet, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aEu" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/blue, +/obj/machinery/button/door{ + id = "Dorm2"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_y = -25; + req_access_txt = "0"; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/carpet, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aEv" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/yellow, +/obj/machinery/button/door{ + id = "Dorm3"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_y = -25; + req_access_txt = "0"; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/carpet, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aEw" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/purple, +/obj/machinery/button/door{ + id = "Dorm4"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_y = -25; + req_access_txt = "0"; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/carpet, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aEx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aEy" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aEz" = ( +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=StAF2"; + location = "StHF2" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aEA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aEB" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/closed/wall, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aEC" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aED" = ( +/obj/structure/cable{ + tag = "icon-2-8"; + icon_state = "2-8" + }, +/obj/structure/cable/blue{ + icon_state = "1-4"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aEE" = ( +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/door/airlock/engineering{ + name = "Bridge Power Control"; + req_access_txt = "11" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aEF" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aEG" = ( +/obj/machinery/computer/monitor, +/obj/structure/cable/blue, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/blue{ + icon_state = "1-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aEH" = ( +/turf/open/floor/plating/asteroid/airless, +/area/space) +"aEI" = ( +/obj/item/wallframe/apc, +/turf/open/floor/plasteel, +/area/construction/Storage{ + name = "Construction Site" + }) +"aEJ" = ( +/mob/living/simple_animal/mouse, +/turf/open/floor/plasteel, +/area/construction/Storage{ + name = "Construction Site" + }) +"aEK" = ( +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 8 + }, +/area/construction/Storage{ + name = "Construction Site" + }) +"aEL" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'AREA UNDER CONSTRUCTION"; + name = "AREA UNDER CONSTRUCTION"; + pixel_x = -32 + }, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"aEM" = ( +/obj/machinery/conveyor{ + dir = 6; + id = "Mininginput"; + verted = -1 + }, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"aEN" = ( +/obj/machinery/mineral/stacking_machine, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"aEO" = ( +/obj/machinery/light, +/obj/machinery/newscaster{ + hitstaken = 1; + pixel_y = -32 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "loadingarea" + }, +/area/quartermaster/miningdock) +"aEP" = ( +/obj/structure/table, +/obj/item/weapon/storage/firstaid/regular, +/obj/item/weapon/storage/firstaid/regular, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"aEQ" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aER" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aES" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/obj/machinery/camera{ + c_tag = "Port Central Hallway Central"; + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aET" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aEU" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aEV" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aEW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aEX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/glass{ + name = "Fore Central Hallway" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aEY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aEZ" = ( +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFa" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/open/floor/plasteel{ + icon_state = "greencorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "green" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFd" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/light, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "greencorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFe" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFf" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFg" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Fore Central Hallway Central"; + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFi" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/newscaster{ + hitstaken = 1; + pixel_y = -32 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFl" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "greencorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/light, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "greencorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFo" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFq" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "green" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFr" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "green" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFs" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "greencorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/glass{ + name = "Starboard Hallway" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aFu" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aFv" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/camera{ + c_tag = "Starboard Hallway Fore Port"; + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aFw" = ( +/obj/machinery/door/airlock{ + id_tag = "Dorm1"; + name = "Cabin 1" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aFx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aFy" = ( +/obj/machinery/door/airlock{ + id_tag = "Dorm2"; + name = "Cabin 2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aFz" = ( +/obj/machinery/door/airlock{ + id_tag = "Dorm3"; + name = "Cabin 3" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aFA" = ( +/obj/machinery/door/airlock{ + id_tag = "Dorm4"; + name = "Cabin 4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aFB" = ( +/obj/structure/table, +/obj/item/clothing/under/blackskirt, +/obj/item/clothing/under/space, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aFC" = ( +/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aFD" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aFE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aFF" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_access_txt = "12"; + req_one_access_txt = "0" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aFG" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aFH" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aFI" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/closed/wall, +/area/maintenance/maintcentral) +"aFJ" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aFK" = ( +/obj/structure/cable/blue, +/obj/machinery/power/apc{ + dir = 4; + name = "Bridge Maintenance APC"; + pixel_x = 24 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aFL" = ( +/obj/structure/table, +/obj/item/device/paicard, +/turf/open/floor/plating, +/area/construction/Storage{ + name = "Construction Site" + }) +"aFM" = ( +/obj/structure/table, +/obj/item/weapon/storage/toolbox/mechanical, +/turf/open/floor/plating, +/area/construction/Storage{ + name = "Construction Site" + }) +"aFN" = ( +/obj/item/wallframe/airalarm, +/turf/open/floor/plating, +/area/construction/Storage{ + name = "Construction Site" + }) +"aFO" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/structure/closet/crate{ + icon_state = "crateopen"; + opened = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"aFP" = ( +/obj/structure/table, +/obj/item/device/flashlight/lantern{ + pixel_y = 5 + }, +/obj/item/device/flashlight/lantern{ + pixel_x = 5 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"aFQ" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "browncorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aFR" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aFS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aFT" = ( +/obj/machinery/door/airlock/glass{ + name = "Fore Port Transit" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aFU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aFV" = ( +/turf/closed/wall, +/area/maintenance/aft) +"aFW" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Fore Interior Maintenance Access"; + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"aFX" = ( +/obj/machinery/newscaster{ + hitstaken = 1; + pixel_y = -32 + }, +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plasteel{ + icon_state = "greenfull" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFY" = ( +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plasteel{ + icon_state = "greenfull" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFZ" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Fore Interior Maintenance Access"; + req_access_txt = "12" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"aGa" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aGb" = ( +/obj/machinery/door/airlock/glass{ + name = "Fore Starboard Transit" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aGc" = ( +/turf/closed/wall, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aGd" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/airlock/glass{ + desc = "Supplies available to the public to help with cultivating the open hydro trays in the hallways."; + name = "Public Garden Storage" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aGe" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/status_display{ + pixel_x = -32 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aGf" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aGg" = ( +/obj/machinery/light_switch{ + dir = 8; + pixel_x = -22 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aGh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aGi" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aGj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aGk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aGl" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/machinery/camera/xray{ + c_tag = "Fore Dormitory Cabins" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aGm" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aGn" = ( +/obj/machinery/vending/cigarette, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aGo" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aGp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aGq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aGr" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aGs" = ( +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aGt" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aGu" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aGv" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aGw" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aGx" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aGy" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen"; + opened = 1 + }, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/sheet/glass{ + amount = 10 + }, +/turf/open/floor/plating, +/area/construction/Storage{ + name = "Construction Site" + }) +"aGz" = ( +/obj/structure/closet/crate, +/turf/open/floor/plasteel, +/area/construction/Storage{ + name = "Construction Site" + }) +"aGA" = ( +/turf/closed/wall/r_wall, +/area/security/detectives_office) +"aGB" = ( +/obj/structure/grille, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "detffice"; + name = "detective's shutters" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/detectives_office) +"aGC" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "detffice"; + name = "detective's shutters" + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/detectives_office) +"aGD" = ( +/obj/structure/grille, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "detffice"; + name = "detective's shutters" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/detectives_office) +"aGE" = ( +/obj/structure/closet/wardrobe/black, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"aGF" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"aGG" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"aGH" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"aGI" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aGJ" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aGK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aGL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aGM" = ( +/obj/structure/table/glass, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/item/device/gps, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aGN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aGO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aGP" = ( +/obj/structure/chair, +/obj/machinery/camera{ + c_tag = "Fore Port Transit" + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aGQ" = ( +/obj/structure/chair, +/obj/machinery/light_switch{ + dir = 1; + pixel_y = 22 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aGR" = ( +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/aft) +"aGS" = ( +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"aGT" = ( +/turf/open/floor/plating, +/area/maintenance/aft) +"aGU" = ( +/obj/item/clothing/under/rank/mailman, +/obj/item/clothing/head/mailman, +/obj/structure/closet, +/obj/effect/landmark{ + name = "blobstart" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"aGV" = ( +/obj/structure/rack, +/obj/item/weapon/storage/fancy/cigarettes, +/turf/open/floor/plating, +/area/maintenance/aft) +"aGW" = ( +/obj/structure/rack, +/obj/item/weapon/crowbar, +/obj/item/weapon/wrench, +/turf/open/floor/plating, +/area/maintenance/aft) +"aGX" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"aGY" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Fore Central Hallway APC"; + pixel_y = 24 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aGZ" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/maintenance/aft) +"aHa" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plating, +/area/maintenance/aft) +"aHb" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aHc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aHd" = ( +/obj/structure/reagent_dispensers/water_cooler, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aHe" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/bag/plants/portaseeder, +/obj/item/device/analyzer/plant_analyzer, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aHf" = ( +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aHg" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aHh" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aHi" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "greencorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aHj" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aHk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aHl" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/glass{ + name = "Fore Dormitory" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aHm" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aHn" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aHo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aHp" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aHq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aHr" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aHs" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aHt" = ( +/obj/machinery/computer/atmos_alert, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aHu" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aHv" = ( +/obj/structure/filingcabinet, +/turf/open/floor/wood, +/area/security/detectives_office) +"aHw" = ( +/obj/machinery/firealarm{ + pixel_y = 25 + }, +/turf/open/floor/wood, +/area/security/detectives_office) +"aHx" = ( +/obj/structure/rack, +/obj/item/weapon/storage/briefcase, +/turf/open/floor/wood, +/area/security/detectives_office) +"aHy" = ( +/obj/machinery/photocopier, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/wood, +/area/security/detectives_office) +"aHz" = ( +/obj/structure/closet/secure_closet/detective, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/wood, +/area/security/detectives_office) +"aHA" = ( +/obj/structure/table/wood, +/obj/machinery/camera{ + c_tag = "Detective's Office" + }, +/turf/open/floor/wood, +/area/security/detectives_office) +"aHB" = ( +/turf/closed/wall, +/area/security/detectives_office) +"aHC" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/security/main) +"aHD" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/turf/open/floor/plating, +/area/security/main) +"aHE" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "Security Office APC"; + pixel_x = 0; + pixel_y = -25 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/security/main) +"aHF" = ( +/turf/open/floor/plating, +/area/security/main) +"aHG" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Brig Maintenance"; + req_access_txt = "0"; + req_one_access_txt = "1; 4; 63" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aHH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aHI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aHJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/junction{ + dir = 1; + icon_state = "pipe-j2" + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aHK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aHL" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aHM" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aHN" = ( +/obj/machinery/light, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/turf/open/floor/plasteel{ + icon_state = "warningcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aHO" = ( +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aHP" = ( +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 1 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aHQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aHR" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Fore Port Transit Maintenance"; + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"aHS" = ( +/turf/open/floor/plating{ + icon_state = "warnplatecorner" + }, +/area/maintenance/aft) +"aHT" = ( +/turf/open/floor/plating{ + icon_state = "warnplate" + }, +/area/maintenance/aft) +"aHU" = ( +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 1 + }, +/area/maintenance/aft) +"aHV" = ( +/obj/item/weapon/rack_parts, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 1 + }, +/area/maintenance/aft) +"aHW" = ( +/obj/structure/girder, +/turf/open/floor/plating, +/area/maintenance/aft) +"aHX" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"aHY" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 1 + }, +/area/maintenance/aft) +"aHZ" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"aIa" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Fore Starboard Transit Maintenance"; + req_access_txt = "12" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"aIb" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aIc" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aId" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aIe" = ( +/obj/machinery/biogenerator, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aIf" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aIg" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aIh" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aIi" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/glass{ + name = "Fore Dormitory" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aIj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aIk" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aIl" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/effect/landmark{ + name = "lightsout" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aIm" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aIn" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aIo" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aIp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aIq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aIr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aIs" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aIt" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aIu" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aIv" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/maintcentral) +"aIw" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Bridge Atmospheric Control"; + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aIx" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aIy" = ( +/obj/machinery/computer/med_data, +/turf/open/floor/carpet, +/area/security/detectives_office) +"aIz" = ( +/turf/open/floor/carpet, +/area/security/detectives_office) +"aIA" = ( +/turf/open/floor/wood, +/area/security/detectives_office) +"aIB" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/wood, +/area/security/detectives_office) +"aIC" = ( +/obj/item/device/taperecorder, +/obj/structure/table/wood, +/obj/machinery/requests_console{ + department = "Detective's Office"; + name = "Detective's Requests Console"; + pixel_x = 32 + }, +/turf/open/floor/wood, +/area/security/detectives_office) +"aID" = ( +/turf/closed/wall, +/area/security/main) +"aIE" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Brig Maintenance"; + req_access_txt = "0"; + req_one_access_txt = "1; 4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aIF" = ( +/turf/closed/wall/r_wall, +/area/security/main) +"aIG" = ( +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/power/apc{ + dir = 8; + name = "Port Central Hallway APC"; + pixel_x = -24 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aIH" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aII" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aIJ" = ( +/obj/structure/transit_tube{ + icon_state = "Block" + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "warning" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aIK" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warning" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aIL" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aIM" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/maintenance/aft) +"aIN" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aIO" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aIP" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "Fore Starboard Transit"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aIQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aIR" = ( +/obj/machinery/seed_extractor, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aIS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aIT" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aIU" = ( +/obj/machinery/door/airlock/glass{ + desc = "Supplies available to the public to help with cultivating the open hydro trays in the hallways."; + name = "Public Garden Storage" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "green"; + dir = 4 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aIV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aIW" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aIX" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aIY" = ( +/obj/structure/closet/wardrobe/pink, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aIZ" = ( +/obj/machinery/light, +/obj/structure/closet/wardrobe/grey, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aJa" = ( +/obj/structure/closet/wardrobe/green, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aJb" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aJc" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aJd" = ( +/obj/structure/table/wood, +/obj/item/device/paicard, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aJe" = ( +/obj/structure/table/wood, +/obj/item/device/camera, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aJf" = ( +/obj/machinery/light, +/obj/structure/table/wood, +/obj/item/weapon/coin/silver, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aJg" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aJh" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/computer/slot_machine, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aJi" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/newscaster{ + hitstaken = 1; + pixel_y = -32 + }, +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aJj" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Fore Dormitory"; + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aJk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aJl" = ( +/obj/machinery/light, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aJm" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/vending/clothing, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aJn" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aJo" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/junction, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aJp" = ( +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aJq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/camera{ + c_tag = "Starboard Hallway Fore Starboard"; + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aJr" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/blue{ + icon_state = "1-4"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aJs" = ( +/obj/machinery/power/apc{ + dir = 6; + name = "Captain's Quarters APC"; + pixel_x = 0; + pixel_y = -24 + }, +/obj/structure/cable/blue{ + icon_state = "0-8"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/crew_quarters/captain) +"aJt" = ( +/obj/machinery/door/airlock/atmos{ + name = "Bridge Atmospheric Control"; + req_access_txt = "24" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aJu" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aJv" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aJw" = ( +/obj/machinery/computer/secure_data, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/turf/open/floor/carpet, +/area/security/detectives_office) +"aJx" = ( +/obj/effect/landmark/start{ + name = "Detective" + }, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/security/detectives_office) +"aJy" = ( +/obj/structure/table/wood, +/obj/item/weapon/hand_labeler, +/turf/open/floor/carpet, +/area/security/detectives_office) +"aJz" = ( +/obj/structure/table/wood, +/obj/item/device/camera/detective, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/wood, +/area/security/detectives_office) +"aJA" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/security/main) +"aJB" = ( +/turf/open/floor/plasteel, +/area/security/main) +"aJC" = ( +/obj/machinery/requests_console{ + department = "Security"; + departmentType = 5; + name = "Security Requests Console"; + pixel_y = 30 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aJD" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/closet/secure_closet/security/sec, +/turf/open/floor/plasteel, +/area/security/main) +"aJE" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/structure/closet/secure_closet/security/sec, +/turf/open/floor/plasteel, +/area/security/main) +"aJF" = ( +/obj/structure/reagent_dispensers/peppertank{ + pixel_y = 30 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aJG" = ( +/obj/machinery/door/window/northright{ + dir = 8; + name = "Brig Deliveries"; + req_access_txt = "1" + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/security/main) +"aJH" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=8"; + freq = 1400; + location = "Security" + }, +/obj/structure/plasticflaps{ + opacity = 1 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "loadingarea" + }, +/area/security/main) +"aJI" = ( +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aJJ" = ( +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aJK" = ( +/obj/machinery/camera{ + c_tag = "Port Central Hallway Aft"; + dir = 1 + }, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aJL" = ( +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aJM" = ( +/obj/machinery/newscaster{ + hitstaken = 1; + pixel_y = -32 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aJN" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aJO" = ( +/obj/structure/transit_tube/station/reverse{ + dir = 4 + }, +/obj/structure/transit_tube_pod, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warning" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aJP" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aJQ" = ( +/obj/machinery/door/airlock/maintenance{ + name = "External Airlock Access"; + req_access_txt = "13" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"aJR" = ( +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/maintenance/aft) +"aJS" = ( +/obj/machinery/door/airlock/external{ + name = "External Access"; + req_access = null; + req_access_txt = "13" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 8 + }, +/area/maintenance/aft) +"aJT" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_y = 32 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/maintenance/aft) +"aJU" = ( +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/space/nearstation) +"aJV" = ( +/turf/open/floor/plating/asteroid/airless, +/area/space/nearstation) +"aJW" = ( +/turf/closed/mineral/random/low_chance, +/area/space/nearstation) +"aJX" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplatecorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aJY" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aJZ" = ( +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aKa" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aKb" = ( +/obj/structure/table/glass, +/obj/item/weapon/reagent_containers/spray/plantbgone, +/obj/item/weapon/reagent_containers/glass/bottle/nutrient/rh{ + pixel_x = 2; + pixel_y = 1 + }, +/obj/item/weapon/reagent_containers/glass/bottle/nutrient/ez, +/obj/item/weapon/reagent_containers/spray/pestspray, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aKc" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aKd" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aKe" = ( +/obj/machinery/door/airlock{ + id_tag = "Dorm5"; + name = "Cabin 5" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aKf" = ( +/obj/machinery/door/airlock{ + desc = "Basic human needs haven't changed much over the centuries."; + id_tag = "shutbath"; + name = "Unisex Restroom"; + req_access_txt = "0" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aKg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/grille{ + density = 0; + icon_state = "brokengrille" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aKh" = ( +/turf/closed/wall, +/area/crew_quarters/captain) +"aKi" = ( +/turf/closed/wall/r_wall, +/area/crew_quarters/captain) +"aKj" = ( +/turf/closed/wall/r_wall, +/area/mine/explored) +"aKk" = ( +/obj/machinery/computer/security/wooden_tv, +/obj/machinery/button/door{ + id = "detffice"; + name = "Detective's Shutters Control"; + pixel_x = -26; + req_access_txt = "0" + }, +/turf/open/floor/carpet, +/area/security/detectives_office) +"aKl" = ( +/obj/structure/table/wood, +/obj/item/weapon/storage/fancy/cigarettes, +/obj/item/clothing/glasses/sunglasses, +/turf/open/floor/carpet, +/area/security/detectives_office) +"aKm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/wood, +/area/security/detectives_office) +"aKn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/security/main) +"aKo" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/security/main) +"aKp" = ( +/obj/machinery/newscaster/security_unit{ + pixel_x = 30 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aKq" = ( +/turf/closed/wall/r_wall, +/area/lawoffice) +"aKr" = ( +/turf/closed/wall, +/area/lawoffice) +"aKs" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/door/airlock/glass{ + name = "Port Hallway" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aKt" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/glass{ + name = "Port Hallway" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aKu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/airlock/glass{ + name = "Port Hallway" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aKv" = ( +/obj/structure/transit_tube{ + icon_state = "N-S" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warning" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aKw" = ( +/obj/structure/rack, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/item/weapon/tank/internals/emergency_oxygen, +/obj/item/clothing/mask/breath, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 8 + }, +/area/maintenance/aft) +"aKx" = ( +/obj/effect/landmark{ + name = "carpspawn" + }, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"aKy" = ( +/obj/structure/transit_tube{ + icon_state = "D-SE" + }, +/turf/open/space, +/area/space/nearstation) +"aKz" = ( +/obj/structure/transit_tube{ + icon_state = "E-SW" + }, +/turf/open/space, +/area/space/nearstation) +"aKA" = ( +/obj/structure/transit_tube, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 8 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aKB" = ( +/obj/structure/transit_tube, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aKC" = ( +/obj/structure/transit_tube/station/reverse{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aKD" = ( +/obj/structure/transit_tube{ + icon_state = "Block"; + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aKE" = ( +/obj/structure/table/glass, +/obj/item/weapon/hatchet, +/obj/item/weapon/reagent_containers/glass/bucket, +/obj/item/weapon/reagent_containers/glass/bucket, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aKF" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aKG" = ( +/obj/structure/closet/crate/hydroponics, +/obj/item/seeds/carrot, +/obj/item/seeds/corn, +/obj/item/seeds/berry, +/obj/item/seeds/watermelon, +/obj/item/seeds/ambrosia, +/obj/item/seeds/wheat, +/obj/item/seeds/grape, +/obj/item/seeds/grass, +/obj/item/seeds/sunflower/moonflower, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aKH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/sink{ + dir = 4; + icon_state = "sink"; + pixel_x = 11; + pixel_y = 0 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aKI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "greencorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aKJ" = ( +/obj/structure/rack, +/obj/item/clothing/suit/fire/firefighter, +/obj/item/clothing/mask/gas, +/obj/item/weapon/extinguisher, +/obj/item/clothing/head/hardhat/red, +/obj/item/clothing/glasses/meson, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aKK" = ( +/obj/structure/closet, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aKL" = ( +/obj/structure/table, +/obj/item/device/t_scanner, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aKM" = ( +/turf/closed/wall, +/area/maintenance/fsmaint2) +"aKN" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aKO" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aKP" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aKQ" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aKR" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aKS" = ( +/turf/open/floor/wood, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aKT" = ( +/obj/machinery/button/door{ + id = "Dorm6"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_y = 25; + req_access_txt = "0"; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/turf/open/floor/wood, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aKU" = ( +/obj/machinery/shower{ + dir = 4 + }, +/obj/item/weapon/soap, +/obj/item/weapon/bikehorn/rubberducky, +/obj/machinery/button/door{ + id = "shutbath"; + name = "Bathroom Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + req_access_txt = "0"; + specialfunctions = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aKV" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aKW" = ( +/obj/structure/toilet, +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aKX" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aKY" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aKZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aLa" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aLb" = ( +/turf/open/floor/plating, +/area/crew_quarters/captain) +"aLc" = ( +/obj/machinery/shower{ + dir = 4 + }, +/obj/machinery/door/window/westright{ + dir = 4 + }, +/obj/item/weapon/soap/deluxe, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/captain) +"aLd" = ( +/obj/structure/toilet{ + pixel_y = 5 + }, +/turf/open/floor/plasteel{ + icon_state = "white"; + temperature = 273.15 + }, +/area/crew_quarters/captain) +"aLe" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/obj/structure/mirror{ + pixel_x = 24 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white"; + temperature = 273.15 + }, +/area/crew_quarters/captain) +"aLf" = ( +/obj/structure/grille, +/obj/structure/cable/blue{ + icon_state = "0-2" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "capffice"; + name = "captain's shutters" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/crew_quarters/captain) +"aLg" = ( +/obj/structure/table/wood, +/obj/item/device/flashlight/lamp/green, +/turf/open/floor/carpet, +/area/security/detectives_office) +"aLh" = ( +/obj/structure/table/wood, +/obj/item/weapon/book/manual/wiki/security_space_law, +/obj/item/weapon/restraints/handcuffs, +/obj/machinery/newscaster{ + hitstaken = 1; + pixel_y = -32 + }, +/turf/open/floor/carpet, +/area/security/detectives_office) +"aLi" = ( +/obj/structure/table/wood, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/pen, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/carpet, +/area/security/detectives_office) +"aLj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/power/apc{ + cell_type = 5000; + name = "Detective's Office APC"; + pixel_y = -24 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/open/floor/wood, +/area/security/detectives_office) +"aLk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/wood, +/area/security/detectives_office) +"aLl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/wood, +/area/security/detectives_office) +"aLm" = ( +/obj/machinery/door/airlock/security{ + desc = "The occupant of this office will know that you're trouble as soon as you walk in the door."; + name = "Detective's Office"; + req_access = null; + req_access_txt = "4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/security/main) +"aLn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/security/main) +"aLo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/main) +"aLp" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/chair, +/obj/effect/landmark/start{ + name = "Security Officer" + }, +/turf/open/floor/plasteel, +/area/security/main) +"aLq" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/security/main) +"aLr" = ( +/obj/structure/closet/secure_closet/security/sec, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warning" + }, +/area/security/main) +"aLs" = ( +/obj/structure/closet/lawcloset, +/turf/open/floor/wood, +/area/lawoffice) +"aLt" = ( +/obj/structure/table/wood, +/obj/item/device/taperecorder, +/obj/item/device/taperecorder, +/obj/item/weapon/cartridge/lawyer, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/wood, +/area/lawoffice) +"aLu" = ( +/obj/structure/table/wood, +/obj/item/weapon/folder/blue, +/obj/item/weapon/stamp/law, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/wood, +/area/lawoffice) +"aLv" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/wood, +/area/lawoffice) +"aLw" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/button/door{ + id = "law"; + pixel_y = 25 + }, +/turf/open/floor/wood, +/area/lawoffice) +"aLx" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/computer/security/telescreen{ + desc = "Used for watching the Prison Wing."; + name = "Prison Monitor"; + network = list("Prison"); + pixel_y = 30 + }, +/obj/structure/rack, +/obj/item/weapon/storage/briefcase, +/turf/open/floor/wood, +/area/lawoffice) +"aLy" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/machinery/photocopier, +/turf/open/floor/wood, +/area/lawoffice) +"aLz" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "law"; + layer = 2.9 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/lawoffice) +"aLA" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aLB" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aLC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aLD" = ( +/obj/structure/transit_tube{ + icon_state = "N-S" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 8 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aLE" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 4 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aLF" = ( +/obj/structure/lattice, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"aLG" = ( +/obj/structure/transit_tube{ + icon_state = "NE-SW" + }, +/turf/open/space, +/area/space/nearstation) +"aLH" = ( +/obj/structure/transit_tube{ + icon_state = "D-NW" + }, +/turf/open/space, +/area/space/nearstation) +"aLI" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/closed/wall/r_wall, +/area/engine/gravity_generator) +"aLJ" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/closed/wall/r_wall, +/area/engine/gravity_generator) +"aLK" = ( +/turf/closed/wall/r_wall, +/area/engine/gravity_generator) +"aLL" = ( +/turf/closed/wall, +/area/engine/gravity_generator) +"aLM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/engine/gravity_generator) +"aLN" = ( +/obj/structure/cable/green{ + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "Bar Maintenance APC"; + pixel_x = -24 + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aLO" = ( +/obj/structure/cable/green{ + icon_state = "2-4" + }, +/obj/structure/cable/green{ + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aLP" = ( +/obj/structure/chair/stool, +/obj/structure/cable/green{ + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "Fore Dormitory APC"; + pixel_x = 24 + }, +/turf/open/floor/plating, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aLQ" = ( +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aLR" = ( +/obj/machinery/camera{ + c_tag = "Crew Area Atmospheric Control"; + dir = 1 + }, +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aLS" = ( +/obj/machinery/atmospherics/components/binary/pump/on, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aLT" = ( +/obj/machinery/computer/atmos_alert, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aLU" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/turf/open/floor/wood, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aLV" = ( +/obj/machinery/light/small, +/obj/effect/landmark{ + name = "blobstart" + }, +/turf/open/floor/wood, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aLW" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/green, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/wood, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aLX" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/structure/mirror{ + pixel_x = -28 + }, +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aLY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aLZ" = ( +/obj/machinery/door/airlock{ + desc = "Basic human needs haven't changed much over the centuries."; + name = "Restroom"; + req_access_txt = "0" + }, +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aMa" = ( +/obj/machinery/light/small, +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aMb" = ( +/obj/machinery/door/airlock/silver{ + desc = "Because the boss knows that what the boss says goes and if the boss's suffered losses then that's what the boss chose!"; + name = "Bathroom" + }, +/turf/open/floor/plasteel{ + icon_state = "white"; + temperature = 273.15 + }, +/area/crew_quarters/captain) +"aMc" = ( +/obj/structure/displaycase/captain, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aMd" = ( +/obj/structure/table/wood, +/obj/item/weapon/pinpointer, +/obj/item/weapon/disk/nuclear, +/obj/machinery/status_display{ + layer = 4; + pixel_y = 32 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aMe" = ( +/obj/structure/table/wood, +/obj/machinery/recharger{ + pixel_y = 4 + }, +/obj/structure/cable/blue{ + icon_state = "1-4"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aMf" = ( +/obj/structure/table/wood, +/obj/item/weapon/melee/chainofcommand, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/blue{ + icon_state = "2-8"; + d1 = 1; + d2 = 2 + }, +/obj/structure/cable/blue{ + icon_state = "2-4"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/cell_charger, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aMg" = ( +/obj/structure/table/wood, +/obj/structure/cable/blue{ + icon_state = "1-8"; + d1 = 1; + d2 = 2 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/item/device/paicard, +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aMh" = ( +/obj/structure/table/wood, +/obj/structure/cable/blue{ + icon_state = "1-8"; + d1 = 1; + d2 = 2 + }, +/obj/item/weapon/storage/firstaid/regular, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aMi" = ( +/obj/structure/table/wood, +/obj/item/weapon/storage/lockbox/medal, +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/obj/machinery/camera{ + c_tag = "Captain's Office" + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aMj" = ( +/obj/structure/filingcabinet, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aMk" = ( +/turf/closed/wall/r_wall, +/area/security/prison) +"aMl" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/security/main) +"aMm" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aMn" = ( +/obj/structure/table/wood, +/obj/item/weapon/restraints/handcuffs, +/obj/item/device/assembly/flash/handheld, +/turf/open/floor/plasteel, +/area/security/main) +"aMo" = ( +/obj/structure/table/wood, +/obj/item/weapon/storage/fancy/donut_box, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aMp" = ( +/obj/structure/table/wood, +/obj/item/weapon/book/manual/wiki/security_space_law, +/turf/open/floor/plasteel, +/area/security/main) +"aMq" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/landmark/start{ + name = "Security Officer" + }, +/turf/open/floor/plasteel, +/area/security/main) +"aMr" = ( +/obj/machinery/requests_console{ + department = "Law office"; + name = "Lawyer's Requests Console"; + pixel_x = -32 + }, +/turf/open/floor/wood, +/area/lawoffice) +"aMs" = ( +/obj/effect/landmark/start{ + name = "Lawyer" + }, +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/wood, +/area/lawoffice) +"aMt" = ( +/turf/open/floor/wood, +/area/lawoffice) +"aMu" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/wood, +/area/lawoffice) +"aMv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/lawoffice) +"aMw" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/lawoffice) +"aMx" = ( +/obj/machinery/door/airlock{ + name = "Law Office"; + req_access_txt = "38" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/lawoffice) +"aMy" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/junction{ + dir = 1; + icon_state = "pipe-j2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aMz" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aMA" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aMB" = ( +/obj/structure/barricade/wooden, +/turf/open/floor/plating, +/area/maintenance/aft) +"aMC" = ( +/obj/structure/transit_tube{ + icon_state = "N-SE" + }, +/turf/open/space, +/area/space/nearstation) +"aMD" = ( +/obj/structure/transit_tube{ + icon_state = "D-SW" + }, +/turf/open/space, +/area/space/nearstation) +"aME" = ( +/obj/structure/transit_tube{ + icon_state = "D-SE" + }, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"aMF" = ( +/obj/structure/transit_tube{ + icon_state = "E-SW" + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"aMG" = ( +/obj/structure/transit_tube, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"aMH" = ( +/obj/structure/transit_tube{ + icon_state = "E-W-Pass" + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"aMI" = ( +/obj/structure/transit_tube, +/turf/open/space, +/area/space/nearstation) +"aMJ" = ( +/obj/structure/transit_tube{ + icon_state = "E-W-Pass" + }, +/turf/open/space, +/area/space/nearstation) +"aMK" = ( +/obj/structure/transit_tube{ + icon_state = "W-NE" + }, +/turf/open/space, +/area/space/nearstation) +"aML" = ( +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable, +/turf/closed/wall/r_wall, +/area/engine/gravity_generator) +"aMM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/machinery/power/smes{ + charge = 1e+006 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"aMN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"aMO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/table, +/obj/item/weapon/paper/gravity_gen, +/obj/item/weapon/pen/blue, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"aMP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/firealarm{ + pixel_y = 25 + }, +/obj/structure/chair/office/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"aMQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"aMR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/engine/gravity_generator) +"aMS" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/closet/radiation, +/obj/machinery/camera{ + c_tag = "Gravity Generator Entrance"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"aMT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/closet/radiation, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"aMU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/engine/gravity_generator) +"aMV" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'RADIOACTIVE AREA'"; + icon_state = "radiation"; + name = "RADIOACTIVE AREA"; + pixel_x = -32 + }, +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aMW" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Firefighting equipment"; + req_access_txt = "12" + }, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aMX" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/closed/wall, +/area/maintenance/fsmaint2) +"aMY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock/atmos{ + name = "Crew Area Atmospheric Control"; + req_access_txt = "24" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aMZ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aNa" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aNb" = ( +/obj/machinery/bookbinder, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aNc" = ( +/obj/machinery/camera{ + c_tag = "Captain's Quarters" + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aNd" = ( +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aNe" = ( +/obj/machinery/door/airlock/command{ + name = "Captain's Quarters"; + req_access = null; + req_access_txt = "20" + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aNf" = ( +/obj/structure/cable/blue{ + icon_state = "1-4"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aNg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/carpet, +/area/crew_quarters/captain) +"aNh" = ( +/obj/structure/cable/blue{ + icon_state = "2-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/carpet, +/area/crew_quarters/captain) +"aNi" = ( +/turf/open/floor/carpet, +/area/crew_quarters/captain) +"aNj" = ( +/obj/item/weapon/storage/secure/safe{ + pixel_x = 35; + pixel_y = 5 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aNk" = ( +/turf/closed/mineral/random/labormineral, +/area/mine/explored) +"aNl" = ( +/obj/structure/toilet{ + cistern = 1; + desc = "The HT-451, a torque rotation-based, waste disposal unit for small matter. This one has a heart drawn on the cistern."; + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/prison) +"aNm" = ( +/obj/structure/sink{ + pixel_y = 28 + }, +/obj/machinery/light/small, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/prison) +"aNn" = ( +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/prison) +"aNo" = ( +/turf/closed/wall, +/area/security/prison) +"aNp" = ( +/obj/structure/table/glass, +/obj/item/clothing/suit/straight_jacket, +/obj/item/clothing/glasses/sunglasses/blindfold, +/obj/item/clothing/mask/muzzle, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "warnwhite" + }, +/area/security/prison) +"aNq" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite"; + dir = 1 + }, +/area/security/prison) +"aNr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite"; + dir = 1 + }, +/area/security/prison) +"aNs" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite"; + dir = 5 + }, +/area/security/prison) +"aNt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/security/prison) +"aNu" = ( +/obj/structure/table/glass, +/obj/item/stack/medical/ointment{ + pixel_y = 4 + }, +/obj/item/stack/medical/bruise_pack{ + pixel_x = 10; + pixel_y = 2 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/security/prison) +"aNv" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/table/glass, +/obj/item/device/electropack, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/security/prison) +"aNw" = ( +/obj/structure/table/glass, +/obj/item/weapon/razor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/security/prison) +"aNx" = ( +/obj/structure/table, +/obj/item/weapon/folder/red, +/obj/item/weapon/pen, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aNy" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/button/door{ + id = "interrogation"; + name = "Interrogation Shutters Control"; + pixel_y = 26; + req_access_txt = "0" + }, +/turf/open/floor/plasteel, +/area/security/main) +"aNz" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aNA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aNB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light_switch{ + dir = 1; + pixel_y = 22 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aNC" = ( +/obj/machinery/door/airlock/security{ + desc = "Keep this place dark to allow covert surveilance of interrogations."; + name = "Interrogation Observation"; + req_access_txt = "63" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/security/main) +"aND" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/security/main) +"aNE" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aNF" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/landmark/start{ + name = "Security Officer" + }, +/turf/open/floor/plasteel, +/area/security/main) +"aNG" = ( +/obj/effect/landmark/start{ + name = "Security Officer" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aNH" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/security/main) +"aNI" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/closet/secure_closet/security/sec, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warning" + }, +/area/security/main) +"aNJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/wood, +/area/lawoffice) +"aNK" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/wood, +/area/lawoffice) +"aNL" = ( +/obj/effect/landmark/start{ + name = "Lawyer" + }, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/wood, +/area/lawoffice) +"aNM" = ( +/obj/structure/table/wood, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/pen, +/turf/open/floor/wood, +/area/lawoffice) +"aNN" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/wood, +/area/lawoffice) +"aNO" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aNP" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aNQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aNR" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Port Interior Maintenance Access"; + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"aNS" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/aft) +"aNT" = ( +/obj/structure/transit_tube{ + icon_state = "D-NE" + }, +/turf/open/space, +/area/space/nearstation) +"aNU" = ( +/obj/structure/transit_tube{ + icon_state = "S-NW" + }, +/turf/open/space, +/area/space/nearstation) +"aNV" = ( +/obj/structure/transit_tube{ + icon_state = "NE-SW" + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"aNW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/power/apc{ + dir = 8; + name = "Gravity Generator APC"; + pixel_x = -25; + pixel_y = 1 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/engine/gravity_generator) +"aNX" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/engine/gravity_generator) +"aNY" = ( +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/engine/gravity_generator) +"aNZ" = ( +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/engine/gravity_generator) +"aOa" = ( +/obj/machinery/door/airlock/engineering{ + name = "Gravity Generator"; + req_access_txt = "11" + }, +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 1 + }, +/area/engine/gravity_generator) +"aOb" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"aOc" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"aOd" = ( +/obj/machinery/door/airlock/engineering{ + name = "Gravity Generator"; + req_access_txt = "11" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warning" + }, +/area/engine/gravity_generator) +"aOe" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warning" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aOf" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aOg" = ( +/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aOh" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_access_txt = "0"; + req_one_access_txt = "12; 25; 28; 30" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aOi" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aOj" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aOk" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aOl" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aOm" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aOn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aOo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/hydroponics) +"aOp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/structure/plasticflaps{ + opacity = 1 + }, +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=4"; + freq = 1400; + location = "Hydroponics" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "loadingarea" + }, +/area/hydroponics) +"aOq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/machinery/door/window/eastleft{ + dir = 2; + name = "Hydroponics Deliveries"; + req_access_txt = "35" + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/hydroponics) +"aOr" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/structure/closet/secure_closet/hydroponics, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/hydroponics) +"aOs" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/structure/closet/secure_closet/hydroponics, +/obj/machinery/camera{ + c_tag = "Hydroponics" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/hydroponics) +"aOt" = ( +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/reagent_dispensers/watertank, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/hydroponics) +"aOu" = ( +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/sink{ + pixel_y = 28 + }, +/obj/structure/closet/crate/hydroponics, +/obj/item/weapon/shovel/spade, +/obj/item/weapon/wrench, +/obj/item/weapon/screwdriver, +/obj/item/weapon/reagent_containers/glass/bucket, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/hydroponics) +"aOv" = ( +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/machinery/firealarm{ + pixel_y = 25 + }, +/obj/structure/table, +/obj/machinery/reagentgrinder, +/obj/item/weapon/paper/hydroponics, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/hydroponics) +"aOw" = ( +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/structure/table, +/obj/item/weapon/reagent_containers/spray/plantbgone, +/obj/item/weapon/reagent_containers/spray/plantbgone, +/obj/item/weapon/grenade/chem_grenade/antiweed, +/obj/item/weapon/grenade/chem_grenade/antiweed, +/turf/open/floor/plasteel{ + icon_state = "green"; + dir = 5 + }, +/area/hydroponics) +"aOx" = ( +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/closed/wall, +/area/hydroponics) +"aOy" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aOz" = ( +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aOA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/green{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aOB" = ( +/obj/structure/table/wood, +/obj/item/weapon/storage/photo_album, +/obj/item/device/camera, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aOC" = ( +/obj/structure/table/wood, +/obj/item/weapon/book/manual/wiki/security_space_law, +/obj/item/weapon/hand_tele, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Captain's Desk"; + departmentType = 5; + name = "Captain's Requests Console"; + pixel_x = -30 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aOD" = ( +/obj/structure/table/wood, +/obj/item/weapon/folder/blue, +/obj/item/weapon/stamp/captain, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aOE" = ( +/obj/structure/table/wood, +/obj/item/device/flashlight/lamp/green{ + pixel_x = 1; + pixel_y = 5 + }, +/obj/item/weapon/paper_bin, +/obj/item/weapon/pen, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aOF" = ( +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/carpet, +/area/crew_quarters/captain) +"aOG" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/mob/living/simple_animal/pet/fox/Renault, +/turf/open/floor/carpet, +/area/crew_quarters/captain) +"aOH" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aOI" = ( +/obj/machinery/door/airlock{ + name = "Unisex Restroom"; + req_access_txt = "0" + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/prison) +"aOJ" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/table/glass, +/obj/item/weapon/reagent_containers/syringe/lethal/choral, +/obj/item/weapon/reagent_containers/syringe/lethal/choral{ + pixel_x = -2; + pixel_y = 5 + }, +/obj/item/weapon/reagent_containers/syringe/lethal/choral{ + pixel_x = -4; + pixel_y = 10 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhite" + }, +/area/security/prison) +"aOK" = ( +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/security/prison) +"aOL" = ( +/obj/structure/bed, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/security/prison) +"aOM" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warnwhite" + }, +/area/security/prison) +"aON" = ( +/obj/machinery/door/airlock/highsecurity{ + name = "Prisoner Treatment Center"; + req_access_txt = "2" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhite" + }, +/area/security/prison) +"aOO" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/security/prison) +"aOP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/security/prison) +"aOQ" = ( +/obj/structure/table, +/obj/item/weapon/paper_bin, +/obj/machinery/camera{ + c_tag = "Interrogation Observation"; + dir = 4 + }, +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aOR" = ( +/obj/structure/chair, +/turf/open/floor/plasteel, +/area/security/main) +"aOS" = ( +/obj/structure/chair, +/obj/item/device/radio/intercom{ + broadcasting = 1; + freerange = 1; + frequency = 1424; + layer = 3.3; + listening = 0; + name = "Interrogation Intercom"; + pixel_y = -31 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aOT" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/obj/structure/table, +/obj/item/weapon/phone{ + desc = "Supposedly a direct line to NanoTrasen Central Command. It's not even plugged in."; + pixel_x = -3; + pixel_y = 3 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aOU" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/security/main) +"aOV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/main) +"aOW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/main) +"aOX" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/wood, +/area/lawoffice) +"aOY" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/lawoffice) +"aOZ" = ( +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 2; + name = "Law Office APC"; + pixel_y = -24 + }, +/turf/open/floor/wood, +/area/lawoffice) +"aPa" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/obj/machinery/camera{ + c_tag = "Law Office"; + dir = 1 + }, +/turf/open/floor/wood, +/area/lawoffice) +"aPb" = ( +/obj/structure/table/wood, +/obj/item/weapon/folder/red, +/obj/machinery/light, +/obj/machinery/newscaster{ + pixel_y = -32 + }, +/obj/item/weapon/book/manual/wiki/security_space_law, +/turf/open/floor/wood, +/area/lawoffice) +"aPc" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/wood, +/area/lawoffice) +"aPd" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aPe" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aPf" = ( +/obj/structure/transit_tube{ + icon_state = "N-S" + }, +/turf/open/space, +/area/space/nearstation) +"aPg" = ( +/obj/structure/lattice, +/obj/structure/transit_tube{ + icon_state = "D-NW" + }, +/turf/open/space, +/area/space/nearstation) +"aPh" = ( +/turf/closed/wall/r_wall, +/area/engine/engineering) +"aPi" = ( +/turf/closed/wall/r_wall, +/area/engine/chiefs_office) +"aPj" = ( +/obj/structure/grille, +/obj/structure/cable/yellow{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/engine/chiefs_office) +"aPk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'HIGH VOLTAGE'"; + icon_state = "shock"; + name = "HIGH VOLTAGE"; + pixel_x = -32 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/engine/gravity_generator) +"aPl" = ( +/obj/structure/cable, +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/engine/gravity_generator) +"aPm" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/glass_engineering{ + name = "Gravity Generator"; + req_access_txt = "11"; + req_one_access_txt = "0" + }, +/turf/open/floor/plasteel{ + icon_state = "warndark"; + dir = 1 + }, +/area/engine/gravity_generator) +"aPn" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/engine/gravity_generator) +"aPo" = ( +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'RADIOACTIVE AREA'"; + icon_state = "radiation"; + name = "RADIOACTIVE AREA"; + pixel_x = 32 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/engine/gravity_generator) +"aPp" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"aPq" = ( +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"aPr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/sign/securearea{ + pixel_x = -32 + }, +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aPs" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/engineering{ + name = "Crew Area Power Control"; + req_access_txt = "11" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aPt" = ( +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/closed/wall, +/area/maintenance/fsmaint2) +"aPu" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aPv" = ( +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aPw" = ( +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aPx" = ( +/turf/closed/wall, +/area/hydroponics) +"aPy" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/hydroponics) +"aPz" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hydroponics) +"aPA" = ( +/obj/effect/landmark/start{ + name = "Botanist" + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"aPB" = ( +/turf/open/floor/plasteel, +/area/hydroponics) +"aPC" = ( +/turf/open/floor/plasteel{ + icon_state = "green"; + dir = 4 + }, +/area/hydroponics) +"aPD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aPE" = ( +/obj/structure/table/wood, +/obj/machinery/light{ + dir = 8 + }, +/obj/item/clothing/mask/cigarette/cigar, +/obj/item/weapon/storage/box/matches, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aPF" = ( +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aPG" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aPH" = ( +/obj/machinery/computer/card, +/obj/item/weapon/card/id/captains_spare, +/obj/machinery/button/door{ + id = "capffice"; + name = "Captain's Shutters Control"; + pixel_x = -24; + req_access_txt = "22" + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aPI" = ( +/obj/structure/chair/comfy/black{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aPJ" = ( +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aPK" = ( +/obj/structure/chair/comfy/beige{ + dir = 8 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aPL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/carpet, +/area/crew_quarters/captain) +"aPM" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/carpet, +/area/crew_quarters/captain) +"aPN" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/carpet, +/area/crew_quarters/captain) +"aPO" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aPP" = ( +/turf/closed/mineral, +/area/mine/explored) +"aPQ" = ( +/obj/machinery/shower{ + pixel_y = 20 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/prison) +"aPR" = ( +/obj/item/weapon/soap/nanotrasen, +/obj/machinery/shower{ + pixel_y = 20 + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/prison) +"aPS" = ( +/obj/structure/closet, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "warnwhite" + }, +/area/security/prison) +"aPT" = ( +/turf/open/floor/plasteel{ + icon_state = "warnwhite" + }, +/area/security/prison) +"aPU" = ( +/obj/machinery/light_switch{ + pixel_y = -22 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite" + }, +/area/security/prison) +"aPV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "warnwhite" + }, +/area/security/prison) +"aPW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/security/prison) +"aPX" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/security/prison) +"aPY" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/security/prison) +"aPZ" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/security/prison) +"aQa" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/door/poddoor/shutters{ + id = "interrogation"; + name = "interrogation shutters" + }, +/turf/open/floor/plating, +/area/security/main) +"aQb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/security/main) +"aQc" = ( +/obj/structure/table/wood, +/obj/item/device/flashlight/lamp/green{ + on = 0; + pixel_x = -3; + pixel_y = 8 + }, +/obj/item/weapon/paper_bin{ + pixel_y = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/main) +"aQd" = ( +/obj/machinery/computer/security, +/turf/open/floor/plasteel, +/area/security/main) +"aQe" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel, +/area/security/main) +"aQf" = ( +/obj/structure/table/wood, +/obj/item/device/flashlight/lamp/green{ + on = 0; + pixel_x = -3; + pixel_y = 8 + }, +/obj/item/weapon/paper_bin{ + pixel_y = 4 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aQg" = ( +/obj/machinery/computer/secure_data, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/security/main) +"aQh" = ( +/turf/open/floor/plasteel{ + icon_state = "redcorner" + }, +/area/security/main) +"aQi" = ( +/turf/closed/wall/r_wall, +/area/security/brig) +"aQj" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock{ + name = "Law Office"; + req_access_txt = "38" + }, +/turf/open/floor/wood, +/area/security/brig) +"aQk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall, +/area/security/brig) +"aQl" = ( +/turf/closed/wall, +/area/security/brig) +"aQm" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aQn" = ( +/obj/structure/transit_tube{ + icon_state = "S-NE" + }, +/turf/open/space, +/area/space/nearstation) +"aQo" = ( +/obj/machinery/field/generator, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plating, +/area/engine/engineering) +"aQp" = ( +/obj/machinery/field/generator, +/turf/open/floor/plating, +/area/engine/engineering) +"aQq" = ( +/obj/machinery/power/port_gen/pacman, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"aQr" = ( +/obj/machinery/portable_atmospherics/canister/toxins, +/obj/machinery/camera{ + c_tag = "Engineering Secure Storage" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"aQs" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/rods{ + amount = 50 + }, +/obj/item/stack/sheet/glass{ + amount = 50 + }, +/obj/item/weapon/electronics/airlock, +/obj/item/weapon/electronics/airlock, +/obj/item/weapon/stock_parts/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/obj/item/stack/sheet/mineral/plasma{ + amount = 30 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"aQt" = ( +/obj/structure/closet/secure_closet/engineering_chief, +/obj/machinery/status_display{ + layer = 4; + pixel_y = 32 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Chief Engineer's Desk"; + departmentType = 3; + name = "Chief Engineer's Requests Console"; + pixel_x = -32 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "yellow" + }, +/area/engine/chiefs_office) +"aQu" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/chiefs_office) +"aQv" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/computer/card/minor/ce, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/chiefs_office) +"aQw" = ( +/obj/structure/table, +/obj/item/device/flashlight/lamp, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/chiefs_office) +"aQx" = ( +/obj/machinery/disposal/bin, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/chiefs_office) +"aQy" = ( +/obj/structure/filingcabinet/filingcabinet, +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "yellow" + }, +/area/engine/chiefs_office) +"aQz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/engine/gravity_generator) +"aQA" = ( +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/engine/gravity_generator) +"aQB" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/gravity_generator) +"aQC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aQD" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aQE" = ( +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/structure/rack, +/obj/item/clothing/mask/gas, +/obj/item/device/multitool, +/obj/structure/cable/green{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aQF" = ( +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/closed/wall, +/area/maintenance/fsmaint2) +"aQG" = ( +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/structure/cable/green{ + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aQH" = ( +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aQI" = ( +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/structure/grille{ + density = 0; + icon_state = "brokengrille" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aQJ" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/structure/cable/green{ + icon_state = "2-8" + }, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aQK" = ( +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aQL" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Hydroponics Maintenance"; + req_access_txt = "35"; + req_one_access_txt = "0" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aQM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plasteel, +/area/hydroponics) +"aQN" = ( +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plasteel, +/area/hydroponics) +"aQO" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/sign/botany{ + pixel_x = -32 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "greencorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aQP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aQQ" = ( +/obj/structure/table/wood, +/obj/item/weapon/reagent_containers/food/drinks/flask{ + pixel_x = 8 + }, +/obj/item/weapon/razor{ + pixel_x = -4; + pixel_y = 2 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aQR" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aQS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aQT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/crew_quarters/captain) +"aQU" = ( +/obj/machinery/computer/communications, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aQV" = ( +/obj/structure/table/wood, +/obj/item/device/laser_pointer/green, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aQW" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aQX" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/carpet, +/area/crew_quarters/captain) +"aQY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/carpet, +/area/crew_quarters/captain) +"aQZ" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/carpet, +/area/crew_quarters/captain) +"aRa" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aRb" = ( +/turf/closed/wall/r_wall, +/area/bridge) +"aRc" = ( +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/prison) +"aRd" = ( +/obj/machinery/door/window/westleft{ + base_state = "right"; + dir = 2; + icon_state = "right"; + name = "Unisex Showers"; + req_access_txt = "0" + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/prison) +"aRe" = ( +/obj/structure/window/reinforced, +/obj/item/weapon/bikehorn/rubberducky, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/prison) +"aRf" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/security/prison) +"aRg" = ( +/obj/machinery/door/airlock/glass_security{ + name = "Prison Medbay"; + req_access_txt = "2" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/security/prison) +"aRh" = ( +/obj/machinery/door/airlock/glass_security{ + name = "Prison Medbay"; + req_access_txt = "2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/security/prison) +"aRi" = ( +/obj/machinery/light_switch{ + dir = 8; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"aRj" = ( +/obj/structure/chair, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"aRk" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"aRl" = ( +/obj/machinery/door/airlock/security{ + desc = "The room set aside for the interrogation of prisoners, suspects, and witnesses."; + name = "Interrogation Room"; + req_access_txt = "63" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"aRm" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/security/main) +"aRn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/main) +"aRo" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Security Officer" + }, +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aRp" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/main) +"aRq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aRr" = ( +/obj/effect/landmark/start{ + name = "Security Officer" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aRs" = ( +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/main) +"aRt" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aRu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aRv" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/door/window/brigdoor/eastleft{ + id = "Cell 1"; + name = "Cell One"; + req_access_txt = "2" + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "Security Blast Door" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aRw" = ( +/turf/open/floor/plasteel, +/area/security/brig) +"aRx" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/obj/machinery/camera{ + c_tag = "Brig Cell One"; + network = list("SS13","Prison") + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aRy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/brig) +"aRz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/grille, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "Security Blast Door" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/brig) +"aRA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aRB" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aRC" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aRD" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Port Hallway Fore"; + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "greencorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aRE" = ( +/obj/structure/transit_tube{ + icon_state = "N-S-Pass" + }, +/turf/open/space, +/area/space/nearstation) +"aRF" = ( +/obj/structure/lattice, +/obj/structure/grille, +/turf/open/space, +/area/space/nearstation) +"aRG" = ( +/obj/item/weapon/reagent_containers/dropper, +/turf/open/space, +/area/space/nearstation) +"aRH" = ( +/obj/machinery/shieldgen, +/turf/open/floor/plating, +/area/engine/engineering) +"aRI" = ( +/turf/open/floor/plating, +/area/engine/engineering) +"aRJ" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/camera{ + c_tag = "Chief Engineer's Office"; + dir = 4 + }, +/obj/machinery/suit_storage_unit/ce, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/engine/chiefs_office) +"aRK" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/engine/chiefs_office) +"aRL" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/landmark/start{ + name = "Chief Engineer" + }, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/chiefs_office) +"aRM" = ( +/obj/structure/table, +/obj/item/weapon/paper_bin, +/obj/item/weapon/stamp/ce, +/turf/open/floor/plasteel, +/area/engine/chiefs_office) +"aRN" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/engine/chiefs_office) +"aRO" = ( +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engine/chiefs_office) +"aRP" = ( +/obj/structure/grille, +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/engine/chiefs_office) +"aRQ" = ( +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 1 + }, +/area/engine/gravity_generator) +"aRR" = ( +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/engine/gravity_generator) +"aRS" = ( +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 4 + }, +/area/engine/gravity_generator) +"aRT" = ( +/obj/machinery/camera{ + c_tag = "Gravity Generator Room"; + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/engine/gravity_generator) +"aRU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/newscaster{ + dir = 8; + pixel_x = -32 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aRV" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aRW" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/camera{ + c_tag = "Crew Area Power Control"; + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aRX" = ( +/obj/structure/cable/green, +/obj/machinery/computer/monitor, +/obj/structure/cable/green{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aRY" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "Kitchen APC"; + pixel_x = 0; + pixel_y = -25 + }, +/obj/structure/cable/green, +/turf/open/floor/plating, +/area/crew_quarters/kitchen) +"aRZ" = ( +/obj/structure/cable/green{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aSa" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Hydroponics APC"; + pixel_x = 25 + }, +/obj/structure/cable/green{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/hydroponics) +"aSb" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"aSc" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"aSd" = ( +/obj/machinery/door/airlock/glass{ + desc = "A place to grow plants, a vital part of a space station's long-term sustainability."; + name = "Hydroponics"; + req_access_txt = "35"; + req_one_access_txt = "0" + }, +/turf/open/floor/plasteel{ + icon_state = "greenfull" + }, +/area/hydroponics) +"aSe" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aSf" = ( +/obj/structure/dresser, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aSg" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/captain, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/obj/effect/landmark/start{ + name = "Captain" + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aSh" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/obj/structure/closet/secure_closet/captains, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aSi" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/crew_quarters/captain) +"aSj" = ( +/obj/item/device/radio/intercom{ + dir = 8; + freerange = 1; + name = "Station Intercom (Captain)"; + pixel_x = -28 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/suit_storage_unit/captain, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aSk" = ( +/obj/machinery/keycard_auth{ + pixel_y = -24 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aSl" = ( +/obj/machinery/newscaster/security_unit{ + pixel_y = -32 + }, +/obj/machinery/door/window/eastleft{ + req_access_txt = "20" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aSm" = ( +/obj/machinery/light, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aSn" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aSo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "1-4"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aSp" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/obj/structure/cable/blue{ + icon_state = "2-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aSq" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aSr" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/bridge) +"aSs" = ( +/turf/open/floor/plating, +/area/bridge) +"aSt" = ( +/obj/structure/shuttle/engine/propulsion/burst{ + dir = 4 + }, +/turf/closed/wall/shuttle{ + icon_state = "swall_f6" + }, +/area/shuttle/pod_3) +"aSu" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall12" + }, +/area/shuttle/pod_3) +"aSv" = ( +/turf/open/space, +/turf/closed/wall/shuttle{ + icon_state = "swall_f10" + }, +/area/shuttle/pod_3) +"aSw" = ( +/obj/effect/landmark{ + name = "carpspawn" + }, +/turf/open/space, +/area/space) +"aSx" = ( +/obj/structure/table, +/obj/machinery/microwave{ + pixel_x = -3; + pixel_y = 6 + }, +/obj/machinery/camera{ + c_tag = "Prison Fore"; + dir = 4; + network = list("SS13","Prison") + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aSy" = ( +/turf/open/floor/plasteel, +/area/security/prison) +"aSz" = ( +/obj/machinery/washing_machine, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/security/prison) +"aSA" = ( +/obj/structure/table, +/obj/structure/bedsheetbin, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/security/prison) +"aSB" = ( +/obj/structure/chair/stool, +/obj/machinery/button/door{ + id = "permabolt1"; + name = "Cell Bolt Control"; + normaldoorcontrol = 1; + pixel_y = 25; + req_access_txt = "0"; + specialfunctions = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aSC" = ( +/obj/structure/table, +/obj/machinery/flasher{ + id = "PCell 1"; + pixel_y = 26 + }, +/obj/machinery/camera{ + c_tag = "Prison Cell 1"; + network = list("SS13","Prison") + }, +/obj/item/weapon/razor, +/turf/open/floor/plasteel, +/area/security/prison) +"aSD" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aSE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/button/flasher{ + id = "PCell 1"; + pixel_x = -25 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aSF" = ( +/turf/open/floor/plasteel{ + icon_state = "whitehall"; + dir = 1 + }, +/area/security/prison) +"aSG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "whitehall"; + dir = 1 + }, +/area/security/prison) +"aSH" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"aSI" = ( +/obj/structure/table, +/obj/item/device/taperecorder, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"aSJ" = ( +/obj/structure/table, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"aSK" = ( +/obj/structure/table, +/obj/item/weapon/paper, +/obj/item/weapon/pen, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"aSL" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"aSM" = ( +/obj/machinery/status_display, +/turf/closed/wall, +/area/security/main) +"aSN" = ( +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/security/main) +"aSO" = ( +/obj/structure/table/wood, +/obj/item/device/flashlight/lamp/green{ + on = 0; + pixel_x = -3; + pixel_y = 8 + }, +/obj/item/weapon/paper_bin{ + pixel_y = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/item/weapon/storage/box/cups, +/turf/open/floor/plasteel, +/area/security/main) +"aSP" = ( +/obj/structure/table/wood, +/obj/machinery/recharger, +/turf/open/floor/plasteel, +/area/security/main) +"aSQ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aSR" = ( +/obj/structure/table/wood, +/obj/machinery/recharger, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aSS" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/main) +"aST" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/glass_security{ + name = "Security Office"; + req_access_txt = "0"; + req_one_access_txt = "1; 4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "redfull" + }, +/area/security/main) +"aSU" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/security/brig) +"aSV" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aSW" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aSX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/grille, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "Security Blast Door" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/brig) +"aSY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/closet/secure_closet/brig{ + id = "Cell 1" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aSZ" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/obj/machinery/flasher{ + id = "Cell 1"; + pixel_y = -25 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aTa" = ( +/obj/structure/bed, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/item/weapon/bedsheet/brown, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/brig) +"aTb" = ( +/obj/structure/grille, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "Security Blast Door" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/brig) +"aTc" = ( +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aTd" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aTe" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "green"; + dir = 4 + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aTf" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plasteel{ + icon_state = "greenfull" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aTg" = ( +/obj/machinery/power/emitter, +/turf/open/floor/plating, +/area/engine/engineering) +"aTh" = ( +/obj/machinery/the_singularitygen, +/turf/open/floor/plating, +/area/engine/engineering) +"aTi" = ( +/obj/machinery/computer/station_alert, +/obj/machinery/button/door{ + desc = "A remote control-switch for secure storage."; + id = "Secure Storage"; + name = "Engineering Secure Storage"; + pixel_x = -24; + pixel_y = 4; + req_access_txt = "11" + }, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = -22; + pixel_y = -6 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/engine/chiefs_office) +"aTj" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/chiefs_office) +"aTk" = ( +/obj/structure/table, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/item/weapon/storage/box/permits{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/stack/medical/bruise_pack{ + pixel_x = -3; + pixel_y = 2 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/chiefs_office) +"aTl" = ( +/obj/structure/table, +/obj/item/weapon/folder/yellow, +/obj/item/weapon/pen, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/mob/living/simple_animal/parrot/Poly, +/turf/open/floor/plasteel, +/area/engine/chiefs_office) +"aTm" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/chiefs_office) +"aTn" = ( +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engine/chiefs_office) +"aTo" = ( +/obj/structure/grille, +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/engine/chiefs_office) +"aTp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/engine/gravity_generator) +"aTq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/engine/gravity_generator) +"aTr" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/engine/gravity_generator) +"aTs" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/engine/gravity_generator) +"aTt" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aTu" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aTv" = ( +/obj/structure/cable, +/obj/machinery/power/terminal{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aTw" = ( +/obj/structure/cable/green, +/obj/machinery/power/smes{ + charge = 1e+006 + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aTx" = ( +/turf/closed/wall, +/area/crew_quarters/kitchen) +"aTy" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=2"; + freq = 1400; + location = "Kitchen" + }, +/obj/structure/plasticflaps{ + opacity = 1 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "loadingarea" + }, +/area/crew_quarters/kitchen) +"aTz" = ( +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance{ + name = "Kitchen Maintenance"; + req_access_txt = "28"; + req_one_access_txt = "0" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aTA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plasteel, +/area/hydroponics) +"aTB" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plasteel, +/area/hydroponics) +"aTC" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"aTD" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "green"; + dir = 4 + }, +/area/hydroponics) +"aTE" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/hydroponics) +"aTF" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/sortjunction{ + dir = 2; + sortType = 21 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aTG" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_access_txt = "12"; + req_one_access_txt = "0" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aTH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock/command{ + desc = "The office of the station's commanding officer, answerable only to Central Command and Space Law."; + name = "Captain's Quarters"; + req_access = null; + req_access_txt = "20" + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aTI" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/closed/wall/r_wall, +/area/crew_quarters/captain) +"aTJ" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "Bridge Escape Pod"; + dir = 4 + }, +/turf/open/floor/plating, +/area/bridge) +"aTK" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Escape Pod Airlock" + }, +/obj/docking_port/mobile/pod{ + dir = 4; + id = "pod3"; + name = "escape pod 3" + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/pod_3) +"aTL" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + pixel_y = 25 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/pod_3) +"aTM" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/pod_3) +"aTN" = ( +/obj/structure/grille, +/obj/structure/window/shuttle, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/pod_3) +"aTO" = ( +/obj/structure/sign/securearea, +/turf/closed/wall/r_wall, +/area/security/prison) +"aTP" = ( +/obj/structure/table, +/turf/open/floor/plasteel, +/area/security/prison) +"aTQ" = ( +/obj/machinery/door/poddoor{ + density = 0; + icon_state = "open"; + id = "permacell1"; + name = "Cell Shutters"; + opacity = 0 + }, +/obj/machinery/door/airlock/glass{ + id_tag = "permabolt1"; + name = "Cell 1" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aTR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aTS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aTT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/prison) +"aTU" = ( +/obj/machinery/door/airlock/glass_security{ + name = "Cell 1"; + req_access_txt = "2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aTV" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "yellowcorner" + }, +/area/security/prison) +"aTW" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"aTX" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"aTY" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + freerange = 1; + frequency = 1424; + name = "Interrogation Intercom"; + pixel_y = -31 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"aTZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/camera{ + c_tag = "Interrogation Room"; + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"aUa" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/security/main) +"aUb" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/newscaster/security_unit{ + pixel_x = -32 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/security/main) +"aUc" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/security/main) +"aUd" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Security Officer" + }, +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aUe" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/main) +"aUf" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/main) +"aUg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/security/brig) +"aUh" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aUi" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aUj" = ( +/obj/machinery/door_timer{ + dir = 4; + id = "Cell 1"; + name = "Cell One Timer"; + pixel_x = 0 + }, +/turf/closed/wall/r_wall, +/area/security/brig) +"aUk" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/closed/wall/r_wall, +/area/security/brig) +"aUl" = ( +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plasteel{ + icon_state = "greenfull" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aUm" = ( +/obj/machinery/door/poddoor{ + id = "Secure Storage"; + name = "Secure Storage" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"aUn" = ( +/obj/item/weapon/cartridge/engineering{ + pixel_x = 4; + pixel_y = 5 + }, +/obj/item/weapon/cartridge/engineering{ + pixel_x = -3; + pixel_y = 2 + }, +/obj/item/weapon/cartridge/engineering{ + pixel_x = 3 + }, +/obj/item/weapon/stock_parts/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/obj/structure/table, +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "Chief Engineer's Office APC"; + pixel_x = -24 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel{ + icon_state = "yellow"; + dir = 10 + }, +/area/engine/chiefs_office) +"aUo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/engine/chiefs_office) +"aUp" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/engine/chiefs_office) +"aUq" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/engine/chiefs_office) +"aUr" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/engine/chiefs_office) +"aUs" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "yellow" + }, +/area/engine/chiefs_office) +"aUt" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/engine/gravity_generator) +"aUu" = ( +/obj/machinery/gravity_generator/main/station, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/engine/gravity_generator) +"aUv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/camera{ + c_tag = "Starboard Hallway Central Port"; + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aUw" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 29 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aUx" = ( +/turf/closed/wall, +/area/crew_quarters/bar) +"aUy" = ( +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance{ + name = "Bar Storage Maintenance"; + req_access_txt = "25"; + req_one_access_txt = "0" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aUz" = ( +/obj/machinery/door/window/southleft{ + dir = 4; + name = "Kitchen Deliveries"; + req_access_txt = "28" + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/crew_quarters/kitchen) +"aUA" = ( +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/obj/structure/closet/secure_closet/freezer/meat, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/crew_quarters/kitchen) +"aUB" = ( +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/crew_quarters/kitchen) +"aUC" = ( +/obj/machinery/gibber, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/crew_quarters/kitchen) +"aUD" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/effect/landmark/start{ + name = "Botanist" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/hydroponics) +"aUE" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hydroponics) +"aUF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"aUG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "green"; + dir = 4 + }, +/area/hydroponics) +"aUH" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/westright{ + name = "Hydroponics Desk"; + req_access_txt = "35"; + req_one_access_txt = "0" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "greenfull" + }, +/area/hydroponics) +"aUI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aUJ" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aUK" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_access_txt = "19"; + req_one_access_txt = "0" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aUL" = ( +/turf/open/floor/plasteel, +/area/bridge) +"aUM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/bridge) +"aUN" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Bridge"; + departmentType = 5; + name = "Bridge Requests Console"; + pixel_y = 30 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aUO" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aUP" = ( +/obj/machinery/door/airlock/external{ + desc = "Leads to one of the station's small, FTL-capable lifeboats."; + name = "Bridge Escape Pod"; + req_access = null; + req_access_txt = "0" + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plating, +/area/bridge) +"aUQ" = ( +/obj/structure/shuttle/engine/propulsion/burst{ + dir = 4 + }, +/turf/closed/wall/shuttle{ + icon_state = "swall_f5" + }, +/area/shuttle/pod_3) +"aUR" = ( +/turf/open/space, +/turf/closed/wall/shuttle{ + icon_state = "swall_f9" + }, +/area/shuttle/pod_3) +"aUS" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/open/floor/plating, +/area/security/prison) +"aUT" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aUU" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aUV" = ( +/obj/structure/chair/stool, +/turf/open/floor/plasteel, +/area/security/prison) +"aUW" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aUX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aUY" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aUZ" = ( +/obj/structure/closet, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aVa" = ( +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aVb" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/brown, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/security/prison) +"aVc" = ( +/obj/machinery/button/door{ + name = "Cell 1 Lockdown"; + pixel_x = -26; + req_access_txt = "2"; + id = "permacell1" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aVd" = ( +/obj/machinery/computer/security/telescreen{ + desc = "Used for watching the Prison Wing."; + dir = 8; + name = "Prison Monitor"; + network = list("Prison"); + pixel_x = 32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/security/prison) +"aVe" = ( +/obj/structure/closet/wardrobe/red, +/turf/open/floor/plasteel{ + icon_state = "redcorner" + }, +/area/security/main) +"aVf" = ( +/obj/machinery/photocopier, +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/security/main) +"aVg" = ( +/obj/structure/reagent_dispensers/water_cooler, +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/security/main) +"aVh" = ( +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/security/main) +"aVi" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/security/main) +"aVj" = ( +/obj/machinery/vending/coffee, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 6 + }, +/area/security/main) +"aVk" = ( +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/main) +"aVl" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/security/brig) +"aVm" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aVn" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/door/window/brigdoor/eastleft{ + id = "Cell 2"; + name = "Cell Two"; + req_access_txt = "2" + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "Security Blast Door" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aVo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aVp" = ( +/obj/machinery/camera{ + c_tag = "Brig Cell Two"; + network = list("SS13","Prison") + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aVq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/brig) +"aVr" = ( +/obj/structure/grille, +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "Security Blast Door" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/brig) +"aVs" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aVt" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aVu" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aVv" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 29 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "greencorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aVw" = ( +/obj/structure/transit_tube{ + icon_state = "N-S" + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"aVx" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'RADIOACTIVE AREA'"; + icon_state = "radiation"; + name = "RADIOACTIVE AREA"; + pixel_x = -32 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"aVy" = ( +/turf/open/floor/plating/airless, +/area/engine/engineering) +"aVz" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"aVA" = ( +/obj/machinery/camera/emp_proof{ + c_tag = "Singularity Fore"; + network = list("SS13","Singularity") + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"aVB" = ( +/obj/item/weapon/weldingtool, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"aVC" = ( +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"aVD" = ( +/obj/machinery/door/airlock/external{ + name = "Engine Access"; + req_access = null; + req_access_txt = "10;13" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/engine/engineering) +"aVE" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_y = 32 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 8 + }, +/area/engine/engineering) +"aVF" = ( +/obj/machinery/door/airlock/external{ + name = "Engine Access"; + req_access = null; + req_access_txt = "10;13" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"aVG" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "yellow" + }, +/area/engine/engineering) +"aVH" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/engineering) +"aVI" = ( +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/engineering) +"aVJ" = ( +/obj/structure/tank_dispenser, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/engineering) +"aVK" = ( +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/engine/chiefs_office) +"aVL" = ( +/obj/structure/grille, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/door/firedoor, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/engine/chiefs_office) +"aVM" = ( +/obj/machinery/door/airlock/glass_command{ + desc = "The office of the Head directly responsible for heat, power, and air pressure concerns aboard SS13."; + name = "Chief Engineer's Office"; + req_access_txt = "56" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowfull" + }, +/area/engine/chiefs_office) +"aVN" = ( +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/yellow{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/engine/chiefs_office) +"aVO" = ( +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/engine/gravity_generator) +"aVP" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=2"; + freq = 1400; + location = "Bar" + }, +/obj/structure/plasticflaps{ + opacity = 1 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "loadingarea" + }, +/area/crew_quarters/bar) +"aVQ" = ( +/obj/machinery/door/window/eastleft{ + name = "Bar Deliveries"; + req_access_txt = "25" + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/crew_quarters/bar) +"aVR" = ( +/obj/structure/sink/kitchen{ + pixel_y = 32 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aVS" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 22 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aVT" = ( +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aVU" = ( +/obj/structure/kitchenspike, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/crew_quarters/kitchen) +"aVV" = ( +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/crew_quarters/kitchen) +"aVW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/hydroponics) +"aVX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plasteel, +/area/hydroponics) +"aVY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plasteel, +/area/hydroponics) +"aVZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plasteel, +/area/hydroponics) +"aWa" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"aWb" = ( +/obj/machinery/biogenerator, +/turf/open/floor/plasteel{ + icon_state = "green"; + dir = 4 + }, +/area/hydroponics) +"aWc" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "greencorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aWd" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aWe" = ( +/turf/closed/wall, +/area/crew_quarters/heads) +"aWf" = ( +/obj/structure/plasticflaps{ + opacity = 1 + }, +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=1"; + dir = 1; + freq = 1400; + location = "Bridge" + }, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "loadingarea" + }, +/area/crew_quarters/heads) +"aWg" = ( +/turf/closed/wall/r_wall, +/area/crew_quarters/heads) +"aWh" = ( +/turf/closed/wall, +/area/bridge) +"aWi" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/plasteel, +/area/bridge) +"aWj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/bridge) +"aWk" = ( +/turf/open/floor/plasteel{ + icon_state = "redcorner" + }, +/area/bridge) +"aWl" = ( +/obj/structure/sign/pods, +/turf/closed/wall/r_wall, +/area/bridge) +"aWm" = ( +/obj/item/weapon/reagent_containers/food/snacks/grown/potato, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"aWn" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aWo" = ( +/obj/structure/table, +/obj/item/weapon/paper_bin, +/turf/open/floor/plasteel, +/area/security/prison) +"aWp" = ( +/obj/structure/table, +/obj/item/weapon/storage/pill_bottle/dice, +/turf/open/floor/plasteel, +/area/security/prison) +"aWq" = ( +/obj/machinery/newscaster{ + dir = 8; + pixel_x = 32 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aWr" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/closed/wall, +/area/security/prison) +"aWs" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/prison) +"aWt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/security/prison) +"aWu" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'HIGH VOLTAGE'"; + icon_state = "shock"; + name = "HIGH VOLTAGE" + }, +/turf/closed/wall, +/area/security/prison) +"aWv" = ( +/obj/structure/table, +/obj/item/weapon/storage/box/prisoner, +/obj/item/weapon/paper{ + icon_state = "paper_words"; + info = "ATTN: Please ensure any prisoner being assigned to Rehabilitation Labor Detail is tracking/chem implanted. Please monitor via consoles to ensure security."; + name = "Notice" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellowcorner" + }, +/area/security/prison) +"aWw" = ( +/obj/machinery/computer/prisoner, +/turf/open/floor/plasteel{ + icon_state = "redcorner" + }, +/area/security/prison) +"aWx" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/obj/structure/closet/secure_closet/brig, +/turf/open/floor/plasteel, +/area/security/prison) +"aWy" = ( +/obj/machinery/camera{ + c_tag = "Prison Access"; + dir = 8; + network = list("SS13","Prison") + }, +/obj/structure/closet/secure_closet/brig, +/turf/open/floor/plasteel{ + icon_state = "redcorner" + }, +/area/security/prison) +"aWz" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/main) +"aWA" = ( +/obj/machinery/door/airlock/glass_security{ + name = "Security Office"; + req_access_txt = "0"; + req_one_access_txt = "1; 4" + }, +/turf/open/floor/plasteel{ + icon_state = "redfull" + }, +/area/security/main) +"aWB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/security/brig) +"aWC" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aWD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/brig) +"aWE" = ( +/obj/structure/grille, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "Security Blast Door" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/brig) +"aWF" = ( +/obj/structure/closet/secure_closet/brig{ + id = "Cell 2" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aWG" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/obj/machinery/flasher{ + id = "Cell 2"; + pixel_y = -28 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aWH" = ( +/obj/structure/bed, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/item/weapon/bedsheet/brown, +/obj/machinery/atmospherics/components/unary/vent_scrubber, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/brig) +"aWI" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating, +/area/maintenance/aft) +"aWJ" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 8 + }, +/area/maintenance/aft) +"aWK" = ( +/obj/machinery/door/airlock/external{ + name = "Engineering External Access"; + req_access = null; + req_access_txt = "10;13" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 4 + }, +/area/engine/engineering) +"aWL" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_y = 32 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 8 + }, +/area/engine/engineering) +"aWM" = ( +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 8 + }, +/area/engine/engineering) +"aWN" = ( +/turf/open/floor/plating/airless{ + icon_state = "warnplatecorner" + }, +/area/engine/engineering) +"aWO" = ( +/turf/open/floor/plating/airless{ + icon_state = "warnplate" + }, +/area/engine/engineering) +"aWP" = ( +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/emitter{ + anchored = 1; + state = 2 + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate" + }, +/area/engine/engineering) +"aWQ" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/power/tesla_coil, +/turf/open/floor/plating/airless{ + icon_state = "warnplate" + }, +/area/engine/engineering) +"aWR" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate" + }, +/area/engine/engineering) +"aWS" = ( +/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/open/floor/plating/airless{ + icon_state = "warnplatecorner"; + dir = 1 + }, +/area/engine/engineering) +"aWT" = ( +/turf/closed/wall, +/area/engine/engineering) +"aWU" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 4 + }, +/area/engine/engineering) +"aWV" = ( +/obj/machinery/suit_storage_unit/engine, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/engine/engineering) +"aWW" = ( +/turf/open/floor/plasteel, +/area/engine/engineering) +"aWX" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aWY" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowcorner" + }, +/area/engine/engineering) +"aWZ" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/engineering) +"aXa" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/engineering) +"aXb" = ( +/obj/structure/closet/secure_closet/engineering_welding, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/engineering) +"aXc" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/closet/secure_closet/engineering_electrical, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/engineering) +"aXd" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/engineering) +"aXe" = ( +/obj/item/weapon/reagent_containers/dropper, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/engineering) +"aXf" = ( +/obj/item/stack/sheet/glass{ + amount = 50 + }, +/obj/item/stack/sheet/glass{ + amount = 50 + }, +/obj/item/stack/sheet/glass{ + amount = 50 + }, +/obj/structure/table, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "yellow" + }, +/area/engine/engineering) +"aXg" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/aft) +"aXh" = ( +/obj/structure/reagent_dispensers/beerkeg, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aXi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aXj" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aXk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/closet/secure_closet/bar, +/obj/machinery/camera{ + c_tag = "Bar Storage"; + dir = 8 + }, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aXl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/crew_quarters/kitchen) +"aXm" = ( +/obj/structure/kitchenspike, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/crew_quarters/kitchen) +"aXn" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/mob/living/simple_animal/hostile/retaliate/goat{ + name = "Pete" + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/crew_quarters/kitchen) +"aXo" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/light{ + dir = 8 + }, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/hydroponics) +"aXp" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"aXq" = ( +/obj/machinery/seed_extractor, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "green"; + dir = 4 + }, +/area/hydroponics) +"aXr" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aXs" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aXt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/machinery/camera{ + c_tag = "Starboard Hallway Central Starboard"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bluecorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aXu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/crew_quarters/heads) +"aXv" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/window{ + name = "Bridge Deliveries"; + req_access_txt = "19" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/crew_quarters/heads) +"aXw" = ( +/obj/structure/table, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"aXx" = ( +/obj/machinery/button/door{ + id = "bridge blast"; + name = "Bridge Blast Door Control"; + pixel_x = -1; + pixel_y = 24; + req_access_txt = "19" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"aXy" = ( +/obj/machinery/vending/cola, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"aXz" = ( +/obj/machinery/vending/cigarette, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"aXA" = ( +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"aXB" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"aXC" = ( +/obj/structure/closet, +/turf/open/floor/plasteel{ + icon_state = "bluecorner" + }, +/area/crew_quarters/heads) +"aXD" = ( +/obj/machinery/light_switch{ + dir = 8; + pixel_x = -22 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/bridge) +"aXE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aXF" = ( +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/bridge) +"aXG" = ( +/obj/machinery/computer/secure_data, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/bridge) +"aXH" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "bridgeshut"; + name = "Bridge Shutters" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/bridge) +"aXI" = ( +/obj/structure/grille, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"aXJ" = ( +/obj/machinery/computer/arcade, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aXK" = ( +/obj/structure/table, +/obj/item/weapon/storage/box/donkpockets, +/turf/open/floor/plasteel, +/area/security/prison) +"aXL" = ( +/obj/structure/table, +/obj/item/toy/cards/deck, +/turf/open/floor/plasteel, +/area/security/prison) +"aXM" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aXN" = ( +/obj/structure/chair/stool, +/obj/machinery/button/door{ + id = "permabolt2"; + name = "Cell Bolt Control"; + normaldoorcontrol = 1; + pixel_y = 25; + req_access_txt = "0"; + specialfunctions = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aXO" = ( +/obj/structure/table, +/obj/machinery/flasher{ + id = "PCell 2"; + pixel_y = 26 + }, +/obj/machinery/camera{ + c_tag = "Prison Cell 2"; + network = list("SS13","Prison") + }, +/obj/item/weapon/paper, +/obj/item/weapon/pen, +/turf/open/floor/plasteel, +/area/security/prison) +"aXP" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aXQ" = ( +/obj/machinery/button/flasher{ + pixel_x = -26; + id = "PCell 2" + }, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/obj/machinery/camera{ + dir = 4; + network = list("SS13","Prison"); + c_tag = "Prison Hallway Fore" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aXR" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aXS" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/security/prison) +"aXT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/prison) +"aXU" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/security/prison) +"aXV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/poddoor/preopen{ + id = "Prison Gate"; + name = "Prison Blast Door" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aXW" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/prison) +"aXX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/prison) +"aXY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/prison) +"aXZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 9 + }, +/area/security/brig) +"aYa" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 1 + }, +/area/security/brig) +"aYb" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 1 + }, +/area/security/brig) +"aYc" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "redcorner"; + dir = 1 + }, +/area/security/brig) +"aYd" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aYe" = ( +/obj/machinery/door_timer{ + dir = 4; + id = "Cell 2"; + name = "Cell Two Timer"; + pixel_x = 0 + }, +/turf/closed/wall/r_wall, +/area/security/brig) +"aYf" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/security/brig) +"aYg" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'HIGH VOLTAGE'"; + icon_state = "shock"; + name = "HIGH VOLTAGE"; + pixel_x = -32 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aYh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aYi" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating/airless{ + icon_state = "warnplatecorner"; + dir = 4 + }, +/area/engine/engineering) +"aYj" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_x = -32 + }, +/obj/machinery/power/grounding_rod, +/turf/open/floor/plating/airless{ + icon_state = "warnplatecorner"; + dir = 4 + }, +/area/engine/engineering) +"aYk" = ( +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 4 + }, +/area/engine/engineering) +"aYl" = ( +/obj/structure/cable{ + icon_state = "2-4"; + tag = "icon-2-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 9 + }, +/area/engine/engineering) +"aYm" = ( +/obj/structure/cable{ + tag = "icon-4-8"; + icon_state = "4-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 1 + }, +/area/engine/engineering) +"aYn" = ( +/obj/structure/cable{ + tag = "icon-4-8"; + icon_state = "4-8" + }, +/obj/structure/cable{ + tag = "icon-1-8"; + icon_state = "1-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 1 + }, +/area/engine/engineering) +"aYo" = ( +/obj/structure/cable{ + tag = "icon-0-8"; + icon_state = "0-8" + }, +/obj/machinery/power/tesla_coil, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 1 + }, +/area/engine/engineering) +"aYp" = ( +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 5 + }, +/area/engine/engineering) +"aYq" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'RADIOACTIVE AREA'"; + icon_state = "radiation"; + name = "RADIOACTIVE AREA"; + pixel_x = 32 + }, +/obj/machinery/power/grounding_rod, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 8 + }, +/area/engine/engineering) +"aYr" = ( +/obj/machinery/status_display, +/turf/closed/wall, +/area/engine/engineering) +"aYs" = ( +/obj/machinery/suit_storage_unit/engine, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/engine/engineering) +"aYt" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aYu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aYv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aYw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/landmark/start{ + name = "Station Engineer" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aYx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aYy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aYz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aYA" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aYB" = ( +/obj/structure/table, +/obj/item/weapon/storage/toolbox/mechanical, +/obj/item/weapon/storage/toolbox/mechanical, +/obj/item/weapon/storage/toolbox/mechanical, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowcorner" + }, +/area/engine/engineering) +"aYC" = ( +/obj/item/stack/sheet/plasteel{ + amount = 50 + }, +/obj/item/stack/sheet/plasteel{ + amount = 50 + }, +/obj/structure/table, +/obj/machinery/requests_console{ + department = "Engineering"; + departmentType = 4; + name = "Engineering Requests Console"; + pixel_y = 30 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "yellow" + }, +/area/engine/engineering) +"aYD" = ( +/turf/closed/wall/r_wall, +/area/maintenance/aft) +"aYE" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"aYF" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"aYG" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"aYH" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/atmos{ + name = "Engineering Atmospheric Control"; + req_access_txt = "24" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"aYI" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"aYJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aYK" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aYL" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aYM" = ( +/obj/machinery/vending/cola, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aYN" = ( +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aYO" = ( +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aYP" = ( +/obj/machinery/chem_master, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aYQ" = ( +/obj/machinery/chem_master/condimaster, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/crew_quarters/kitchen) +"aYR" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/crew_quarters/kitchen) +"aYS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/crew_quarters/kitchen) +"aYT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/hydroponics) +"aYU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/hydroponics) +"aYV" = ( +/obj/machinery/vending/hydronutrients, +/turf/open/floor/plasteel{ + icon_state = "green"; + dir = 4 + }, +/area/hydroponics) +"aYW" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-j2"; + dir = 2 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aYX" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aYY" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "blue" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aYZ" = ( +/obj/machinery/door/airlock/glass_command{ + desc = "The station's command center, where the fate of Nanotrasen's trillion-dollar investment is often decided."; + name = "Bridge"; + req_access_txt = "19" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/crew_quarters/heads) +"aZa" = ( +/obj/structure/cable/blue{ + icon_state = "1-4"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"aZb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"aZc" = ( +/obj/machinery/door/poddoor/preopen{ + id = "bridge blast"; + name = "Bridge Blast Door" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"aZd" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/structure/cable/blue{ + icon_state = "2-8"; + d1 = 1; + d2 = 2 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"aZe" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"aZf" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Bridge"; + departmentType = 5; + name = "Bridge Requests Console"; + pixel_y = 30 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"aZg" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"aZh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "blue" + }, +/area/crew_quarters/heads) +"aZi" = ( +/obj/machinery/door/airlock/glass_command{ + desc = "The station's command center, where the fate of Nanotrasen's trillion-dollar investment is often decided."; + name = "Bridge"; + req_access_txt = "19" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/bridge) +"aZj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "2-8"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/structure/disposalpipe/junction{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aZk" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aZl" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "1-8"; + d1 = 1; + d2 = 2 + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel, +/area/bridge) +"aZm" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/bridge) +"aZn" = ( +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/computer/prisoner, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/bridge) +"aZo" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "bridgeshut"; + name = "Bridge Shutters" + }, +/turf/open/floor/plating, +/area/bridge) +"aZp" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'HIGH VOLTAGE'"; + icon_state = "shock"; + name = "HIGH VOLTAGE" + }, +/turf/closed/wall/r_wall, +/area/security/prison) +"aZq" = ( +/obj/machinery/vending/cigarette, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aZr" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aZs" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/chair/stool, +/turf/open/floor/plasteel, +/area/security/prison) +"aZt" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/poddoor{ + density = 0; + icon_state = "open"; + id = "permacell2"; + name = "Cell Shutters"; + opacity = 0 + }, +/obj/machinery/door/airlock/glass{ + id_tag = "permabolt2"; + name = "Cell 2" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aZu" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aZv" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aZw" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/glass_security{ + name = "Cell 2"; + req_access_txt = "2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aZx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aZy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aZz" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/security/prison) +"aZA" = ( +/obj/machinery/door/airlock/glass_security{ + layer = 2.8; + name = "Prison Wing"; + req_access_txt = "2" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowfull" + }, +/area/security/prison) +"aZB" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/security/prison) +"aZC" = ( +/obj/machinery/door/poddoor/preopen{ + id = "Prison Gate"; + name = "Prison Blast Door" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aZD" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/prison) +"aZE" = ( +/obj/machinery/door/airlock/glass_security{ + desc = "The station's long-term incarceration and labor facility. Remember, only the Captain or HoS can authorize sending people here! (Or the Warden, at a pinch.)"; + name = "Prison Access"; + req_access_txt = "2" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "redfull" + }, +/area/security/prison) +"aZF" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/security/brig) +"aZG" = ( +/obj/effect/landmark{ + name = "lightsout" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aZH" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aZI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/security/brig) +"aZJ" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel, +/area/security/brig) +"aZK" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/door/window/brigdoor/eastleft{ + id = "Cell 3"; + name = "Cell Three"; + req_access_txt = "2"; + state_open = 0 + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "Security Blast Door" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aZL" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/obj/machinery/camera{ + c_tag = "Brig Cell Three"; + network = list("SS13","Prison") + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aZM" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/brig) +"aZN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/grille, +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "Security Blast Door" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/brig) +"aZO" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aZP" = ( +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/power/tesla_coil, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 4 + }, +/area/engine/engineering) +"aZQ" = ( +/obj/item/weapon/crowbar, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + tag = "icon-2-8"; + icon_state = "2-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 8 + }, +/area/engine/engineering) +"aZR" = ( +/obj/machinery/field/generator{ + anchored = 1; + state = 2 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"aZS" = ( +/obj/structure/lattice, +/turf/open/space, +/area/engine/engineering) +"aZT" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 8 + }, +/area/engine/engineering) +"aZU" = ( +/obj/machinery/power/emitter{ + anchored = 1; + dir = 8; + state = 2 + }, +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"aZV" = ( +/obj/structure/closet/radiation, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aZW" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'RADIOACTIVE AREA'"; + icon_state = "radiation"; + name = "RADIOACTIVE AREA"; + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aZX" = ( +/obj/structure/rack, +/obj/item/clothing/mask/gas{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/machinery/button/door{ + id = "singularity"; + name = "Shutters Control"; + pixel_y = -25; + req_access_txt = "11" + }, +/turf/open/floor/plasteel{ + icon_state = "yellowcorner" + }, +/area/engine/engineering) +"aZY" = ( +/obj/structure/rack, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/suit/hazardvest, +/obj/item/weapon/tank/internals/emergency_oxygen/engi, +/obj/item/weapon/tank/internals/emergency_oxygen/engi, +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/engine/engineering) +"aZZ" = ( +/obj/structure/closet/crate{ + name = "solar pack crate" + }, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/weapon/circuitboard/solar_control, +/obj/item/weapon/electronics/tracker, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/engine/engineering) +"baa" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellowcorner" + }, +/area/engine/engineering) +"bab" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bac" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bad" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bae" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/engine/engineering) +"baf" = ( +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bag" = ( +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/rods{ + amount = 50 + }, +/obj/item/stack/rods{ + amount = 50 + }, +/obj/structure/table, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engine/engineering) +"bah" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/machinery/computer/atmos_alert, +/turf/open/floor/plating, +/area/maintenance/aft) +"bai" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/aft) +"baj" = ( +/obj/machinery/camera{ + c_tag = "Engineering Atmospherics Control"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bak" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bal" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bam" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Engineering Maintenance APC"; + pixel_x = 25; + pixel_y = 1 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"ban" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellowcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bao" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bap" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"baq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/crew_quarters/bar) +"bar" = ( +/obj/structure/closet/gmcloset, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/obj/item/clothing/under/waiter, +/obj/item/clothing/under/waiter, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bas" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bat" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/structure/table/wood, +/obj/item/weapon/reagent_containers/food/drinks/shaker, +/obj/item/weapon/reagent_containers/glass/rag, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bau" = ( +/obj/structure/table/wood, +/obj/machinery/reagentgrinder, +/obj/machinery/power/apc{ + dir = 4; + name = "Bar APC"; + pixel_x = 24 + }, +/obj/structure/cable/green, +/obj/item/weapon/gun/projectile/revolver/doublebarrel{ + name = "bartender's shotgun" + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bav" = ( +/obj/machinery/icecream_vat, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/crew_quarters/kitchen) +"baw" = ( +/obj/machinery/camera{ + c_tag = "Kitchen Cold Room"; + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/crew_quarters/kitchen) +"bax" = ( +/obj/structure/closet/gmcloset, +/obj/item/clothing/under/waiter, +/obj/item/clothing/under/waiter, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/crew_quarters/kitchen) +"bay" = ( +/obj/machinery/requests_console{ + department = "Hydroponics"; + departmentType = 2; + name = "Hydroponics Requests Console"; + pixel_x = -32 + }, +/obj/structure/table, +/obj/item/weapon/crowbar/red, +/obj/item/weapon/reagent_containers/glass/beaker, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "green" + }, +/area/hydroponics) +"baz" = ( +/obj/structure/table, +/obj/item/weapon/reagent_containers/glass/bucket, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "green" + }, +/area/hydroponics) +"baA" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "green" + }, +/area/hydroponics) +"baB" = ( +/turf/open/floor/plasteel{ + icon_state = "green" + }, +/area/hydroponics) +"baC" = ( +/obj/machinery/vending/hydroseeds, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "green" + }, +/area/hydroponics) +"baD" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"baE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "blue" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"baF" = ( +/obj/machinery/door/airlock/glass_command{ + desc = "The station's command center, where the fate of Nanotrasen's trillion-dollar investment is often decided."; + name = "Bridge"; + req_access_txt = "19" + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/crew_quarters/heads) +"baG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"baH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"baI" = ( +/obj/machinery/door/poddoor/preopen{ + id = "bridge blast"; + name = "Bridge Blast Door" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bluecorner" + }, +/area/crew_quarters/heads) +"baJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 0; + icon_state = "blue" + }, +/area/crew_quarters/heads) +"baK" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/camera{ + c_tag = "Bridge Fore Entrance"; + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "bluecorner" + }, +/area/crew_quarters/heads) +"baL" = ( +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"baM" = ( +/obj/machinery/power/apc{ + name = "Head of Personnel APC"; + pixel_y = -24 + }, +/obj/structure/cable/blue, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"baN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"baO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "blue" + }, +/area/crew_quarters/heads) +"baP" = ( +/obj/machinery/door/airlock/glass_command{ + desc = "The station's command center, where the fate of Nanotrasen's trillion-dollar investment is often decided."; + name = "Bridge"; + req_access_txt = "19" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/bridge) +"baQ" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/bridge) +"baR" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/turf/open/floor/plasteel, +/area/bridge) +"baS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/bridge) +"baT" = ( +/obj/machinery/computer/security, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/bridge) +"baU" = ( +/obj/item/clothing/under/rank/prisoner, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"baV" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"baW" = ( +/obj/machinery/vending/cola, +/turf/open/floor/plasteel, +/area/security/prison) +"baX" = ( +/obj/structure/closet, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"baY" = ( +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/security/prison) +"baZ" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/brown, +/turf/open/floor/plasteel, +/area/security/prison) +"bba" = ( +/obj/machinery/button/door{ + name = "Cell 2 Lockdown"; + pixel_x = -26; + req_access_txt = "2"; + id = "permacell2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bbb" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/security/prison) +"bbc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/prison) +"bbd" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/security/prison) +"bbe" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/poddoor/preopen{ + id = "Prison Gate"; + name = "Prison Blast Door" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bbf" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/button/door{ + id = "Prison Gate"; + name = "Prison Wing Lockdown"; + pixel_x = -28; + pixel_y = -24; + req_access_txt = "2" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bbg" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/prison) +"bbh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/prison) +"bbi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/security/brig) +"bbj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/security/brig) +"bbk" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bbl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/closet/secure_closet/brig{ + id = "Cell 3" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bbm" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/obj/machinery/flasher{ + id = "Cell 3"; + pixel_y = -26 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bbn" = ( +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 10 + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bbo" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "redcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bbp" = ( +/obj/item/weapon/wrench, +/turf/open/floor/plating, +/area/maintenance/aft) +"bbq" = ( +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 8 + }, +/area/maintenance/aft) +"bbr" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'HIGH VOLTAGE'"; + icon_state = "shock"; + name = "HIGH VOLTAGE" + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"bbs" = ( +/obj/machinery/door/window/northleft, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"bbt" = ( +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/power/rad_collector{ + anchored = 1 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"bbu" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 4 + }, +/area/engine/engineering) +"bbv" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 8 + }, +/area/engine/engineering) +"bbw" = ( +/turf/open/space, +/area/engine/engineering) +"bbx" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 8 + }, +/area/engine/engineering) +"bby" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "singularity"; + name = "radiation shutters" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/engine/engineering) +"bbz" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/machinery/camera{ + c_tag = "Engineering Fore"; + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "yellow"; + dir = 10 + }, +/area/engine/engineering) +"bbA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/machinery/portable_atmospherics/pump, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellowcorner" + }, +/area/engine/engineering) +"bbB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bbC" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bbD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bbE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bbF" = ( +/obj/machinery/computer/station_alert, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engine/engineering) +"bbG" = ( +/obj/machinery/atmospherics/components/binary/pump/on, +/turf/open/floor/plating, +/area/maintenance/aft) +"bbH" = ( +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/maintenance/aft) +"bbI" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bbJ" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 5 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bbK" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bbL" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_one_access_txt = "10; 12" + }, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 4 + }, +/area/maintenance/aft) +"bbM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bbN" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bbO" = ( +/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bbP" = ( +/obj/machinery/door/airlock{ + desc = "The backroom of the bar, a place few can ever visit."; + name = "Bar Storage"; + req_access_txt = "25" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bbQ" = ( +/obj/machinery/door/airlock{ + desc = "The chef's freezer room. Ignore the smell of frequent cleanings."; + name = "Kitchen Cold Room"; + req_access_txt = "28" + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/crew_quarters/kitchen) +"bbR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/hydroponics) +"bbS" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/northleft{ + name = "Hydroponics Desk"; + req_access_txt = "35" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "green"; + dir = 1 + }, +/area/hydroponics) +"bbT" = ( +/obj/machinery/smartfridge, +/turf/closed/wall, +/area/hydroponics) +"bbU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "blue" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bbV" = ( +/turf/closed/wall/r_wall, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bbW" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/command{ + desc = "The office of the hero the station deserves, but not the one it needs right now. They also change IDs on occasion."; + name = "Head of Personnel's Office"; + req_access = null; + req_access_txt = "57" + }, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bbX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/machinery/button/door{ + id = "bridge blast"; + name = "Bridge Blast Door Control"; + pixel_x = -24; + req_access_txt = "19" + }, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/camera{ + c_tag = "Bridge Fore"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/bridge) +"bbY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/bridge) +"bbZ" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "redcorner" + }, +/area/bridge) +"bca" = ( +/obj/structure/table, +/obj/item/weapon/storage/fancy/donut_box, +/turf/open/floor/plasteel{ + icon_state = "redcorner"; + dir = 1 + }, +/area/bridge) +"bcb" = ( +/obj/effect/decal/remains/human, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"bcc" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "green" + }, +/area/security/prison) +"bcd" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "green" + }, +/area/security/prison) +"bce" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "green" + }, +/area/security/prison) +"bcf" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "green" + }, +/area/security/prison) +"bcg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "greencorner" + }, +/area/security/prison) +"bch" = ( +/obj/machinery/vending/sustenance, +/obj/machinery/status_display{ + pixel_x = 32 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bci" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bcj" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/security/prison) +"bck" = ( +/obj/structure/sign/securearea, +/turf/closed/wall, +/area/security/prison) +"bcl" = ( +/obj/structure/rack, +/obj/item/weapon/storage/box/chemimp{ + pixel_x = 4; + pixel_y = 3 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/security/prison) +"bcm" = ( +/obj/structure/rack, +/obj/item/weapon/storage/box/trackimp, +/turf/open/floor/plasteel, +/area/security/prison) +"bcn" = ( +/obj/structure/closet/secure_closet/brig, +/obj/machinery/light, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bco" = ( +/obj/structure/closet/secure_closet/brig, +/obj/machinery/power/apc{ + cell_type = 5000; + name = "Prison Wing APC"; + pixel_y = -24 + }, +/obj/structure/cable, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "redcorner" + }, +/area/security/prison) +"bcp" = ( +/obj/machinery/computer/secure_data, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 10 + }, +/area/security/brig) +"bcq" = ( +/obj/machinery/computer/security, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/security/brig) +"bcr" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/security/brig) +"bcs" = ( +/obj/structure/table, +/obj/machinery/light, +/obj/item/weapon/storage/firstaid/regular, +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/security/brig) +"bct" = ( +/obj/structure/table, +/obj/machinery/recharger, +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/security/brig) +"bcu" = ( +/obj/machinery/vending/cigarette, +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/security/brig) +"bcv" = ( +/obj/machinery/vending/security, +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/security/brig) +"bcw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "redcorner" + }, +/area/security/brig) +"bcx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bcy" = ( +/obj/machinery/door_timer{ + dir = 4; + id = "Cell 3"; + name = "Cell Three Timer"; + pixel_x = 0 + }, +/turf/closed/wall/r_wall, +/area/security/brig) +"bcz" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bcA" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 4 + }, +/area/engine/engineering) +"bcB" = ( +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/power/rad_collector{ + anchored = 1 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"bcC" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 4 + }, +/area/engine/engineering) +"bcD" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 8 + }, +/area/engine/engineering) +"bcE" = ( +/obj/structure/lattice, +/obj/item/clothing/head/hardhat, +/turf/open/space, +/area/engine/engineering) +"bcF" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 8 + }, +/area/engine/engineering) +"bcG" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/engine/engineering) +"bcH" = ( +/obj/item/weapon/wrench, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "warning" + }, +/area/engine/engineering) +"bcI" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/engine/engineering) +"bcJ" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/button/door{ + id = "singularity"; + name = "Shutters Control"; + pixel_y = 25; + req_access_txt = "11" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/engine/engineering) +"bcK" = ( +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "warning" + }, +/area/engine/engineering) +"bcL" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'RADIOACTIVE AREA'"; + icon_state = "radiation"; + name = "RADIOACTIVE AREA"; + pixel_x = -32 + }, +/obj/machinery/vending/tool, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/engine/engineering) +"bcM" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bcN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/chair, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bcO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bcP" = ( +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "Engineering APC"; + pixel_x = 24 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engine/engineering) +"bcQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/maintenance/aft) +"bcR" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Engineering Maintenance"; + req_access_txt = "32" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bcS" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=2"; + freq = 1400; + location = "Engineering" + }, +/obj/structure/plasticflaps{ + opacity = 1 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "loadingarea" + }, +/area/maintenance/aft) +"bcT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bcU" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bcV" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bcW" = ( +/obj/machinery/light_switch{ + dir = 1; + pixel_x = 6; + pixel_y = 22 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bcX" = ( +/obj/machinery/door/window/westright{ + name = "Bar"; + req_access_txt = "25" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bcY" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bcZ" = ( +/obj/machinery/vending/boozeomat, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bda" = ( +/obj/structure/table, +/obj/machinery/requests_console{ + department = "Bar"; + departmentType = 2; + name = "Bar Requests Console"; + pixel_y = 30 + }, +/obj/machinery/camera{ + c_tag = "Bar" + }, +/obj/machinery/chem_dispenser/drinks, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bdb" = ( +/obj/structure/table, +/obj/machinery/chem_dispenser/drinks/beer, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bdc" = ( +/obj/machinery/disposal/bin, +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bdd" = ( +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bde" = ( +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bdf" = ( +/obj/machinery/vending/dinnerware, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bdg" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/table, +/obj/machinery/microwave, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bdh" = ( +/obj/structure/table, +/obj/machinery/microwave, +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bdi" = ( +/obj/structure/sink/kitchen{ + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bdj" = ( +/obj/structure/table, +/obj/item/weapon/reagent_containers/food/condiment/enzyme{ + layer = 5 + }, +/obj/item/stack/packageWrap, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bdk" = ( +/obj/structure/table, +/obj/item/weapon/storage/fancy/egg_box, +/obj/item/weapon/kitchen/knife, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bdl" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "hopqueue"; + name = "HoP Queue Shutters" + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bdm" = ( +/obj/structure/grille, +/obj/structure/cable/blue{ + icon_state = "0-4"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "hop"; + layer = 2.9; + name = "Privacy Shutters" + }, +/turf/open/floor/plating, +/area/crew_quarters/heads) +"bdn" = ( +/obj/machinery/computer/card, +/obj/structure/cable/blue{ + icon_state = "2-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bdo" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bdp" = ( +/obj/machinery/keycard_auth{ + pixel_y = 24 + }, +/obj/structure/bed/dogbed{ + anchored = 1; + desc = "Ian's bed! Looks comfy."; + name = "Ian's bed" + }, +/mob/living/simple_animal/pet/dog/corgi/Ian, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bdq" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bdr" = ( +/obj/structure/table/wood, +/obj/item/weapon/hand_labeler, +/obj/machinery/camera{ + c_tag = "Head of Personnel's Office" + }, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bds" = ( +/obj/structure/table/wood, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/pen, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bdt" = ( +/obj/machinery/computer/cargo/request, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bdu" = ( +/obj/structure/filingcabinet/chestdrawer, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bdv" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/fireaxecabinet{ + pixel_x = -32 + }, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/bridge) +"bdw" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "bluecorner" + }, +/area/bridge) +"bdx" = ( +/turf/open/floor/plasteel{ + icon_state = "yellowcorner" + }, +/area/bridge) +"bdy" = ( +/obj/structure/table, +/obj/item/weapon/book/manual/wiki/security_space_law, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/bridge) +"bdz" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "cautioncorner" + }, +/area/bridge) +"bdA" = ( +/obj/machinery/biogenerator, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/security/prison) +"bdB" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/security/prison) +"bdC" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/security/prison) +"bdD" = ( +/obj/item/device/analyzer/plant_analyzer, +/obj/structure/table, +/obj/item/seeds/wheat, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/item/weapon/reagent_containers/spray/plantbgone{ + pixel_x = 6; + pixel_y = 2 + }, +/turf/open/floor/plasteel{ + icon_state = "green"; + dir = 5 + }, +/area/security/prison) +"bdE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/security/prison) +"bdF" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bdG" = ( +/obj/structure/chair/stool, +/obj/machinery/button/door{ + id = "permabolt3"; + name = "Cell Bolt Control"; + normaldoorcontrol = 1; + pixel_y = 25; + req_access_txt = "0"; + specialfunctions = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bdH" = ( +/obj/structure/table, +/obj/machinery/flasher{ + id = "PCell 3"; + pixel_y = 26 + }, +/obj/machinery/camera{ + c_tag = "Prison Cell 3"; + network = list("SS13","Prison") + }, +/obj/item/weapon/storage/fancy/cigarettes, +/turf/open/floor/plasteel, +/area/security/prison) +"bdI" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/machinery/button/flasher{ + id = "PCell 3"; + pixel_x = -26 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bdJ" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/status_display{ + pixel_x = 32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/security/prison) +"bdK" = ( +/turf/closed/wall/r_wall, +/area/security/armory) +"bdL" = ( +/turf/closed/wall, +/area/security/warden) +"bdM" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/security/warden) +"bdN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/security/brig) +"bdO" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bdP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bdQ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/glass_security{ + id_tag = "innerbrig"; + name = "Brig"; + req_access_txt = "63" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/brig) +"bdR" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/security/brig) +"bdS" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/flasher{ + id = "brigentry"; + pixel_y = 26 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bdT" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Brig Access" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bdU" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "Security Blast Door" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/brig) +"bdV" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/glass_security{ + id_tag = "outerbrig"; + name = "Brig"; + req_access_txt = "63" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "redfull" + }, +/area/security/brig) +"bdW" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/sortjunction{ + dir = 1; + icon_state = "pipe-j2s"; + sortType = 7 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bdX" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=PtCH"; + location = "Sec" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bdY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/newscaster{ + dir = 8; + pixel_x = 32 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bdZ" = ( +/obj/structure/lattice, +/obj/item/weapon/wirecutters, +/turf/open/space, +/area/engine/engineering) +"bea" = ( +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 9 + }, +/area/engine/engineering) +"beb" = ( +/obj/machinery/the_singularitygen/tesla, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 1 + }, +/area/engine/engineering) +"bec" = ( +/obj/item/weapon/screwdriver, +/turf/open/floor/plating, +/area/engine/engineering) +"bed" = ( +/obj/structure/particle_accelerator/particle_emitter/left{ + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"bee" = ( +/obj/effect/landmark/start{ + name = "Station Engineer" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warning" + }, +/area/engine/engineering) +"bef" = ( +/obj/machinery/particle_accelerator/control_box, +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"beg" = ( +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 8 + }, +/area/engine/engineering) +"beh" = ( +/obj/structure/table, +/obj/item/weapon/book/manual/engineering_particle_accelerator, +/obj/machinery/camera{ + c_tag = "Engineering Center"; + network = list("SS13","Singularity") + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "warning" + }, +/area/engine/engineering) +"bei" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/computer/security/telescreen{ + desc = "Used for monitoring the singularity engine safely."; + dir = 4; + name = "Singularity Monitor"; + network = list("Singularity"); + pixel_x = -32 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/engine/engineering) +"bej" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bek" = ( +/obj/structure/table, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/item/weapon/airlock_painter, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bel" = ( +/obj/structure/table, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/item/clothing/gloves/color/yellow, +/obj/item/weapon/grenade/chem_grenade/metalfoam, +/obj/item/weapon/grenade/chem_grenade/metalfoam, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bem" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"ben" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engine/engineering) +"beo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"bep" = ( +/obj/structure/sign/securearea{ + pixel_x = -32 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "yellow" + }, +/area/engine/engineering) +"beq" = ( +/obj/structure/chair, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/engineering) +"ber" = ( +/obj/machinery/vending/cola, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/engine/engineering) +"bes" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bet" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"beu" = ( +/obj/machinery/door/window/westright{ + dir = 2; + name = "Engineering Deliveries"; + req_access_txt = "10"; + req_one_access_txt = "0" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/engine/engineering) +"bev" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/engine/engineering) +"bew" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "yellow" + }, +/area/engine/engineering) +"bex" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bey" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bez" = ( +/obj/structure/chair/stool, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"beA" = ( +/obj/structure/table/reinforced, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"beB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"beC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"beD" = ( +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"beE" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"beF" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"beG" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"beH" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"beI" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/glass{ + desc = "The workplace of the diligent station chef, with enough ingredients to work up a masterpiece."; + name = "Kitchen"; + req_access_txt = "28" + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"beJ" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/sortjunction{ + dir = 2; + sortType = 19 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"beK" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "hopqueue"; + name = "HoP Queue Shutters" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"beL" = ( +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"beM" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/northleft{ + dir = 8; + name = "Reception Window"; + req_access_txt = "0" + }, +/obj/machinery/door/window{ + base_state = "right"; + dir = 4; + icon_state = "right"; + name = "Head of Personnel's Desk"; + req_access_txt = "57" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "hop"; + layer = 2.9; + name = "Privacy Shutters" + }, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"beN" = ( +/obj/structure/cable/blue{ + icon_state = "2-4"; + d1 = 1; + d2 = 2 + }, +/obj/structure/cable/blue{ + icon_state = "1-4"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/button/door{ + id = "hopqueue"; + name = "Queue Shutters Control"; + pixel_x = 6; + pixel_y = 54; + req_access_txt = "28" + }, +/obj/machinery/button/flasher{ + id = "hopline"; + pixel_x = 6; + pixel_y = 64; + req_access_txt = "2" + }, +/obj/machinery/button/door{ + id = "hop"; + name = "Privacy Shutters Control"; + pixel_x = -6; + pixel_y = 54; + req_access_txt = "28" + }, +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/landmark/start{ + name = "Head of Personnel" + }, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"beO" = ( +/obj/structure/cable/blue{ + icon_state = "1-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"beP" = ( +/turf/open/floor/wood, +/area/crew_quarters/heads) +"beQ" = ( +/obj/structure/table/wood, +/obj/item/weapon/book/manual/wiki/security_space_law, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"beR" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/crew_quarters/heads) +"beS" = ( +/turf/open/floor/carpet, +/area/crew_quarters/heads) +"beT" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "bluecorner" + }, +/area/bridge) +"beU" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "bluecorner" + }, +/area/bridge) +"beV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/table, +/obj/item/weapon/storage/secure/briefcase, +/turf/open/floor/plasteel{ + dir = 0; + icon_state = "blue" + }, +/area/bridge) +"beW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/table, +/obj/machinery/recharger, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "bluecorner" + }, +/area/bridge) +"beX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowcorner" + }, +/area/bridge) +"beY" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "yellow" + }, +/area/bridge) +"beZ" = ( +/obj/machinery/computer/atmos_alert, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/bridge) +"bfa" = ( +/obj/machinery/seed_extractor, +/turf/open/floor/plasteel, +/area/security/prison) +"bfb" = ( +/obj/item/weapon/reagent_containers/glass/bucket, +/turf/open/floor/plasteel, +/area/security/prison) +"bfc" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "green"; + dir = 4 + }, +/area/security/prison) +"bfd" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/security/prison) +"bfe" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/poddoor{ + density = 0; + icon_state = "open"; + id = "permacell3"; + name = "Cell Shutters"; + opacity = 0 + }, +/obj/machinery/door/airlock/glass{ + id_tag = "permabolt3"; + name = "Cell 3" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bff" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bfg" = ( +/obj/machinery/door/airlock/glass_security{ + name = "Cell 3"; + req_access_txt = "2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bfh" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/security/prison) +"bfi" = ( +/obj/item/weapon/grenade/barrier, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bfj" = ( +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/machinery/power/apc{ + cell_type = 5000; + dir = 1; + name = "Armory APC"; + pixel_y = 24 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bfk" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/rack, +/obj/item/weapon/storage/box/handcuffs, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bfl" = ( +/obj/structure/rack, +/obj/item/clothing/head/helmet/riot, +/obj/item/clothing/suit/armor/riot, +/obj/item/weapon/shield/riot, +/obj/item/weapon/gun/projectile/shotgun/riot, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bfm" = ( +/obj/structure/rack, +/obj/item/clothing/suit/armor/riot, +/obj/item/clothing/head/helmet/riot, +/obj/item/weapon/shield/riot, +/obj/item/weapon/gun/projectile/shotgun/riot, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bfn" = ( +/obj/structure/closet/secure_closet/warden, +/obj/machinery/requests_console{ + department = "Security"; + departmentType = 5; + name = "Security Requests Console"; + pixel_y = 30 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/security/warden) +"bfo" = ( +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/machinery/camera{ + c_tag = "Warden's Office" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "Warden's Office APC"; + pixel_y = 25 + }, +/turf/open/floor/plasteel, +/area/security/warden) +"bfp" = ( +/obj/structure/table, +/obj/machinery/recharger, +/turf/open/floor/plasteel, +/area/security/warden) +"bfq" = ( +/obj/machinery/computer/prisoner, +/turf/open/floor/plasteel, +/area/security/warden) +"bfr" = ( +/obj/machinery/computer/secure_data, +/turf/open/floor/plasteel, +/area/security/warden) +"bfs" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/security/brig) +"bft" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bfu" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/brig) +"bfv" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/status_display, +/turf/closed/wall/r_wall, +/area/security/brig) +"bfw" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/security/brig) +"bfx" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bfy" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "Security Blast Door" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/brig) +"bfz" = ( +/obj/structure/sign/securearea, +/turf/closed/wall/r_wall, +/area/security/brig) +"bfA" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bfB" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/mob/living/simple_animal/bot/secbot/beepsky, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bfC" = ( +/obj/structure/lattice, +/obj/structure/lattice, +/obj/structure/grille, +/turf/open/space, +/area/space/nearstation) +"bfD" = ( +/obj/structure/lattice, +/obj/structure/lattice, +/turf/open/space, +/area/space) +"bfE" = ( +/obj/machinery/camera/emp_proof{ + c_tag = "Singularity Port"; + dir = 4; + network = list("SS13","Singularity") + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"bfF" = ( +/obj/item/weapon/screwdriver, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/power/tesla_coil, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"bfG" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/cable{ + tag = "icon-4-8"; + icon_state = "4-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 4 + }, +/area/engine/engineering) +"bfH" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + tag = "icon-2-8"; + icon_state = "2-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 8 + }, +/area/engine/engineering) +"bfI" = ( +/obj/item/weapon/wrench, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"bfJ" = ( +/obj/structure/particle_accelerator/particle_emitter/center{ + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"bfK" = ( +/obj/structure/particle_accelerator/power_box{ + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"bfL" = ( +/obj/structure/particle_accelerator/fuel_chamber{ + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"bfM" = ( +/obj/structure/particle_accelerator/end_cap{ + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"bfN" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warning" + }, +/area/engine/engineering) +"bfO" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "singularity"; + name = "radiation shutters" + }, +/obj/machinery/door/firedoor, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warning" + }, +/area/engine/engineering) +"bfP" = ( +/obj/effect/landmark{ + name = "lightsout" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bfQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/hologram/holopad, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bfR" = ( +/obj/structure/table, +/obj/item/weapon/electronics/airlock, +/obj/item/weapon/electronics/airlock, +/obj/item/clothing/ears/earmuffs{ + pixel_x = -3; + pixel_y = -2 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bfS" = ( +/obj/structure/table, +/obj/item/device/flashlight, +/obj/item/device/flashlight, +/obj/item/clothing/glasses/meson, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bfT" = ( +/obj/effect/landmark/start{ + name = "Station Engineer" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bfU" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engine/engineering) +"bfV" = ( +/obj/machinery/door/airlock/engineering{ + desc = "Main engineering. Loot and danger in equal measures lie ahead!"; + id_tag = "Engineering"; + name = "Engineering"; + req_access_txt = "10" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowfull" + }, +/area/engine/engineering) +"bfW" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/engine/engineering) +"bfX" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bfY" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bfZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bga" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bgb" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/glass_engineering{ + name = "Engineering Access"; + req_access_txt = "32"; + req_one_access_txt = "0" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engine/engineering) +"bgc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bgd" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bge" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bgf" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bgg" = ( +/obj/effect/landmark/start{ + name = "Bartender" + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bgh" = ( +/mob/living/carbon/monkey/punpun, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bgi" = ( +/obj/machinery/door/airlock/glass{ + desc = "The workplace of the diligent station chef, with enough ingredients to work up a masterpiece."; + name = "Kitchen"; + req_access_txt = "0"; + req_one_access_txt = "25, 28" + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bgj" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bgk" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Cook" + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bgl" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bgm" = ( +/obj/structure/table, +/obj/machinery/reagentgrinder, +/obj/machinery/requests_console{ + department = "Kitchen"; + departmentType = 2; + name = "Kitchen Requests Console"; + pixel_x = 30 + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bgn" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bgo" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "blue" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bgp" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "hopqueue"; + name = "HoP Queue Shutters" + }, +/obj/machinery/flasher{ + id = "hopline"; + layer = 3.5; + name = "civility enforcement flasher" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bgq" = ( +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bgr" = ( +/obj/structure/cable/blue{ + icon_state = "1-8"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/pdapainter, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bgs" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bgt" = ( +/obj/machinery/hologram/holopad, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bgu" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/carpet, +/area/crew_quarters/heads) +"bgv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bgw" = ( +/obj/machinery/door/airlock/command{ + desc = "The office of the hero the station deserves, but not the one it needs right now. They also change IDs on occasion."; + name = "Head of Personnel's Office"; + req_access = null; + req_access_txt = "57" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/bridge) +"bgx" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "1-4"; + d1 = 1; + d2 = 2 + }, +/obj/effect/landmark{ + name = "lightsout" + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/bridge) +"bgy" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "2-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plasteel, +/area/bridge) +"bgz" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "blue" + }, +/area/bridge) +"bgA" = ( +/obj/structure/table, +/obj/item/weapon/storage/box/PDAs{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/weapon/storage/box/silver_ids, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/bridge) +"bgB" = ( +/obj/item/device/radio/beacon, +/turf/open/floor/plasteel, +/area/bridge) +"bgC" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/bridge) +"bgD" = ( +/obj/structure/table, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/pen, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/bridge) +"bgE" = ( +/obj/machinery/hydroponics/constructable, +/obj/item/seeds/ambrosia, +/turf/open/floor/plasteel, +/area/security/prison) +"bgF" = ( +/obj/machinery/hydroponics/constructable, +/obj/machinery/camera{ + c_tag = "Prison Aft"; + dir = 1; + network = list("SS13","Prison") + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bgG" = ( +/obj/machinery/hydroponics/constructable, +/obj/item/seeds/sunflower, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "green"; + dir = 4 + }, +/area/security/prison) +"bgH" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/security/prison) +"bgI" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bgJ" = ( +/obj/machinery/button/door{ + name = "Cell 3 Lockdown"; + pixel_x = -26; + req_access_txt = "2"; + id = "permacell3" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/prison) +"bgK" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bgL" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/computer/security/telescreen{ + desc = "Used for watching the Prison Wing."; + dir = 8; + name = "Prison Monitor"; + network = list("Prison"); + pixel_x = 32 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/security/prison) +"bgM" = ( +/obj/item/weapon/grenade/barrier, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bgN" = ( +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) +"bgO" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) +"bgP" = ( +/obj/structure/grille, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/armory) +"bgQ" = ( +/obj/structure/filingcabinet/chestdrawer, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/security/warden) +"bgR" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/security/warden) +"bgS" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/warden) +"bgT" = ( +/turf/open/floor/plasteel, +/area/security/warden) +"bgU" = ( +/obj/effect/landmark/start{ + name = "Warden" + }, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/warden) +"bgV" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/folder/red, +/obj/machinery/door/window/brigdoor{ + dir = 8; + layer = 2.9; + name = "Armory Desk"; + req_access_txt = "3" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/warden) +"bgW" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/security/brig) +"bgX" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bgY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bgZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/glass_security{ + id_tag = "innerbrig"; + name = "Brig"; + req_access_txt = "63" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/brig) +"bha" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/security/brig) +"bhb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bhc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "Security Blast Door" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/brig) +"bhd" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/glass_security{ + id_tag = "outerbrig"; + name = "Brig"; + req_access_txt = "63" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "redfull" + }, +/area/security/brig) +"bhe" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/junction{ + dir = 1; + icon_state = "pipe-j2" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bhf" = ( +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 10 + }, +/area/engine/engineering) +"bhg" = ( +/obj/machinery/the_singularitygen, +/turf/open/floor/plating/airless{ + icon_state = "warnplate" + }, +/area/engine/engineering) +"bhh" = ( +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 6 + }, +/area/engine/engineering) +"bhi" = ( +/obj/structure/particle_accelerator/particle_emitter/right{ + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"bhj" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warning" + }, +/area/engine/engineering) +"bhk" = ( +/turf/open/floor/plasteel{ + icon_state = "warningcorner" + }, +/area/engine/engineering) +"bhl" = ( +/obj/machinery/button/door{ + id = "singularity"; + name = "Shutters Control"; + pixel_x = 25; + req_access_txt = "11" + }, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "warning" + }, +/area/engine/engineering) +"bhm" = ( +/obj/machinery/button/door{ + id = "singularity"; + name = "Shutters Control"; + pixel_x = -25; + req_access_txt = "11" + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellowcorner" + }, +/area/engine/engineering) +"bhn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/landmark/start{ + name = "Station Engineer" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bho" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/weapon/stock_parts/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bhp" = ( +/obj/structure/table, +/obj/item/clothing/gloves/color/black, +/obj/item/clothing/gloves/color/black, +/obj/item/weapon/storage/belt/utility/full, +/obj/item/weapon/storage/belt/utility/full, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bhq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/landmark/start{ + name = "Station Engineer" + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bhr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Engineering Starboard"; + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engine/engineering) +"bhs" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"bht" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/sign/securearea{ + pixel_x = -32 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "yellow"; + dir = 10 + }, +/area/engine/engineering) +"bhu" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_y = -32 + }, +/obj/structure/table, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/engine/engineering) +"bhv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/chair{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellowcorner" + }, +/area/engine/engineering) +"bhw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "redcorner" + }, +/area/engine/engineering) +"bhx" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "redcorner" + }, +/area/engine/engineering) +"bhy" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Engineering Access"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bhz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/engine/engineering) +"bhA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "yellow"; + dir = 10 + }, +/area/engine/engineering) +"bhB" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellowcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bhC" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bhD" = ( +/obj/structure/table/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bhE" = ( +/obj/machinery/newscaster{ + pixel_x = 32 + }, +/obj/machinery/smartfridge/drinks, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bhF" = ( +/obj/structure/closet/secure_closet/freezer/kitchen, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bhG" = ( +/obj/structure/closet/secure_closet/freezer/fridge, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bhH" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bhI" = ( +/obj/structure/table, +/obj/item/weapon/storage/box/donkpockets{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/weapon/reagent_containers/glass/beaker{ + pixel_x = 5 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bhJ" = ( +/obj/structure/table, +/obj/item/weapon/reagent_containers/food/condiment/peppermill, +/obj/item/weapon/reagent_containers/food/condiment/saltshaker{ + pixel_x = 7 + }, +/obj/item/weapon/reagent_containers/food/condiment/saltshaker, +/obj/item/weapon/reagent_containers/food/condiment/peppermill, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bhK" = ( +/obj/structure/table, +/obj/item/weapon/kitchen/rollingpin, +/obj/item/weapon/reagent_containers/food/snacks/mint, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bhL" = ( +/obj/machinery/processor, +/obj/machinery/button/door{ + id = "kitchen"; + name = "Kitchen Shutters Control"; + pixel_x = -1; + pixel_y = -24; + req_access_txt = "28" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Kitchen"; + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bhM" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bhN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bhO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/crew_quarters/kitchen) +"bhP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/sortjunction{ + dir = 2; + sortType = 20 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bhQ" = ( +/obj/structure/noticeboard{ + dir = 8; + pixel_x = 27 + }, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bhR" = ( +/obj/machinery/vending/cart, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bhS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bhT" = ( +/obj/structure/table/wood, +/obj/machinery/recharger, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bhU" = ( +/obj/structure/chair, +/turf/open/floor/carpet, +/area/crew_quarters/heads) +"bhV" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bhW" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Bridge APC"; + pixel_x = -25 + }, +/obj/structure/cable/blue, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "bluecorner" + }, +/area/bridge) +"bhX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "bluecorner" + }, +/area/bridge) +"bhY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/chair/comfy/black{ + desc = "A captain needs comfort.\nAlt-click to rotate it clockwise."; + dir = 4; + name = "Captain's Chair" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "blue" + }, +/area/bridge) +"bhZ" = ( +/obj/machinery/computer/communications, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/bridge) +"bia" = ( +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel, +/area/bridge) +"bib" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/bridge) +"bic" = ( +/obj/structure/table, +/obj/item/weapon/crowbar/red, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/bridge) +"bid" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bie" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/camera{ + c_tag = "Prison Hallway Aft"; + dir = 8; + network = list("SS13","Prison") + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/security/prison) +"bif" = ( +/obj/machinery/suit_storage_unit/security, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"big" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bih" = ( +/obj/structure/rack, +/obj/item/weapon/gun/energy/ionrifle{ + pin = /obj/item/device/firing_pin + }, +/obj/item/clothing/suit/armor/laserproof, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bii" = ( +/obj/structure/rack, +/obj/item/weapon/storage/box/teargas, +/obj/item/weapon/storage/box/flashbangs{ + pixel_x = -2; + pixel_y = -2 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bij" = ( +/obj/structure/rack, +/obj/item/weapon/storage/box/chemimp{ + pixel_x = 4; + pixel_y = 3 + }, +/obj/item/weapon/storage/box/trackimp, +/obj/item/weapon/storage/lockbox/loyalty, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bik" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) +"bil" = ( +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/open/floor/plating, +/area/security/armory) +"bim" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/security/warden) +"bin" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/warden) +"bio" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/security/warden) +"bip" = ( +/obj/machinery/computer/crew, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/warden) +"biq" = ( +/obj/machinery/computer/security, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/warden) +"bir" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/storage/box/handcuffs, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/warden) +"bis" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bit" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"biu" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/brig) +"biv" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/brigdoor{ + layer = 2.9; + name = "Brig Desk"; + req_access_txt = "1" + }, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/pen, +/turf/open/floor/plasteel, +/area/security/brig) +"biw" = ( +/obj/item/stack/cable_coil{ + pixel_x = 3; + pixel_y = -7 + }, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "warning" + }, +/area/engine/engineering) +"bix" = ( +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/engine/engineering) +"biy" = ( +/obj/machinery/light, +/obj/machinery/button/door{ + id = "singularity"; + name = "Shutters Control"; + pixel_y = -25; + req_access_txt = "11" + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/engine/engineering) +"biz" = ( +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "warning" + }, +/area/engine/engineering) +"biA" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'RADIOACTIVE AREA'"; + icon_state = "radiation"; + name = "RADIOACTIVE AREA"; + pixel_x = -32 + }, +/obj/machinery/vending/engivend, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/engine/engineering) +"biB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"biC" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"biD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/engine/engineering) +"biE" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/engine/engineering) +"biF" = ( +/obj/machinery/status_display{ + pixel_x = 32 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engine/engineering) +"biG" = ( +/obj/machinery/door/airlock/external{ + name = "Engineering External Access"; + req_access = null; + req_access_txt = "10;13" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"biH" = ( +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/engine/engineering) +"biI" = ( +/obj/machinery/door/airlock/glass_security{ + name = "Security Post"; + req_access_txt = "63" + }, +/turf/open/floor/plasteel{ + icon_state = "redfull" + }, +/area/engine/engineering) +"biJ" = ( +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/engine/engineering) +"biK" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"biL" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"biM" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"biN" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "kitchen"; + name = "kitchen shutters" + }, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/crew_quarters/kitchen) +"biO" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "kitchen"; + name = "kitchen shutters" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/crew_quarters/kitchen) +"biP" = ( +/obj/effect/landmark/start{ + name = "Cook" + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"biQ" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"biR" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/sortjunction{ + dir = 2; + icon_state = "pipe-j2s"; + sortType = 15 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"biS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "blue" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"biT" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "hopqueue"; + name = "HoP Queue Shutters" + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"biU" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"biV" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/crew_quarters/heads) +"biW" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"biX" = ( +/obj/machinery/light, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = -3; + pixel_y = -24 + }, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"biY" = ( +/obj/structure/table/wood, +/obj/item/device/assembly/flash/handheld, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"biZ" = ( +/obj/structure/table/wood, +/obj/item/weapon/folder/blue, +/obj/item/weapon/stamp/hop, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Head of Personnel's Desk"; + departmentType = 5; + name = "Head of Personnel Requests Console"; + pixel_y = -30 + }, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bja" = ( +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bjb" = ( +/obj/structure/closet/secure_closet/hop, +/obj/item/clothing/suit/ianshirt, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bjc" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/status_display{ + pixel_x = -32 + }, +/turf/open/floor/plasteel, +/area/bridge) +"bjd" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "bluecorner" + }, +/area/bridge) +"bje" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/button/door{ + id = "bridgeshut"; + name = "Bridge Shutters Control"; + pixel_y = -34; + req_access_txt = "19" + }, +/obj/machinery/button/door{ + id = "bridge blast"; + name = "Bridge Blast Door Control"; + pixel_x = 0; + pixel_y = -24; + req_access_txt = "19" + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 6 + }, +/area/bridge) +"bjf" = ( +/obj/structure/table, +/obj/item/device/assembly/flash/handheld, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/bridge) +"bjg" = ( +/obj/structure/table, +/obj/item/weapon/storage/toolbox/emergency, +/obj/item/device/assembly/flash/handheld, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/bridge) +"bjh" = ( +/turf/open/floor/plating/asteroid, +/area/mine/explored) +"bji" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'HIGH VOLTAGE'"; + icon_state = "shock"; + name = "HIGH VOLTAGE"; + pixel_y = 32 + }, +/turf/open/floor/plating, +/area/security/prison) +"bjj" = ( +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "brown" + }, +/area/security/prison) +"bjk" = ( +/obj/structure/table, +/obj/item/weapon/storage/toolbox/emergency, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "brown" + }, +/area/security/prison) +"bjl" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'HIGH VOLTAGE'"; + icon_state = "shock"; + name = "HIGH VOLTAGE"; + pixel_y = 32 + }, +/turf/open/floor/plating, +/area/security/prison) +"bjm" = ( +/obj/structure/rack, +/obj/item/weapon/pickaxe{ + attack_verb = list("ineffectively hit"); + desc = "A pickaxe designed to be only effective at digging rock and ore, very ineffective as a weapon."; + force = 1; + name = "safety pickaxe"; + pixel_x = 5; + throwforce = 1 + }, +/obj/item/weapon/pickaxe{ + attack_verb = list("ineffectively hit"); + desc = "A pickaxe designed to be only effective at digging rock and ore, very ineffective as a weapon."; + force = 1; + name = "safety pickaxe"; + pixel_x = 5; + throwforce = 1 + }, +/obj/item/weapon/pickaxe{ + attack_verb = list("ineffectively hit"); + desc = "A pickaxe designed to be only effective at digging rock and ore, very ineffective as a weapon."; + force = 1; + name = "safety pickaxe"; + pixel_x = 5; + throwforce = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bjn" = ( +/obj/structure/rack, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/turf/open/floor/plasteel, +/area/security/prison) +"bjo" = ( +/obj/structure/rack, +/obj/item/weapon/shovel{ + attack_verb = list("ineffectively hit"); + desc = "A large tool for digging and moving dirt. Was modified with extra safety, making it ineffective as a weapon."; + force = 1; + name = "safety shovel"; + pixel_x = -5; + throwforce = 1 + }, +/obj/item/weapon/shovel{ + attack_verb = list("ineffectively hit"); + desc = "A large tool for digging and moving dirt. Was modified with extra safety, making it ineffective as a weapon."; + force = 1; + name = "safety shovel"; + pixel_x = -5; + throwforce = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bjp" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowcorner" + }, +/area/security/prison) +"bjq" = ( +/obj/machinery/camera{ + c_tag = "Armory"; + dir = 4 + }, +/obj/machinery/suit_storage_unit/security, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bjr" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) +"bjs" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) +"bjt" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/glass_security{ + id_tag = "outerbrig"; + name = "Armory"; + req_access_txt = "3" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) +"bju" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/security/warden) +"bjv" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/security/warden) +"bjw" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/warden) +"bjx" = ( +/obj/item/weapon/storage/box/seccarts{ + pixel_x = 3; + pixel_y = 2 + }, +/obj/structure/table, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/item/weapon/storage/box/deputy, +/turf/open/floor/plasteel, +/area/security/warden) +"bjy" = ( +/obj/structure/table, +/obj/item/clothing/ears/earmuffs, +/obj/item/clothing/glasses/sunglasses, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/item/weapon/reagent_containers/spray/cleaner, +/turf/open/floor/plasteel, +/area/security/warden) +"bjz" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/security/warden) +"bjA" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/security/brig) +"bjB" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bjC" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/security/brig) +"bjD" = ( +/obj/machinery/door/airlock/glass_security{ + name = "Brig Desk"; + req_access_txt = "2" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bjE" = ( +/obj/structure/chair/office/dark, +/turf/open/floor/plasteel, +/area/security/brig) +"bjF" = ( +/obj/structure/table/reinforced, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "Security Blast Door" + }, +/obj/machinery/door/window/brigdoor{ + dir = 8; + layer = 2.9; + name = "Brig Desk"; + req_access_txt = "1" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/brig) +"bjG" = ( +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 9 + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bjH" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "redcorner"; + dir = 1 + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bjI" = ( +/obj/machinery/door/window/southleft, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"bjJ" = ( +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/power/rad_collector{ + anchored = 1 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"bjK" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 4 + }, +/area/engine/engineering) +"bjL" = ( +/obj/item/device/radio/off, +/turf/open/space, +/area/engine/engineering) +"bjM" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "singularity"; + name = "radiation shutters" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/engine/engineering) +"bjN" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "yellow" + }, +/area/engine/engineering) +"bjO" = ( +/obj/machinery/portable_atmospherics/scrubber, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/engine/engineering) +"bjP" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bjQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bjR" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/landmark/start{ + name = "Station Engineer" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bjS" = ( +/obj/machinery/computer/monitor, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engine/engineering) +"bjT" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_x = -32 + }, +/turf/open/floor/plating{ + icon_state = "warnplate" + }, +/area/engine/engineering) +"bjU" = ( +/obj/structure/table, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_x = -5; + pixel_y = 23 + }, +/obj/machinery/recharger{ + pixel_y = 4 + }, +/obj/machinery/computer/security/telescreen{ + desc = "Used for monitoring the singularity engine safely."; + dir = 4; + name = "Singularity Monitor"; + network = list("Singularity"); + pixel_x = -32 + }, +/obj/machinery/button/door{ + desc = "A remote control-switch for secure storage."; + id = "Engineering"; + name = "Engineering Door Control"; + pixel_x = 10; + pixel_y = 24; + req_access_txt = "63" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 9 + }, +/area/engine/engineering) +"bjV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 1 + }, +/area/engine/engineering) +"bjW" = ( +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 1 + }, +/area/engine/engineering) +"bjX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 1 + }, +/area/engine/engineering) +"bjY" = ( +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/obj/machinery/camera{ + c_tag = "Engineering Security Post" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 5 + }, +/area/engine/engineering) +"bjZ" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/engineering) +"bka" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bkb" = ( +/obj/structure/chair/wood/normal, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bkc" = ( +/obj/structure/chair/wood/normal, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bkd" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bke" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bkf" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/firealarm{ + pixel_y = 25 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bkg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bkh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/computer/slot_machine, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bki" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/chair/stool, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bkj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/computer/slot_machine, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bkk" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/chair/stool, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bkl" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/reagent_containers/food/snacks/twobread, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "kitchen"; + name = "kitchen shutters" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bkm" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/storage/bag/tray, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "kitchen"; + name = "kitchen shutters" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bkn" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "kitchen"; + name = "kitchen shutters" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bko" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bkp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/firedoor, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "blue" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bkq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock/command{ + desc = "The office of the hero the station deserves, but not the one it needs right now. They also change IDs on occasion."; + name = "Head of Personnel's Office"; + req_access = null; + req_access_txt = "57" + }, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bkr" = ( +/obj/machinery/button/door{ + id = "bridge blast"; + name = "Bridge Blast Door Control"; + pixel_x = -24; + req_access_txt = "19" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/cable/blue{ + icon_state = "2-4"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/camera{ + c_tag = "Bridge Aft"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/bridge) +"bks" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "1-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plasteel, +/area/bridge) +"bkt" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/structure/table, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "blue" + }, +/area/bridge) +"bku" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/table, +/obj/machinery/recharger, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "bluecorner" + }, +/area/bridge) +"bkv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "yellowcorner" + }, +/area/bridge) +"bkw" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "yellow" + }, +/area/bridge) +"bkx" = ( +/obj/machinery/computer/station_alert, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/bridge) +"bky" = ( +/obj/machinery/door/airlock/external{ + name = "Prison Mining External Airlock"; + req_access_txt = 0 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/security/prison) +"bkz" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/security/prison) +"bkA" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/security/prison) +"bkB" = ( +/obj/machinery/door/airlock/external{ + name = "Prison Mining External Airlock"; + req_access_txt = 0 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/security/prison) +"bkC" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bkD" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bkE" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/security{ + name = "Prison Mining"; + req_access_txt = "2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/security/prison) +"bkF" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bkG" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/prison) +"bkH" = ( +/obj/structure/rack, +/obj/item/weapon/storage/toolbox/mechanical, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bkI" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/obj/structure/rack, +/obj/item/weapon/storage/box/firingpins, +/obj/item/weapon/storage/box/firingpins, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bkJ" = ( +/obj/structure/rack, +/obj/item/weapon/gun/energy/gun/advtaser{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/weapon/gun/energy/gun/advtaser, +/obj/item/weapon/gun/energy/gun/advtaser{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bkK" = ( +/obj/structure/rack, +/obj/item/weapon/gun/energy/laser{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/weapon/gun/energy/laser{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/weapon/gun/energy/laser, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bkL" = ( +/obj/structure/rack, +/obj/item/weapon/gun/energy/gun{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/weapon/gun/energy/gun, +/obj/item/weapon/gun/energy/gun, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bkM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) +"bkN" = ( +/obj/structure/grille, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/armory) +"bkO" = ( +/obj/structure/table, +/obj/item/weapon/paper_bin, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/security/warden) +"bkP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/chair, +/turf/open/floor/plasteel, +/area/security/warden) +"bkQ" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel, +/area/security/warden) +"bkR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/security/warden) +"bkS" = ( +/obj/machinery/disposal/bin, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/warden) +"bkT" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/security/warden) +"bkU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/security/brig) +"bkV" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/brig) +"bkW" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/open/floor/plating, +/area/security/brig) +"bkX" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/computer/security, +/turf/open/floor/plasteel, +/area/security/brig) +"bkY" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/computer/secure_data, +/obj/machinery/button/door{ + id = "Secure Gate"; + name = "Brig Lockdown"; + pixel_x = -6; + pixel_y = -26; + req_access_txt = "2" + }, +/obj/machinery/button/flasher{ + id = "brigentry"; + pixel_x = 6; + pixel_y = -26 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bkZ" = ( +/obj/machinery/button/door{ + desc = "A remote control switch for the medbay foyer."; + id = "innerbrig"; + name = "Brig Interior Doors Control"; + normaldoorcontrol = 1; + pixel_x = -6; + pixel_y = -26; + req_access_txt = "63" + }, +/obj/machinery/button/door{ + desc = "A remote control switch for the medbay foyer."; + id = "outerbrig"; + name = "Brig Exterior Doors Control"; + normaldoorcontrol = 1; + pixel_x = 6; + pixel_y = -26; + req_access_txt = "63" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bla" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "Security Blast Door" + }, +/turf/open/floor/plating, +/area/security/brig) +"blb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/camera{ + c_tag = "Port Hallway Central"; + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"blc" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/aft) +"bld" = ( +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 8 + }, +/area/engine/engineering) +"ble" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'RADIOACTIVE AREA'"; + icon_state = "radiation"; + name = "RADIOACTIVE AREA"; + pixel_y = 32 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"blf" = ( +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"blg" = ( +/obj/structure/rack, +/obj/item/clothing/suit/fire/firefighter, +/obj/item/weapon/extinguisher, +/obj/machinery/button/door{ + id = "singularity"; + name = "Shutters Control"; + pixel_y = 25; + req_access_txt = "11" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/item/weapon/grenade/chem_grenade/metalfoam, +/obj/item/weapon/grenade/chem_grenade/metalfoam, +/obj/item/weapon/grenade/chem_grenade/metalfoam, +/obj/item/weapon/grenade/chem_grenade/metalfoam, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowcorner" + }, +/area/engine/engineering) +"blh" = ( +/obj/structure/closet/firecloset, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/engineering) +"bli" = ( +/obj/structure/closet/toolcloset, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/engineering) +"blj" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/engine/engineering) +"blk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bll" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"blm" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bln" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/engine/engineering) +"blo" = ( +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/smes{ + charge = 1e+006 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engine/engineering) +"blp" = ( +/obj/machinery/door/airlock/external{ + name = "Engineering External Access"; + req_access = null; + req_access_txt = "10;13" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/engine/engineering) +"blq" = ( +/obj/machinery/computer/secure_data, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/engine/engineering) +"blr" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bls" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"blt" = ( +/obj/structure/closet/secure_closet/security/engine, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/engine/engineering) +"blu" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"blv" = ( +/obj/structure/table/wood, +/obj/item/weapon/reagent_containers/food/drinks/bottle/wine, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"blw" = ( +/obj/structure/table/wood, +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{ + pixel_x = 5; + pixel_y = 3 + }, +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass, +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{ + pixel_x = -6; + pixel_y = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"blx" = ( +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bly" = ( +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"blz" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"blA" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"blB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"blC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "blue" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"blD" = ( +/obj/machinery/door/airlock/glass_command{ + desc = "The station's command center, where the fate of Nanotrasen's trillion-dollar investment is often decided."; + name = "Bridge"; + req_access_txt = "19" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/crew_quarters/heads) +"blE" = ( +/obj/machinery/door/poddoor/preopen{ + id = "bridge blast"; + name = "Bridge Blast Door" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "bluecorner" + }, +/area/crew_quarters/heads) +"blF" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "blue" + }, +/area/crew_quarters/heads) +"blG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Bridge Aft Entrance" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "bluecorner" + }, +/area/crew_quarters/heads) +"blH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"blI" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"blJ" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/bridge) +"blK" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/bridge) +"blL" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowcorner" + }, +/area/bridge) +"blM" = ( +/obj/structure/table, +/obj/item/weapon/storage/box/zipties, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/bridge) +"blN" = ( +/obj/structure/table, +/obj/item/device/aicard, +/obj/item/device/multitool, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/bridge) +"blO" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/structure/sign/securearea{ + pixel_y = -32 + }, +/turf/open/floor/plating, +/area/security/prison) +"blP" = ( +/obj/machinery/light/small, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "brown" + }, +/area/security/prison) +"blQ" = ( +/obj/structure/ore_box, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "brown" + }, +/area/security/prison) +"blR" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/obj/structure/cable, +/obj/structure/sign/securearea{ + pixel_y = -32 + }, +/turf/open/floor/plating, +/area/security/prison) +"blS" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "browncorner" + }, +/area/security/prison) +"blT" = ( +/obj/machinery/camera{ + c_tag = "Prison E.V.A."; + dir = 8; + network = list("SS13","Prison") + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "browncorner" + }, +/area/security/prison) +"blU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"blV" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) +"blW" = ( +/obj/structure/table, +/obj/item/weapon/book/manual/wiki/security_space_law{ + pixel_x = -3; + pixel_y = 5 + }, +/obj/machinery/newscaster/security_unit{ + pixel_y = -32 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/security/warden) +"blX" = ( +/obj/structure/table, +/obj/item/weapon/clipboard, +/obj/item/weapon/pen, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/security/warden) +"blY" = ( +/obj/machinery/button/door{ + id = "Prison Gate"; + name = "Prison Wing Lockdown"; + pixel_y = -26; + req_access_txt = "2" + }, +/obj/vehicle/secway, +/obj/item/key/security, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/warden) +"blZ" = ( +/obj/machinery/button/door{ + id = "Secure Gate"; + name = "Brig Lockdown"; + pixel_y = -26; + req_access_txt = "2" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/warden) +"bma" = ( +/obj/machinery/light_switch{ + pixel_y = -22 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/warden) +"bmb" = ( +/obj/machinery/door/airlock/glass_security{ + desc = "The workplace of the HoS' right hand, the station's Warden, responsible for keeping track of the guns and the prisoners and ensuring they don't mix."; + name = "Warden's Office"; + req_access_txt = "3" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/warden) +"bmc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/security/brig) +"bmd" = ( +/obj/machinery/door_timer{ + dir = 4; + id = "Cell 4"; + name = "Cell Four Timer"; + pixel_x = 0 + }, +/turf/closed/wall/r_wall, +/area/security/brig) +"bme" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/aft) +"bmf" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating/airless{ + icon_state = "warnplatecorner"; + dir = 1 + }, +/area/engine/engineering) +"bmg" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_x = -32 + }, +/obj/machinery/power/grounding_rod, +/turf/open/floor/plating/airless{ + icon_state = "warnplatecorner"; + dir = 1 + }, +/area/engine/engineering) +"bmh" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 10 + }, +/area/engine/engineering) +"bmi" = ( +/obj/item/weapon/wrench, +/turf/open/floor/plating/airless{ + icon_state = "warnplate" + }, +/area/engine/engineering) +"bmj" = ( +/obj/machinery/power/tesla_coil, +/turf/open/floor/plating/airless{ + icon_state = "warnplate" + }, +/area/engine/engineering) +"bmk" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'RADIOACTIVE AREA'"; + icon_state = "radiation"; + name = "RADIOACTIVE AREA"; + pixel_x = 32 + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/power/grounding_rod, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 8 + }, +/area/engine/engineering) +"bml" = ( +/obj/machinery/suit_storage_unit/engine, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellowcorner" + }, +/area/engine/engineering) +"bmm" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bmn" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bmo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bmp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bmq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bmr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "yellowcorner" + }, +/area/engine/engineering) +"bms" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/engine/engineering) +"bmt" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/engine/engineering) +"bmu" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/table, +/obj/item/clothing/gloves/color/yellow, +/obj/item/weapon/storage/toolbox/electrical, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "yellow" + }, +/area/engine/engineering) +"bmv" = ( +/turf/open/floor/plating/airless, +/area/space) +"bmw" = ( +/obj/structure/table, +/obj/structure/reagent_dispensers/peppertank{ + pixel_x = -32 + }, +/obj/item/weapon/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/obj/item/weapon/pen, +/obj/machinery/newscaster{ + pixel_y = -30 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 10 + }, +/area/engine/engineering) +"bmx" = ( +/obj/structure/table, +/obj/item/weapon/book/manual/wiki/security_space_law, +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/engine/engineering) +"bmy" = ( +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/engine/engineering) +"bmz" = ( +/obj/structure/filingcabinet, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 6 + }, +/area/engine/engineering) +"bmA" = ( +/obj/structure/chair/wood/normal{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bmB" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bmC" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bmD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bmE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bmF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bmG" = ( +/obj/machinery/door/poddoor/preopen{ + id = "bridge blast"; + name = "Bridge Blast Door" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"bmH" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"bmI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"bmJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/newscaster{ + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"bmK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"bmL" = ( +/obj/structure/cable/blue{ + icon_state = "2-4"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "blue" + }, +/area/crew_quarters/heads) +"bmM" = ( +/obj/machinery/door/airlock/glass_command{ + desc = "The station's command center, where the fate of Nanotrasen's trillion-dollar investment is often decided."; + name = "Bridge"; + req_access_txt = "19" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/bridge) +"bmN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "1-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plasteel, +/area/bridge) +"bmO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/bridge) +"bmP" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/bridge) +"bmQ" = ( +/turf/open/floor/plasteel{ + icon_state = "whitecorner" + }, +/area/bridge) +"bmR" = ( +/obj/structure/table, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/pen, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitecorner" + }, +/area/bridge) +"bmS" = ( +/obj/machinery/camera{ + c_tag = "Prison External"; + dir = 8; + network = list("SS13","Prison") + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plating/asteroid, +/area/security/prison) +"bmT" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/security/prison) +"bmU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/prison) +"bmV" = ( +/obj/structure/closet/wardrobe/orange, +/obj/machinery/status_display{ + pixel_x = 32 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/security/prison) +"bmW" = ( +/obj/structure/closet/secure_closet{ + name = "contraband locker"; + req_access_txt = "3" + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bmX" = ( +/obj/structure/closet/secure_closet/lethalshots, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bmY" = ( +/obj/structure/rack, +/obj/item/weapon/storage/box/rubbershot, +/obj/item/weapon/storage/box/rubbershot, +/obj/item/weapon/storage/box/rubbershot, +/obj/item/weapon/storage/box/rubbershot, +/obj/item/weapon/storage/box/rubbershot, +/obj/item/weapon/storage/box/rubbershot, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bmZ" = ( +/obj/machinery/flasher/portable, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bna" = ( +/obj/machinery/light, +/obj/machinery/flasher/portable, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bnb" = ( +/obj/structure/table/reinforced, +/obj/machinery/recharger, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bnc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel{ + icon_state = "redcorner"; + dir = 1 + }, +/area/security/brig) +"bnd" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/window/brigdoor/eastleft{ + id = "Cell 4"; + name = "Cell Four"; + req_access_txt = "2" + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "Security Blast Door" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bne" = ( +/obj/machinery/camera{ + c_tag = "Brig Cell Five"; + network = list("SS13","Prison") + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bnf" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bng" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bnh" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_y = -32 + }, +/obj/machinery/light/small, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 8 + }, +/area/engine/engineering) +"bni" = ( +/turf/open/floor/plating/airless{ + icon_state = "warnplatecorner"; + dir = 8 + }, +/area/engine/engineering) +"bnj" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 1 + }, +/area/engine/engineering) +"bnk" = ( +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/emitter{ + anchored = 1; + dir = 1; + state = 2 + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 1 + }, +/area/engine/engineering) +"bnl" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 1 + }, +/area/engine/engineering) +"bnm" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + tag = "icon-1-2"; + icon_state = "1-2" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 1 + }, +/area/engine/engineering) +"bnn" = ( +/obj/item/device/multitool, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 1 + }, +/area/engine/engineering) +"bno" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplatecorner"; + dir = 4 + }, +/area/engine/engineering) +"bnp" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 1 + }, +/area/engine/engineering) +"bnq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bnr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bns" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bnt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/open/floor/plasteel{ + icon_state = "warningcorner" + }, +/area/engine/engineering) +"bnu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/engine/engineering) +"bnv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 1 + }, +/area/engine/engineering) +"bnw" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "yellowcorner" + }, +/area/engine/engineering) +"bnx" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "yellow" + }, +/area/engine/engineering) +"bny" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bnz" = ( +/obj/structure/chair/wood/normal{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bnA" = ( +/obj/structure/table/wood, +/obj/item/weapon/reagent_containers/food/condiment/peppermill, +/obj/item/weapon/reagent_containers/food/condiment/saltshaker{ + pixel_x = 4; + pixel_y = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bnB" = ( +/obj/structure/chair/wood/normal{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bnC" = ( +/obj/structure/table/wood, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bnD" = ( +/obj/structure/chair/wood/normal{ + dir = 8 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bnE" = ( +/obj/structure/chair/wood/normal{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bnF" = ( +/obj/structure/table/wood, +/obj/item/weapon/kitchen/fork, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bnG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "bluecorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bnH" = ( +/obj/structure/closet, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"bnI" = ( +/obj/machinery/button/door{ + id = "bridge blast"; + name = "Bridge Blast Door Control"; + pixel_x = -1; + pixel_y = -24; + req_access_txt = "19" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"bnJ" = ( +/obj/machinery/vending/snack, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"bnK" = ( +/obj/machinery/vending/coffee, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"bnL" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "bluecorner" + }, +/area/crew_quarters/heads) +"bnM" = ( +/obj/machinery/light_switch{ + dir = 8; + pixel_x = -22 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/bridge) +"bnN" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitehall" + }, +/area/bridge) +"bnO" = ( +/obj/machinery/computer/crew, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitehall" + }, +/area/bridge) +"bnP" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/security/prison) +"bnQ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bnR" = ( +/obj/structure/table, +/obj/item/weapon/storage/bag/ore{ + pixel_y = 3 + }, +/obj/item/weapon/storage/bag/ore{ + pixel_x = -3 + }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/security/prison) +"bnS" = ( +/obj/machinery/door/airlock/security{ + name = "Prison Storage"; + req_access_txt = "2" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bnT" = ( +/turf/closed/wall/r_wall, +/area/security/hos) +"bnU" = ( +/obj/structure/closet/bombcloset, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "bluecorner" + }, +/area/security/brig) +"bnV" = ( +/obj/structure/table, +/obj/machinery/recharger, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bnW" = ( +/obj/structure/table, +/obj/machinery/recharger, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "Brig APC"; + pixel_y = 25 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bnX" = ( +/obj/structure/table, +/obj/item/weapon/crowbar/red, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bnY" = ( +/obj/structure/filingcabinet/chestdrawer, +/turf/open/floor/plasteel, +/area/security/brig) +"bnZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"boa" = ( +/obj/structure/closet/secure_closet/brig{ + id = "Cell 4" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bob" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/obj/machinery/flasher{ + id = "Cell 4"; + pixel_y = -28 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"boc" = ( +/obj/structure/grille, +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "Security Blast Door" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/brig) +"bod" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"boe" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bof" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bog" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/light, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"boh" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"boi" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4"; + tag = "90Curve" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"boj" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/camera/emp_proof{ + c_tag = "Singularity Aft"; + dir = 1; + network = list("SS13","Singularity") + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"bok" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"bol" = ( +/obj/machinery/door/airlock/external{ + name = "Engine Access"; + req_access = null; + req_access_txt = "10;13" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/engine/engineering) +"bom" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_y = -32 + }, +/obj/machinery/light/small, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 8 + }, +/area/engine/engineering) +"bon" = ( +/obj/machinery/door/airlock/external{ + name = "Engine Access"; + req_access = null; + req_access_txt = "10;13" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"boo" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "yellow"; + dir = 10 + }, +/area/engine/engineering) +"bop" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/engine/engineering) +"boq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/engine/engineering) +"bor" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/structure/disposalpipe/segment, +/obj/machinery/camera{ + c_tag = "Engineering Aft"; + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/engine/engineering) +"bos" = ( +/obj/machinery/door/airlock/external{ + desc = "Leads to one of the station's small, FTL-capable lifeboats."; + name = "Engineering Escape Pod"; + req_access = null; + req_access_txt = "0" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/engine/engineering) +"bot" = ( +/obj/structure/sign/pods, +/turf/closed/wall, +/area/engine/engineering) +"bou" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bov" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bow" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"box" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"boy" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"boz" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"boA" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/machinery/camera{ + c_tag = "Starboard Hallway Aft Starboard"; + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"boB" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_access_txt = "19"; + req_one_access_txt = "0" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"boC" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitehall" + }, +/area/bridge) +"boD" = ( +/obj/machinery/computer/med_data, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitehall" + }, +/area/bridge) +"boE" = ( +/obj/structure/table, +/obj/item/device/flashlight, +/obj/item/device/flashlight{ + pixel_x = 3; + pixel_y = 1 + }, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "brown" + }, +/area/security/prison) +"boF" = ( +/obj/structure/table, +/obj/item/weapon/storage/backpack/industrial, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/item/weapon/storage/backpack/industrial, +/turf/open/floor/plasteel{ + icon_state = "brown" + }, +/area/security/prison) +"boG" = ( +/obj/structure/table, +/obj/item/weapon/tank/internals/emergency_oxygen{ + pixel_x = -1; + pixel_y = -2 + }, +/obj/item/weapon/tank/internals/emergency_oxygen{ + pixel_x = 1; + pixel_y = 2 + }, +/obj/item/weapon/tank/internals/emergency_oxygen{ + pixel_x = 1; + pixel_y = 2 + }, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "brown" + }, +/area/security/prison) +"boH" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"boI" = ( +/obj/machinery/portable_atmospherics/canister/nitrous_oxide, +/turf/open/floor/plasteel, +/area/security/prison) +"boJ" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/suit_storage_unit/hos, +/turf/open/floor/wood, +/area/security/hos) +"boK" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Head of Security's Office APC"; + pixel_x = 0; + pixel_y = 25 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/mob/living/simple_animal/hostile/bear{ + desc = "Enemies of the law are unbearable to him!"; + faction = list("neutral"); + name = "Security Bear" + }, +/turf/open/floor/wood, +/area/security/hos) +"boL" = ( +/obj/machinery/computer/card/minor/hos, +/turf/open/floor/wood, +/area/security/hos) +"boM" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/wood, +/area/security/hos) +"boN" = ( +/obj/structure/table/wood, +/obj/machinery/recharger, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/wood, +/area/security/hos) +"boO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/security/brig) +"boP" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"boQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"boR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/glass_security{ + name = "Brig"; + req_access_txt = "0"; + req_one_access_txt = "1; 4; 42; 58" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"boS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"boT" = ( +/obj/machinery/door_timer{ + dir = 4; + id = "Cell 5"; + name = "Cell Five Timer"; + pixel_x = 0 + }, +/turf/closed/wall/r_wall, +/area/security/brig) +"boU" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/engine/engineering) +"boV" = ( +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/engine/engineering) +"boW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock/glass_engineering{ + desc = "A place for the Engineering staff to slack off (hopefully) after completing the Engine."; + name = "Engineering Break Room"; + req_access_txt = "11"; + req_one_access_txt = "0" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowfull" + }, +/area/engine/engineering) +"boX" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/engine/engineering) +"boY" = ( +/turf/open/floor/plating, +/obj/structure/shuttle/engine/propulsion/burst{ + dir = 4 + }, +/turf/closed/wall/shuttle{ + icon_state = "swall_f6" + }, +/area/shuttle/pod_4) +"boZ" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall12" + }, +/area/shuttle/pod_4) +"bpa" = ( +/turf/open/space, +/turf/closed/wall/shuttle{ + icon_state = "swall_f10" + }, +/area/shuttle/pod_4) +"bpb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bpc" = ( +/obj/structure/table/wood, +/obj/item/toy/carpplushie, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bpd" = ( +/obj/machinery/door/window/westright{ + name = "Theater Stage"; + req_access_txt = "46" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bpe" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bpf" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bpg" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bph" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bpi" = ( +/obj/machinery/door/window/eastright{ + name = "Theater Stage"; + req_access_txt = "46" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bpj" = ( +/obj/structure/chair/wood/normal{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bpk" = ( +/obj/structure/table/wood, +/obj/item/weapon/reagent_containers/food/condiment/peppermill, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bpl" = ( +/obj/structure/table/wood, +/obj/item/weapon/reagent_containers/food/condiment/saltshaker, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bpm" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/nuke_storage) +"bpn" = ( +/turf/closed/wall, +/area/security/nuke_storage) +"bpo" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"bpp" = ( +/obj/structure/closet/emcloset, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel, +/area/bridge) +"bpq" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel, +/area/bridge) +"bpr" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitehall" + }, +/area/bridge) +"bps" = ( +/obj/structure/table, +/obj/item/weapon/storage/firstaid/regular, +/obj/machinery/light, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitehall" + }, +/area/bridge) +"bpt" = ( +/obj/structure/closet, +/obj/item/clothing/suit/straight_jacket, +/obj/item/weapon/restraints/legcuffs, +/obj/item/weapon/restraints/legcuffs, +/obj/item/weapon/restraints/legcuffs, +/turf/open/floor/plasteel, +/area/security/prison) +"bpu" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/machinery/portable_atmospherics/scrubber, +/turf/open/floor/plasteel, +/area/security/prison) +"bpv" = ( +/obj/structure/filingcabinet/filingcabinet, +/obj/machinery/camera{ + c_tag = "Head of Security's Office"; + dir = 4 + }, +/turf/open/floor/wood, +/area/security/hos) +"bpw" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/carpet, +/area/security/hos) +"bpx" = ( +/turf/open/floor/carpet, +/area/security/hos) +"bpy" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/wood, +/area/security/hos) +"bpz" = ( +/obj/structure/grille, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/security/hos) +"bpA" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/security/brig) +"bpB" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bpC" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bpD" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bpE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bpF" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/glass_security{ + name = "Brig"; + req_access_txt = "0"; + req_one_access_txt = "1; 4; 42; 58" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bpG" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bpH" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bpI" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/door/window/brigdoor/eastleft{ + id = "Cell 5"; + name = "Cell Five"; + req_access_txt = "2" + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "Security Blast Door" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bpJ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/obj/machinery/camera{ + c_tag = "Brig Cell Six"; + network = list("SS13","Prison") + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bpK" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Port Hallway APC"; + pixel_x = -24 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/open/floor/plating, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bpL" = ( +/obj/structure/bookcase/manuals/engineering, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "yellow" + }, +/area/engine/engineering) +"bpM" = ( +/obj/machinery/requests_console{ + department = "Engineering"; + departmentType = 4; + name = "Engineering Requests Console"; + pixel_y = 30 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/engineering) +"bpN" = ( +/obj/structure/chair/stool, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/engineering) +"bpO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/chair/stool, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/engineering) +"bpP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/engineering) +"bpQ" = ( +/obj/machinery/disposal/bin, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "yellow" + }, +/area/engine/engineering) +"bpR" = ( +/obj/machinery/camera{ + c_tag = "Engineering Escape Pod"; + dir = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"bpS" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Escape Pod Airlock" + }, +/obj/docking_port/mobile/pod{ + dir = 4; + id = "pod4"; + name = "escape pod 4" + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/pod_4) +"bpT" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + pixel_y = 25 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/pod_4) +"bpU" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/pod_4) +"bpV" = ( +/obj/structure/grille, +/obj/structure/window/shuttle, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/pod_4) +"bpW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bpX" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bpY" = ( +/obj/machinery/light, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bpZ" = ( +/obj/structure/piano, +/obj/machinery/camera{ + c_tag = "Theater Stage"; + dir = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bqa" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bqb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bqc" = ( +/turf/closed/wall/r_wall, +/area/security/nuke_storage) +"bqd" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall, +/area/bridge) +"bqe" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/airlock/command{ + name = "Conference Room"; + req_access = null; + req_access_txt = "19" + }, +/turf/open/floor/wood, +/area/bridge) +"bqf" = ( +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Head of Security's Desk"; + departmentType = 5; + name = "Head of Security Requests Console"; + pixel_x = -32 + }, +/obj/structure/closet/secure_closet/hos, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/wood, +/area/security/hos) +"bqg" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/carpet, +/area/security/hos) +"bqh" = ( +/obj/structure/table/wood, +/obj/item/weapon/book/manual/wiki/security_space_law, +/obj/item/weapon/folder/red, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/carpet, +/area/security/hos) +"bqi" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/carpet, +/area/security/hos) +"bqj" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/wood, +/area/security/hos) +"bqk" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/glass_command{ + desc = "The workplace of the Company's top enforcer aboard station, and often the only person standing between you, and the threat of the week."; + name = "Head of Security's Office"; + req_access_txt = "58" + }, +/turf/open/floor/wood, +/area/security/hos) +"bql" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/security/brig) +"bqm" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bqn" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/security/brig) +"bqo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/security/brig) +"bqp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/security/brig) +"bqq" = ( +/obj/structure/table, +/obj/structure/bedsheetbin, +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'HIGH VOLTAGE'"; + icon_state = "shock"; + name = "HIGH VOLTAGE"; + pixel_y = -32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bqr" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/security/brig) +"bqs" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/security/brig) +"bqt" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/closet/secure_closet/brig{ + id = "Cell 5" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bqu" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/obj/machinery/flasher{ + id = "Cell 5"; + pixel_y = -28 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bqv" = ( +/obj/structure/grille, +/obj/structure/cable, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "Security Blast Door" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/brig) +"bqw" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bqx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bqy" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Port Interior Maintenance Access"; + req_access_txt = "12" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bqz" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bqA" = ( +/obj/structure/table, +/obj/item/weapon/storage/firstaid/regular, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/engine/engineering) +"bqB" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/obj/effect/landmark/start{ + name = "Station Engineer" + }, +/obj/structure/chair/stool, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bqC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/table/glass, +/obj/item/weapon/folder/yellow, +/obj/item/weapon/pen, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bqD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/table/glass, +/obj/item/weapon/paint/anycolor, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bqE" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/obj/structure/chair/stool, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bqF" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engine/engineering) +"bqG" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/engine/engineering) +"bqH" = ( +/turf/open/floor/plating, +/obj/structure/shuttle/engine/propulsion/burst{ + dir = 4 + }, +/turf/closed/wall/shuttle{ + icon_state = "swall_f5" + }, +/area/shuttle/pod_4) +"bqI" = ( +/turf/open/space, +/turf/closed/wall/shuttle{ + icon_state = "swall_f9" + }, +/area/shuttle/pod_4) +"bqJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bqK" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bqL" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bqM" = ( +/obj/machinery/door/airlock{ + name = "Theater Stage"; + req_access_txt = "46" + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bqN" = ( +/obj/machinery/disposal/bin, +/obj/machinery/newscaster{ + dir = 8; + pixel_x = -32 + }, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bqO" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/sortjunction{ + dir = 2; + icon_state = "pipe-j2s"; + sortType = 16 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bqP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bqQ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/obj/structure/closet/secure_closet/freezer, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/nuke_storage) +"bqR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/bluegrid{ + icon_state = "gcircuit"; + luminosity = 2 + }, +/area/security/nuke_storage) +"bqS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/closet/secure_closet{ + name = "contraband locker"; + req_access_txt = "3" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/nuke_storage) +"bqT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/security/nuke_storage) +"bqU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"bqV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"bqW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/bridge) +"bqX" = ( +/obj/structure/reagent_dispensers/water_cooler, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/bridge) +"bqY" = ( +/turf/open/floor/wood, +/area/bridge) +"bqZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/wood, +/area/bridge) +"bra" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/wood, +/area/bridge) +"brb" = ( +/obj/machinery/light_switch{ + pixel_y = 28 + }, +/turf/open/floor/wood, +/area/bridge) +"brc" = ( +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Bridge"; + departmentType = 5; + name = "Bridge Requests Console"; + pixel_y = 30 + }, +/turf/open/floor/wood, +/area/bridge) +"brd" = ( +/obj/machinery/vending/snack, +/turf/open/floor/wood, +/area/bridge) +"bre" = ( +/obj/machinery/computer/secure_data, +/obj/structure/sign/securearea{ + pixel_x = -32 + }, +/turf/open/floor/wood, +/area/security/hos) +"brf" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/effect/landmark/start{ + name = "Head of Security" + }, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/security/hos) +"brg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/table/wood, +/obj/item/device/flashlight/lamp/green{ + on = 0; + pixel_x = -3; + pixel_y = 8 + }, +/obj/item/weapon/paper_bin, +/turf/open/floor/carpet, +/area/security/hos) +"brh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/carpet, +/area/security/hos) +"bri" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/wood, +/area/security/hos) +"brj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/grille, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/hos) +"brk" = ( +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/security/brig) +"brl" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/brig) +"brm" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"brn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock/security{ + name = "Tribunal"; + req_access = null; + req_access_txt = "42" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/security/brig) +"bro" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/security{ + name = "Tribunal"; + req_access = null; + req_access_txt = "63" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/security/brig) +"brp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/turf/open/floor/plasteel{ + icon_state = "greencorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"brq" = ( +/obj/structure/transit_tube{ + icon_state = "NW-SE" + }, +/turf/open/space, +/area/space/nearstation) +"brr" = ( +/obj/structure/transit_tube{ + icon_state = "N-S" + }, +/obj/structure/transit_tube{ + icon_state = "D-SW" + }, +/turf/open/space, +/area/space/nearstation) +"brs" = ( +/obj/structure/lattice, +/obj/effect/landmark{ + name = "carpspawn" + }, +/turf/open/space, +/area/space/nearstation) +"brt" = ( +/obj/machinery/newscaster{ + dir = 8; + pixel_x = -32 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/engine/engineering) +"bru" = ( +/obj/structure/chair/stool, +/turf/open/floor/plasteel, +/area/engine/engineering) +"brv" = ( +/obj/structure/table/glass, +/obj/item/weapon/extinguisher, +/turf/open/floor/plasteel, +/area/engine/engineering) +"brw" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/table/glass, +/obj/item/weapon/paper_bin, +/turf/open/floor/plasteel, +/area/engine/engineering) +"brx" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engine/engineering) +"bry" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"brz" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/sortjunction{ + dir = 8; + sortType = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"brA" = ( +/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{ + dir = 8 + }, +/obj/structure/disposalpipe/sortjunction{ + dir = 8; + sortType = 5 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"brB" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"brC" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"brD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"brE" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/junction{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"brF" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Starboard Hallway Aft Central" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"brG" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/sortjunction{ + dir = 8; + icon_state = "pipe-j2s"; + sortType = 18 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"brH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"brI" = ( +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-y"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"brJ" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "warningcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"brK" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 1 + }, +/area/security/nuke_storage) +"brL" = ( +/obj/machinery/light_switch{ + dir = 8; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/nuke_storage) +"brM" = ( +/turf/open/floor/bluegrid{ + icon_state = "gcircuit"; + luminosity = 2 + }, +/area/security/nuke_storage) +"brN" = ( +/obj/machinery/nuclearbomb/selfdestruct{ + layer = 2 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/nuke_storage) +"brO" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/nuke_storage) +"brP" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"brQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/bridge) +"brR" = ( +/turf/open/floor/carpet, +/area/bridge) +"brS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/carpet, +/area/bridge) +"brT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/hologram/holopad, +/turf/open/floor/carpet, +/area/bridge) +"brU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/bridge) +"brV" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/carpet, +/area/bridge) +"brW" = ( +/obj/machinery/vending/coffee, +/turf/open/floor/wood, +/area/bridge) +"brX" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/bridge) +"brY" = ( +/obj/machinery/computer/security, +/obj/machinery/button/door{ + id = "Prison Gate"; + name = "Prison Wing Lockdown"; + pixel_x = -28; + pixel_y = 7; + req_access_txt = "2" + }, +/obj/machinery/button/door{ + id = "Secure Gate"; + name = "Brig Lockdown"; + pixel_x = -28; + pixel_y = -3; + req_access_txt = "2" + }, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/wood, +/area/security/hos) +"brZ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/turf/open/floor/wood, +/area/security/hos) +"bsa" = ( +/obj/structure/table/wood, +/obj/item/device/radio, +/obj/item/device/taperecorder, +/obj/item/weapon/stamp/hos, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/turf/open/floor/carpet, +/area/security/hos) +"bsb" = ( +/turf/open/floor/wood, +/area/security/hos) +"bsc" = ( +/obj/machinery/disposal/bin, +/obj/machinery/keycard_auth{ + pixel_y = -24 + }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/wood, +/area/security/hos) +"bsd" = ( +/obj/machinery/door/airlock/security{ + name = "Evidence Storage"; + req_access = null; + req_access_txt = "1" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/brig) +"bse" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/closed/wall, +/area/security/brig) +"bsf" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bsg" = ( +/turf/open/floor/plasteel{ + icon_state = "bluecorner" + }, +/area/crew_quarters/courtroom) +"bsh" = ( +/turf/closed/wall, +/area/crew_quarters/courtroom) +"bsi" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bsj" = ( +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bsk" = ( +/obj/structure/chair, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bsl" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/chair, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bsm" = ( +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bsn" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plasteel{ + icon_state = "greenfull" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bso" = ( +/obj/structure/transit_tube{ + icon_state = "N-S" + }, +/obj/structure/transit_tube{ + icon_state = "NW-SE" + }, +/turf/open/space, +/area/space/nearstation) +"bsp" = ( +/obj/structure/lattice, +/obj/structure/transit_tube{ + icon_state = "D-SW" + }, +/turf/open/space, +/area/space/nearstation) +"bsq" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/engine/engineering) +"bsr" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/chair/stool, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bss" = ( +/obj/machinery/status_display{ + layer = 4; + pixel_x = 32 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engine/engineering) +"bst" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bsu" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Med"; + location = "StAF1" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bsv" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bsw" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bsx" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bsy" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bsz" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bsA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bsB" = ( +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=StAF1"; + location = "StAF2" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bsC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warning" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bsD" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "warndark"; + dir = 8 + }, +/area/security/nuke_storage) +"bsE" = ( +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/nuke_storage) +"bsF" = ( +/obj/machinery/door/airlock/vault{ + icon_state = "door_locked"; + locked = 1; + req_access_txt = "53"; + req_one_access_txt = "0" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/nuke_storage) +"bsG" = ( +/obj/effect/landmark{ + name = "blobstart" + }, +/turf/open/floor/bluegrid{ + icon_state = "gcircuit"; + luminosity = 2 + }, +/area/security/nuke_storage) +"bsH" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/nuke_storage) +"bsI" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Vault APC"; + pixel_x = -25 + }, +/obj/structure/cable/blue{ + icon_state = "0-4"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plating, +/area/security/nuke_storage) +"bsJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/blue{ + icon_state = "1-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"bsK" = ( +/obj/machinery/status_display, +/turf/closed/wall, +/area/bridge) +"bsL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/camera{ + c_tag = "Conference Room"; + dir = 4 + }, +/turf/open/floor/wood, +/area/bridge) +"bsM" = ( +/obj/structure/chair/comfy/beige{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/bridge) +"bsN" = ( +/obj/structure/table/wood, +/obj/item/weapon/storage/box/cups, +/turf/open/floor/carpet, +/area/bridge) +"bsO" = ( +/obj/structure/table/wood, +/obj/item/weapon/folder/blue, +/turf/open/floor/carpet, +/area/bridge) +"bsP" = ( +/obj/structure/chair/comfy/beige{ + dir = 8 + }, +/turf/open/floor/carpet, +/area/bridge) +"bsQ" = ( +/obj/structure/table/wood, +/obj/machinery/recharger, +/turf/open/floor/wood, +/area/bridge) +"bsR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/brig) +"bsS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/brig) +"bsT" = ( +/obj/structure/closet{ + name = "Evidence Closet" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/brig) +"bsU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/security/brig) +"bsV" = ( +/obj/machinery/light_switch{ + dir = 8; + pixel_x = -22 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bsW" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "blue" + }, +/area/crew_quarters/courtroom) +"bsX" = ( +/obj/structure/table/wood, +/obj/item/weapon/book/manual/wiki/security_space_law, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/crew_quarters/courtroom) +"bsY" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bsZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/crew_quarters/courtroom) +"bta" = ( +/obj/structure/chair, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/crew_quarters/courtroom) +"btb" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/crew_quarters/courtroom) +"btc" = ( +/obj/machinery/door/airlock{ + desc = "SS13's courtroom and meeting hall."; + name = "Tribunal" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"btd" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/sortjunction{ + dir = 1; + icon_state = "pipe-j2s"; + sortType = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bte" = ( +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 29 + }, +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plasteel{ + icon_state = "greenfull" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"btf" = ( +/obj/structure/transit_tube{ + icon_state = "N-S" + }, +/obj/structure/transit_tube{ + icon_state = "D-NE" + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"btg" = ( +/obj/structure/transit_tube{ + icon_state = "NW-SE" + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"bth" = ( +/obj/structure/table, +/obj/item/weapon/storage/box/cups, +/turf/open/floor/plasteel{ + icon_state = "yellow"; + dir = 10 + }, +/area/engine/engineering) +"bti" = ( +/obj/structure/table, +/obj/item/weapon/paper_bin, +/obj/item/weapon/pen, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/engine/engineering) +"btj" = ( +/obj/structure/table, +/obj/item/clothing/gloves/color/yellow, +/obj/item/weapon/storage/toolbox/electrical, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/engine/engineering) +"btk" = ( +/obj/structure/reagent_dispensers/water_cooler, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/engine/engineering) +"btl" = ( +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/engine/engineering) +"btm" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "yellow" + }, +/area/engine/engineering) +"btn" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bto" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"btp" = ( +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"btq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"btr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/light_switch{ + pixel_y = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bts" = ( +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"btt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"btu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"btv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"btw" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"btx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bty" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 8 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"btz" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 4 + }, +/area/security/nuke_storage) +"btA" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/nuke_storage) +"btB" = ( +/mob/living/simple_animal/mouse/brown/Tom, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/nuke_storage) +"btC" = ( +/obj/item/weapon/storage/secure/safe{ + pixel_x = 32 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/nuke_storage) +"btD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"btE" = ( +/obj/structure/table/wood, +/obj/item/weapon/storage/fancy/donut_box, +/turf/open/floor/carpet, +/area/bridge) +"btF" = ( +/obj/structure/table/wood, +/turf/open/floor/carpet, +/area/bridge) +"btG" = ( +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/bridge) +"btH" = ( +/obj/structure/closet{ + name = "Evidence Closet" + }, +/obj/machinery/camera{ + c_tag = "Evidence Storage"; + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/brig) +"btI" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/brig) +"btJ" = ( +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/brig) +"btK" = ( +/obj/structure/closet{ + name = "Evidence Closet" + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/brig) +"btL" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"btM" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "blue" + }, +/area/crew_quarters/courtroom) +"btN" = ( +/obj/structure/table/wood, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 10 + }, +/area/crew_quarters/courtroom) +"btO" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/table/wood, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "bluecorner" + }, +/area/crew_quarters/courtroom) +"btP" = ( +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/crew_quarters/courtroom) +"btQ" = ( +/obj/structure/table/wood, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/crew_quarters/courtroom) +"btR" = ( +/obj/structure/table/wood, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/crew_quarters/courtroom) +"btS" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"btT" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "greencorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"btU" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Aft Port Transit Maintenance"; + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"btV" = ( +/turf/closed/wall, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"btW" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"btX" = ( +/obj/structure/lattice, +/obj/structure/transit_tube{ + icon_state = "D-NE" + }, +/turf/open/space, +/area/space/nearstation) +"btY" = ( +/obj/structure/transit_tube{ + icon_state = "E-NW" + }, +/turf/open/space, +/area/space/nearstation) +"btZ" = ( +/obj/structure/transit_tube{ + icon_state = "W-SE" + }, +/turf/open/space, +/area/space/nearstation) +"bua" = ( +/obj/structure/grille, +/obj/structure/cable/yellow, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/engine/engineering) +"bub" = ( +/obj/effect/landmark{ + name = "carpspawn" + }, +/turf/open/space, +/area/space/nearstation) +"buc" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/camera{ + c_tag = "Starboard Hallway Aft Port"; + dir = 8 + }, +/obj/structure/sign/directions/engineering{ + pixel_x = 32; + pixel_y = 0 + }, +/obj/structure/sign/directions/medical{ + pixel_x = 32; + pixel_y = -8 + }, +/obj/structure/sign/directions/science{ + pixel_x = 32; + pixel_y = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bud" = ( +/turf/closed/wall, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bue" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"buf" = ( +/obj/machinery/door/airlock{ + name = "Theater Storage"; + req_access_txt = "46" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bug" = ( +/obj/machinery/door/airlock{ + name = "Theater Storage"; + req_access_txt = "46" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"buh" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bui" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"buj" = ( +/obj/structure/closet/crate{ + name = "Gold Crate" + }, +/obj/item/stack/sheet/mineral/gold{ + pixel_x = -1; + pixel_y = 5 + }, +/obj/item/stack/sheet/mineral/gold{ + pixel_x = -1; + pixel_y = 5 + }, +/obj/item/stack/sheet/mineral/gold{ + pixel_x = -1; + pixel_y = 5 + }, +/obj/item/weapon/storage/belt/champion, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/nuke_storage) +"buk" = ( +/obj/item/weapon/folder/documents, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/nuke_storage) +"bul" = ( +/obj/structure/filingcabinet/filingcabinet, +/obj/machinery/camera{ + c_tag = "Vault"; + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/nuke_storage) +"bum" = ( +/obj/structure/safe, +/obj/item/clothing/head/bearpelt, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/nuke_storage) +"bun" = ( +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 29 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/obj/structure/closet/crate, +/obj/item/weapon/coin/silver, +/obj/item/weapon/coin/iron, +/obj/item/weapon/coin/iron, +/obj/item/weapon/coin/gold, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/nuke_storage) +"buo" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/security/nuke_storage) +"bup" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"buq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"bur" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/bridge) +"bus" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/machinery/disposal/bin, +/turf/open/floor/wood, +/area/bridge) +"but" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/obj/machinery/newscaster{ + pixel_y = -32 + }, +/turf/open/floor/carpet, +/area/bridge) +"buu" = ( +/obj/structure/chair/comfy/beige{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/bridge) +"buv" = ( +/obj/structure/chair/comfy/beige{ + dir = 1 + }, +/obj/machinery/light, +/turf/open/floor/carpet, +/area/bridge) +"buw" = ( +/obj/structure/noticeboard{ + dir = 1; + pixel_y = -27 + }, +/turf/open/floor/carpet, +/area/bridge) +"bux" = ( +/obj/machinery/photocopier, +/turf/open/floor/wood, +/area/bridge) +"buy" = ( +/obj/structure/closet{ + name = "Evidence Closet" + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/brig) +"buz" = ( +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/brig) +"buA" = ( +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/brig) +"buB" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "bluecorner" + }, +/area/crew_quarters/courtroom) +"buC" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "blue" + }, +/area/crew_quarters/courtroom) +"buD" = ( +/obj/structure/table/wood, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/item/weapon/gavelblock, +/obj/item/weapon/gavelhammer, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/crew_quarters/courtroom) +"buE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"buF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"buG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"buH" = ( +/obj/machinery/light_switch{ + dir = 1; + pixel_y = 22 + }, +/obj/structure/chair{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "redcorner" + }, +/area/crew_quarters/courtroom) +"buI" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/crew_quarters/courtroom) +"buJ" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "redcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"buK" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"buL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"buM" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"buN" = ( +/obj/machinery/camera{ + c_tag = "Aft Port Transit" + }, +/obj/machinery/light_switch{ + dir = 1; + pixel_y = 22 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"buO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"buP" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"buQ" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"buR" = ( +/obj/structure/transit_tube{ + icon_state = "N-S-Pass" + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"buS" = ( +/obj/machinery/door/airlock/external{ + name = "External Airlock"; + req_access_txt = "13" + }, +/turf/open/floor/plating{ + icon_state = "warnplate" + }, +/area/maintenance/aft) +"buT" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 29 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"buU" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/obj/structure/dresser, +/turf/open/floor/wood, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"buV" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"buW" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/wood, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"buX" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/obj/structure/bed, +/obj/item/weapon/bedsheet/purple, +/turf/open/floor/wood, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"buY" = ( +/obj/structure/table/wood, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"buZ" = ( +/obj/structure/chair/stool, +/obj/effect/landmark/start{ + name = "Clown" + }, +/obj/structure/mirror{ + pixel_x = -60; + pixel_y = -3 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bva" = ( +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvb" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvc" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvd" = ( +/obj/structure/chair/stool, +/obj/effect/landmark/start{ + name = "Mime" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bve" = ( +/obj/structure/table/wood, +/obj/item/weapon/lipstick/random, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvf" = ( +/obj/machinery/shower{ + dir = 4 + }, +/obj/item/weapon/soap, +/obj/item/weapon/bikehorn/rubberducky, +/obj/machinery/button/door{ + id = "shutbath2"; + name = "Bathroom Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + req_access_txt = "0"; + specialfunctions = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvg" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvh" = ( +/obj/machinery/door/airlock{ + desc = "Basic human needs haven't changed much over the centuries."; + name = "Restroom"; + req_access_txt = "0" + }, +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvi" = ( +/obj/structure/disposalpipe/segment, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bvj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bvk" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"bvl" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "blue" + }, +/area/crew_quarters/courtroom) +"bvm" = ( +/obj/structure/table/wood, +/obj/item/device/radio/intercom{ + broadcasting = 1; + dir = 8; + listening = 0; + name = "Station Intercom (Court)" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/crew_quarters/courtroom) +"bvn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bvo" = ( +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bvp" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/crew_quarters/courtroom) +"bvq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bvr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/crew_quarters/courtroom) +"bvs" = ( +/obj/machinery/door/airlock/glass_security{ + id_tag = "outerbrig"; + name = "Tribunal"; + req_access_txt = "63" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "redfull" + }, +/area/crew_quarters/courtroom) +"bvt" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bvu" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bvv" = ( +/obj/machinery/door/airlock/glass{ + name = "Aft Port Transit" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bvw" = ( +/turf/open/floor/plasteel{ + icon_state = "warningcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bvx" = ( +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bvy" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bvz" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 1 + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bvA" = ( +/obj/structure/transit_tube{ + icon_state = "N-SW" + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"bvB" = ( +/turf/closed/wall, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bvC" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_x = -32 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/maintenance/aft) +"bvD" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bvE" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bvF" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/wood, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvG" = ( +/turf/open/floor/wood, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvI" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/orange, +/turf/open/floor/wood, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvJ" = ( +/obj/structure/table/wood, +/obj/item/weapon/bikehorn/airhorn, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvK" = ( +/obj/structure/mirror{ + pixel_x = -60; + pixel_y = -3 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvL" = ( +/obj/structure/dresser, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvM" = ( +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/machinery/disposal/bin, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvN" = ( +/obj/machinery/vending/autodrobe, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvO" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/structure/mirror{ + pixel_x = -30 + }, +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvP" = ( +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvQ" = ( +/obj/structure/toilet{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvR" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bvS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bvT" = ( +/turf/closed/wall, +/area/crew_quarters/fitness) +"bvU" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/crew_quarters/fitness) +"bvV" = ( +/turf/open/floor/engine{ + name = "Holodeck Projector Floor" + }, +/area/holodeck/rec_center) +"bvW" = ( +/turf/closed/wall, +/area/maintenance/asmaint2) +"bvX" = ( +/obj/structure/closet, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bvY" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bvZ" = ( +/obj/structure/closet/crate, +/obj/item/stack/cable_coil, +/obj/item/weapon/grenade/chem_grenade, +/obj/item/device/flashlight, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bwa" = ( +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bwb" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bwc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bluecorner" + }, +/area/crew_quarters/courtroom) +"bwd" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 6 + }, +/area/crew_quarters/courtroom) +"bwe" = ( +/obj/structure/table/wood, +/obj/item/weapon/folder/blue, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/crew_quarters/courtroom) +"bwf" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bwg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bwh" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "redcorner" + }, +/area/crew_quarters/courtroom) +"bwi" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/crew_quarters/courtroom) +"bwj" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bwk" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bwl" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warning" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bwm" = ( +/obj/structure/transit_tube{ + icon_state = "Block"; + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "warning" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bwn" = ( +/obj/structure/transit_tube/station/reverse{ + dir = 1 + }, +/obj/structure/transit_tube_pod{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bwo" = ( +/obj/structure/transit_tube, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bwp" = ( +/obj/structure/transit_tube, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 4 + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bwq" = ( +/obj/structure/transit_tube{ + icon_state = "W-NE" + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"bwr" = ( +/obj/structure/transit_tube{ + icon_state = "D-NW" + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"bws" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/transit_tube, +/turf/open/floor/plating{ + icon_state = "warnplatecorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bwt" = ( +/obj/structure/transit_tube, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bwu" = ( +/obj/structure/transit_tube/station/reverse, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bwv" = ( +/obj/structure/transit_tube{ + icon_state = "Block"; + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bww" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bwx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bwy" = ( +/obj/machinery/door/airlock{ + name = "Locker Room"; + req_access_txt = "0" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bwz" = ( +/obj/machinery/door/airlock{ + desc = "Basic human needs haven't changed much over the centuries."; + id_tag = "shutbath2"; + name = "Unisex Restroom"; + req_access_txt = "0" + }, +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bwA" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bwB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bwC" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_access_txt = "0"; + req_one_access_txt = "12; 19" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"bwD" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/engine{ + name = "Holodeck Projector Floor" + }, +/area/holodeck/rec_center) +"bwE" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bwF" = ( +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bwG" = ( +/obj/item/clothing/mask/gas, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bwH" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bwI" = ( +/obj/structure/table/wood, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "blue" + }, +/area/crew_quarters/courtroom) +"bwJ" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/table/wood, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "bluecorner" + }, +/area/crew_quarters/courtroom) +"bwK" = ( +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/crew_quarters/courtroom) +"bwL" = ( +/obj/structure/table/wood, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/crew_quarters/courtroom) +"bwM" = ( +/obj/structure/table/wood, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/crew_quarters/courtroom) +"bwN" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/newscaster{ + dir = 8; + pixel_x = -32 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bwO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/camera{ + c_tag = "Port Hallway Aft"; + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bwP" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Aft Port Transit Maintenance"; + req_access_txt = "12" + }, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 8 + }, +/area/maintenance/aft) +"bwQ" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplate" + }, +/area/maintenance/aft) +"bwR" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bwS" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 8 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bwT" = ( +/obj/machinery/vending/coffee, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bwU" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bwV" = ( +/obj/machinery/camera{ + c_tag = "Aft Starboard Transit"; + dir = 8 + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bwW" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 8 + }, +/area/maintenance/aft) +"bwX" = ( +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/maintenance/aft) +"bwY" = ( +/obj/machinery/disposal/bin, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bwZ" = ( +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxa" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxb" = ( +/obj/machinery/status_display{ + pixel_y = 32 + }, +/obj/structure/chair/stool, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxc" = ( +/obj/machinery/computer/slot_machine, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxd" = ( +/obj/structure/table/wood, +/obj/machinery/camera/xray{ + c_tag = "Aft Dormitory Cabins" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxe" = ( +/obj/structure/table/wood, +/obj/item/device/assembly/voice, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxf" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/table/wood, +/obj/item/weapon/lipstick/black, +/obj/machinery/status_display{ + layer = 4; + pixel_y = 32 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxg" = ( +/obj/structure/table/wood, +/obj/item/device/taperecorder/empty, +/obj/item/device/tape/random, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxh" = ( +/obj/structure/table/wood, +/obj/item/weapon/coin/iron, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxi" = ( +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxj" = ( +/obj/machinery/camera{ + c_tag = "Aft Dormitory" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxk" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxl" = ( +/obj/machinery/vending/clothing, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/structure/cable/green{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bxn" = ( +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/closed/wall, +/area/crew_quarters/fitness) +"bxo" = ( +/obj/structure/closet/masks, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bxp" = ( +/obj/structure/cable/green{ + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "Fitness Room APC"; + pixel_y = 25 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bxq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bxr" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bxs" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bxt" = ( +/obj/machinery/firealarm{ + pixel_y = 25 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bxu" = ( +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bxv" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bxw" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/camera{ + c_tag = "Holodeck" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/crew_quarters/fitness) +"bxx" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Firefighting equipment"; + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bxy" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bxz" = ( +/obj/structure/table/wood, +/obj/machinery/camera{ + c_tag = "Tribunal"; + dir = 1 + }, +/obj/item/weapon/paper/Court, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/crew_quarters/courtroom) +"bxA" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bxB" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bxC" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/crew_quarters/courtroom) +"bxD" = ( +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/crew_quarters/courtroom) +"bxE" = ( +/obj/machinery/door/airlock{ + desc = "SS13's courtroom and meeting hall."; + name = "Tribunal" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bxF" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bxG" = ( +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 4 + }, +/area/maintenance/aft) +"bxH" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bxI" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Aft Starboard Transit Maintenance"; + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bxJ" = ( +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bxK" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bxL" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bxM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bxN" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bxO" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bxP" = ( +/obj/structure/rack, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/item/weapon/tank/internals/emergency_oxygen, +/obj/item/clothing/mask/breath, +/turf/open/floor/plating, +/area/maintenance/aft) +"bxQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/glass{ + name = "Aft Dormitory" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxR" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxS" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxV" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/glass{ + name = "Aft Dormitory" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bya" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"byb" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"byc" = ( +/obj/structure/closet/lasertag/blue, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = -22 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"byd" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bye" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"byf" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"byg" = ( +/obj/machinery/door/window/eastright{ + base_state = "left"; + dir = 8; + icon_state = "left"; + name = "Fitness Ring" + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "darkyellow"; + dir = 9 + }, +/area/crew_quarters/fitness) +"byh" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "darkyellowcorners"; + dir = 1 + }, +/area/crew_quarters/fitness) +"byi" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "darkbluecorners"; + dir = 4 + }, +/area/crew_quarters/fitness) +"byj" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "darkblue"; + dir = 5 + }, +/area/crew_quarters/fitness) +"byk" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"byl" = ( +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/crew_quarters/fitness) +"bym" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/glass{ + desc = "Hosed down three times a week by the Janitor."; + name = "Holodeck" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"byn" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"byo" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Tribunal APC"; + pixel_x = 25 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/open/floor/plating, +/area/crew_quarters/courtroom) +"byp" = ( +/obj/structure/closet/secure_closet/courtroom, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "bluecorner" + }, +/area/crew_quarters/courtroom) +"byq" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"byr" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/door/airlock/glass{ + name = "Port Hallway" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bys" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/glass{ + name = "Port Hallway" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"byt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/airlock/glass{ + name = "Port Hallway" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"byu" = ( +/obj/structure/chair/stool, +/turf/open/floor/plating, +/area/maintenance/aft) +"byv" = ( +/obj/structure/table, +/obj/item/weapon/tank/internals/emergency_oxygen{ + pixel_x = -8 + }, +/obj/item/weapon/tank/internals/emergency_oxygen{ + pixel_x = -8 + }, +/obj/item/clothing/mask/breath{ + pixel_x = 4 + }, +/obj/item/clothing/mask/breath{ + pixel_x = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"byw" = ( +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/maintenance/aft) +"byx" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plating, +/area/maintenance/aft) +"byy" = ( +/obj/structure/grille{ + density = 0; + icon_state = "brokengrille" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"byz" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"byA" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"byB" = ( +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 2; + name = "Aft Central Hallway APC"; + pixel_y = -25 + }, +/turf/open/floor/plating, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"byC" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_y = -22 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"byD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"byE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"byF" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"byG" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/glass{ + name = "Aft Dormitory" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"byH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"byI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"byJ" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"byK" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"byL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/landmark{ + name = "lightsout" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"byM" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"byN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"byO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"byP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"byQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"byR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"byS" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/glass{ + name = "Aft Dormitory" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"byT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-y"; + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"byU" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"byV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"byW" = ( +/obj/machinery/door/airlock/glass{ + desc = "The base's recreational center. Focused on fitness, as any astronaut would expect."; + name = "Fitness Room" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"byX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"byY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/junction{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"byZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bza" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bzb" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "darkyellowcorners"; + dir = 1 + }, +/area/crew_quarters/fitness) +"bzc" = ( +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 5 + }, +/area/crew_quarters/fitness) +"bzd" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "darkbluecorners"; + dir = 4 + }, +/area/crew_quarters/fitness) +"bze" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bzf" = ( +/obj/machinery/computer/holodeck, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/crew_quarters/fitness) +"bzg" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "Brig Atmospheric Control"; + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bzh" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bzi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/atmos{ + name = "Brig Atmospheric Control"; + req_access_txt = "24" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bzj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bzk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bzl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock/maintenance{ + name = "Tribunal Maintenance"; + req_access_txt = "42"; + req_one_access_txt = "0" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bzm" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance{ + name = "Tribunal Maintenance"; + req_access_txt = "63"; + req_one_access_txt = "0" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bzn" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellowcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bzo" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bzp" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/status_display{ + pixel_x = 32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bzq" = ( +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plasteel{ + icon_state = "greenfull" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bzr" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Aft Interior Maintenance Access"; + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bzs" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Aft Interior Maintenance Access"; + req_access_txt = "12" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bzt" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bzu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/glass{ + name = "Aft Starboard Transit" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bzv" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bzw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/airlock/glass{ + name = "Starboard Hallway" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bzx" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/glass{ + name = "Starboard Hallway" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bzy" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/door/airlock/glass{ + name = "Starboard Hallway" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bzz" = ( +/obj/machinery/light_switch{ + dir = 8; + pixel_x = -22 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bzA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bzB" = ( +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bzC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bzD" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bzE" = ( +/obj/machinery/vending/cigarette, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bzF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/newscaster{ + hitstaken = 1; + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bzG" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bzH" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bzI" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bzJ" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bzK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bzL" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bzM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bzN" = ( +/obj/machinery/door/airlock/glass{ + desc = "The base's recreational center. Focused on fitness, as any astronaut would expect."; + name = "Fitness Room" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bzO" = ( +/obj/structure/closet/boxinggloves, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bzP" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "darkredcorners"; + dir = 8 + }, +/area/crew_quarters/fitness) +"bzQ" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "darkgreencorners" + }, +/area/crew_quarters/fitness) +"bzR" = ( +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bzS" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/cups, +/turf/open/floor/plasteel{ + icon_state = "green"; + dir = 4 + }, +/area/crew_quarters/fitness) +"bzT" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bzU" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bzV" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/asmaint2) +"bzW" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bzX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bzY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bzZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bAa" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bAb" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bAc" = ( +/turf/closed/wall, +/area/assembly/chargebay) +"bAd" = ( +/obj/machinery/mech_bay_recharge_port, +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bAe" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 6 + }, +/turf/open/floor/mech_bay_recharge_floor, +/area/assembly/chargebay) +"bAf" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/computer/mech_bay_power_console, +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bAg" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bAh" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bAi" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/door/poddoor/shutters{ + id = "Mechbay" + }, +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bAj" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAk" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/junction{ + dir = 8; + icon_state = "pipe-j2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAl" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAm" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/directions/medical{ + dir = 4; + icon_state = "direction_med"; + pixel_x = 0; + pixel_y = 40 + }, +/obj/structure/sign/directions/science{ + dir = 4; + icon_state = "direction_sci"; + pixel_x = 0; + pixel_y = 32 + }, +/obj/structure/sign/directions/security{ + dir = 1; + icon_state = "direction_sec"; + pixel_x = 0; + pixel_y = 24 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAo" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "greencorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Aft Central Hallway Port" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "greencorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAs" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAu" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/newscaster{ + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAx" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Aft Central Hallway Central" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/sortjunction{ + dir = 8; + icon_state = "pipe-j2s"; + sortType = 11 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light_switch{ + dir = 1; + pixel_y = 22 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Aft Central Hallway Starboard" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "greencorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAH" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "greencorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/junction{ + dir = 8; + icon_state = "pipe-j2" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAK" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAM" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/sortjunction{ + dir = 8; + icon_state = "pipe-j2s"; + sortType = 10 + }, +/obj/machinery/camera{ + c_tag = "Medbay Foyer Fore" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/obj/structure/disposalpipe/sortjunction{ + dir = 8; + icon_state = "pipe-j2s"; + sortType = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAQ" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAR" = ( +/obj/machinery/door/airlock{ + id_tag = "Dorm1s"; + name = "Cabin 1" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bAS" = ( +/obj/machinery/door/airlock{ + id_tag = "Dorm2s"; + name = "Cabin 2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bAT" = ( +/obj/machinery/door/airlock{ + id_tag = "Dorm3s"; + name = "Cabin 3" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bAU" = ( +/obj/machinery/door/airlock{ + id_tag = "Dorm4s"; + name = "Cabin 4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bAV" = ( +/obj/structure/table, +/obj/item/clothing/under/soviet, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bAW" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bAX" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bAY" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bAZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bBa" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bBb" = ( +/obj/structure/closet/lasertag/red, +/obj/machinery/camera{ + c_tag = "Fitness Room"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bBc" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + icon_state = "darkred"; + dir = 10 + }, +/area/crew_quarters/fitness) +"bBd" = ( +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + icon_state = "darkredcorners"; + dir = 8 + }, +/area/crew_quarters/fitness) +"bBe" = ( +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + icon_state = "darkgreencorners" + }, +/area/crew_quarters/fitness) +"bBf" = ( +/obj/machinery/door/window/eastright{ + base_state = "left"; + icon_state = "left"; + name = "Fitness Ring" + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + icon_state = "darkgreen"; + dir = 6 + }, +/area/crew_quarters/fitness) +"bBg" = ( +/turf/open/floor/plasteel{ + icon_state = "green"; + dir = 4 + }, +/area/crew_quarters/fitness) +"bBh" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bBi" = ( +/obj/machinery/computer/atmos_alert, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bBj" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bBk" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bBl" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bBm" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bBn" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/closed/wall, +/area/assembly/chargebay) +"bBo" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/bluegrid, +/area/assembly/chargebay) +"bBp" = ( +/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/bluegrid, +/area/assembly/chargebay) +"bBq" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/bluegrid, +/area/assembly/chargebay) +"bBr" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bBs" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/poddoor/shutters{ + id = "Mechbay" + }, +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bBt" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBu" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Sec"; + location = "Mech" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBv" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBw" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBx" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBy" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBz" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Mech"; + location = "AfCH1" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBB" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBC" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Escape"; + location = "AfCH2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBD" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBE" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBF" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBG" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBH" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBI" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBJ" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBK" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBL" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBM" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=AfCH2"; + location = "Med" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBN" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBO" = ( +/obj/machinery/button/door{ + id = "Dorm1s"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + req_access_txt = "0"; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/carpet, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bBP" = ( +/obj/structure/closet/secure_closet/personal, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/carpet, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bBQ" = ( +/obj/machinery/button/door{ + id = "Dorm2s"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + req_access_txt = "0"; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/carpet, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bBR" = ( +/obj/machinery/button/door{ + id = "Dorm3s"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + req_access_txt = "0"; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/carpet, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bBS" = ( +/obj/machinery/button/door{ + id = "Dorm4s"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + req_access_txt = "0"; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/carpet, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bBT" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bBU" = ( +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bBV" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bBW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/crew_quarters/fitness) +"bBX" = ( +/obj/structure/closet/athletic_mixed, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bBY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bBZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bCa" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bCb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bCc" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bCd" = ( +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bCe" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/engineering{ + name = "Brig Power Control"; + req_access_txt = "11" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bCf" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/closed/wall, +/area/maintenance/asmaint2) +"bCg" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/mech_bay_recharge_port, +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bCh" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/mech_bay_recharge_floor, +/area/assembly/chargebay) +"bCi" = ( +/obj/machinery/computer/mech_bay_power_console, +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bCj" = ( +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bCk" = ( +/obj/machinery/button/door{ + id = "Mechbay"; + name = "Mech Bay Door Control"; + pixel_x = 24; + req_access_txt = "29" + }, +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bCl" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 5 + }, +/obj/machinery/button/door{ + id = "Mechbay"; + name = "Mech Bay Door Control"; + pixel_x = -24; + req_access_txt = "29" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCm" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCn" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCo" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCp" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCq" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCr" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bluecorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCs" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 0; + icon_state = "blue" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCt" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "bluecorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCu" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCv" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCw" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/sign/directions/security{ + dir = 8; + pixel_y = -24 + }, +/obj/structure/sign/directions/science{ + pixel_y = -32 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCx" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCy" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCz" = ( +/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCA" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/sign/directions/medical{ + dir = 4; + icon_state = "direction_med"; + pixel_x = 0; + pixel_y = -24 + }, +/obj/structure/sign/directions/engineering{ + dir = 4; + pixel_y = -32 + }, +/obj/structure/sign/directions/evac{ + pixel_y = -40 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCB" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCC" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCD" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCE" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCF" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCG" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCH" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCI" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/sign/directions/science{ + dir = 8; + pixel_y = -32 + }, +/obj/structure/sign/directions/security{ + dir = 8; + pixel_y = -24 + }, +/obj/structure/sign/directions/engineering{ + dir = 4; + pixel_y = -40 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCJ" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whitecorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCK" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "whitehall" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCL" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "whitehall" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCM" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whitehall" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCN" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "whitehall" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCO" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitecorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCP" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 9 + }, +/obj/structure/table, +/obj/item/weapon/paper_bin, +/obj/item/weapon/pen, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCQ" = ( +/obj/machinery/light/small, +/turf/open/floor/carpet, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bCR" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/yellow, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/carpet, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bCS" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/red, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/carpet, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bCT" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/green, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/carpet, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bCU" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/blue, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/carpet, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bCV" = ( +/obj/machinery/washing_machine, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bCW" = ( +/obj/machinery/washing_machine, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bCX" = ( +/obj/structure/table, +/obj/item/clothing/under/suit_jacket/really_black{ + pixel_x = -2 + }, +/obj/item/clothing/under/suit_jacket/female, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bCY" = ( +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 10 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bCZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bDa" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 6 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bDb" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bDc" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bDd" = ( +/obj/structure/cable, +/obj/machinery/power/terminal, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bDe" = ( +/obj/item/latexballon, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bDf" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/bluegrid, +/area/assembly/chargebay) +"bDg" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/bluegrid, +/area/assembly/chargebay) +"bDh" = ( +/turf/open/floor/bluegrid, +/area/assembly/chargebay) +"bDi" = ( +/obj/machinery/atmospherics/components/unary/vent_pump, +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bDj" = ( +/turf/closed/wall, +/area/assembly/robotics) +"bDk" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "robotics"; + name = "robotics lab shutters" + }, +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/assembly/robotics) +"bDl" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "robotics"; + name = "robotics lab shutters" + }, +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/assembly/robotics) +"bDm" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "robotics"; + name = "robotics lab shutters" + }, +/obj/structure/table/reinforced, +/obj/machinery/door/window/eastleft{ + dir = 2; + layer = 2.7; + name = "Robotics Desk"; + req_access_txt = "29"; + req_one_access = null + }, +/obj/item/weapon/paper_bin, +/obj/item/weapon/pen, +/turf/open/floor/plating, +/area/assembly/robotics) +"bDn" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "robotics"; + name = "robotics lab shutters" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/assembly/robotics) +"bDo" = ( +/obj/machinery/door/airlock/research{ + name = "Robotics Lab"; + req_access_txt = "29"; + req_one_access_txt = "0" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/assembly/robotics) +"bDp" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=1"; + freq = 1400; + location = "Robotics" + }, +/obj/machinery/door/firedoor, +/obj/structure/plasticflaps{ + opacity = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "loadingarea" + }, +/area/assembly/robotics) +"bDq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/assembly/robotics) +"bDr" = ( +/turf/closed/wall/r_wall, +/area/toxins/misc_lab) +"bDs" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/toxins/misc_lab) +"bDt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/airlock/glass{ + name = "Aft Hallway" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bDu" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/glass{ + name = "Aft Hallway" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bDv" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/door/airlock/glass{ + name = "Aft Hallway" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bDw" = ( +/turf/closed/wall, +/area/janitor) +"bDx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/janitor) +"bDy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/janitor) +"bDz" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bDA" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_one_access_txt = "5; 6; 9; 12; 22; 26; 28; 33; 37; 40" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bDB" = ( +/turf/closed/wall/r_wall, +/area/medical/chemistry) +"bDC" = ( +/turf/closed/wall, +/area/medical/medbay) +"bDD" = ( +/obj/structure/sign/bluecross, +/turf/closed/wall, +/area/medical/medbay) +"bDE" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/medbay) +"bDF" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bDG" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bDH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bDI" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bDJ" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/medbay) +"bDK" = ( +/turf/closed/wall, +/area/medical/surgery) +"bDL" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/closed/wall, +/area/medical/surgery) +"bDM" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_one_access_txt = "5; 6; 9; 12; 22; 26; 28; 33; 37; 40" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bDN" = ( +/turf/closed/wall, +/area/library) +"bDO" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/library) +"bDP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock/glass{ + desc = "The station's book depository, a place to hang out, aquire porn, and play tabletop games."; + name = "Library" + }, +/turf/open/floor/wood, +/area/library) +"bDQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/library) +"bDR" = ( +/turf/open/floor/wood, +/area/library) +"bDS" = ( +/obj/machinery/door/window/northright{ + dir = 8; + name = "Library Desk Door"; + req_access_txt = "37" + }, +/obj/machinery/status_display{ + layer = 4; + pixel_y = 32 + }, +/turf/open/floor/wood, +/area/library) +"bDT" = ( +/obj/machinery/newscaster{ + pixel_y = 32 + }, +/turf/open/floor/wood, +/area/library) +"bDU" = ( +/obj/structure/table/wood, +/obj/machinery/computer/libraryconsole/bookmanagement, +/turf/open/floor/wood, +/area/library) +"bDV" = ( +/obj/structure/bookcase{ + name = "Forbidden Knowledge" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/library) +"bDW" = ( +/obj/structure/table/wood, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/pen/invisible, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/library) +"bDX" = ( +/obj/structure/table/wood, +/obj/item/device/camera, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/library) +"bDY" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/firstaid/regular, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bDZ" = ( +/obj/structure/reagent_dispensers/water_cooler, +/turf/open/floor/plasteel{ + icon_state = "green"; + dir = 4 + }, +/area/crew_quarters/fitness) +"bEa" = ( +/obj/machinery/computer/monitor, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bEb" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bEc" = ( +/obj/machinery/power/smes{ + charge = 1e+006 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bEd" = ( +/obj/item/clothing/suit/ianshirt, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bEe" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/obj/machinery/camera{ + c_tag = "Mech Bay"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bEf" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bEg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bEh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bEi" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/assembly/robotics) +"bEj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bEk" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bEl" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bEm" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/requests_console{ + department = "Robotics"; + departmentType = 2; + name = "Robotics Requests Console"; + pixel_y = 30 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bEn" = ( +/obj/machinery/door/window/southleft{ + dir = 8; + name = "Robotics Deliveries"; + req_access_txt = "29" + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/assembly/robotics) +"bEo" = ( +/obj/machinery/camera{ + c_tag = "Robotics Surgery"; + network = list("SS13","RD") + }, +/obj/structure/bodycontainer/morgue, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bEp" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bEq" = ( +/obj/structure/table/glass, +/obj/item/weapon/circular_saw, +/obj/item/weapon/scalpel{ + pixel_y = 10 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bEr" = ( +/obj/machinery/computer/operating{ + name = "Robotics Operating Computer" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/robotics) +"bEs" = ( +/obj/machinery/light_switch{ + dir = 8; + pixel_x = -22 + }, +/obj/structure/closet/crate, +/obj/item/target/alien, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bEt" = ( +/obj/structure/closet/crate, +/obj/item/target/syndicate, +/obj/item/target/clown, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bEu" = ( +/obj/structure/closet/crate, +/obj/item/target, +/obj/item/target/clown, +/turf/open/floor/plasteel{ + icon_state = "warningcorner" + }, +/area/toxins/misc_lab) +"bEv" = ( +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = 0 + }, +/obj/structure/table/glass, +/obj/machinery/recharger{ + pixel_y = 4 + }, +/obj/item/weapon/paper/range, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/toxins/misc_lab) +"bEw" = ( +/obj/machinery/camera{ + c_tag = "Shooting Range"; + dir = 2 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 8 + }, +/area/toxins/misc_lab) +"bEx" = ( +/turf/open/floor/plating, +/area/toxins/misc_lab) +"bEy" = ( +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "warning" + }, +/area/toxins/misc_lab) +"bEz" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/toxins/misc_lab) +"bEA" = ( +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "warning" + }, +/area/toxins/misc_lab) +"bEB" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bEC" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bED" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "greencorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bEE" = ( +/obj/structure/table, +/obj/item/weapon/reagent_containers/spray/cleaner, +/obj/item/weapon/reagent_containers/spray/cleaner, +/obj/item/weapon/reagent_containers/spray/cleaner, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bEF" = ( +/obj/structure/table, +/obj/item/weapon/storage/box/mousetraps, +/obj/item/weapon/storage/box/mousetraps, +/obj/machinery/requests_console{ + department = "Janitorial"; + departmentType = 1; + name = "Janitor's Requests Console"; + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bEG" = ( +/obj/structure/table, +/obj/item/weapon/restraints/legcuffs/beartrap, +/obj/item/weapon/restraints/legcuffs/beartrap, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bEH" = ( +/obj/structure/table, +/obj/item/weapon/reagent_containers/glass/bucket, +/obj/item/weapon/reagent_containers/glass/bucket, +/obj/item/weapon/reagent_containers/glass/bucket, +/obj/machinery/camera{ + c_tag = "Janitor's Closet" + }, +/obj/machinery/newscaster{ + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bEI" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bEJ" = ( +/obj/structure/janitorialcart, +/obj/item/weapon/mop, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bEK" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bEL" = ( +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bEM" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/monkeycubes, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/chemistry) +"bEN" = ( +/obj/structure/sink{ + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/chemistry) +"bEO" = ( +/obj/machinery/button/door{ + id = "chemTesting"; + name = "Containment Blast Doors"; + pixel_y = 25; + req_access_txt = "5; 33" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warnwhite" + }, +/area/medical/chemistry) +"bEP" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/preopen{ + id = "chemTesting"; + name = "Containment Door" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/engine, +/area/medical/chemistry) +"bEQ" = ( +/turf/open/floor/engine, +/area/medical/chemistry) +"bER" = ( +/mob/living/carbon/monkey, +/turf/open/floor/engine, +/area/medical/chemistry) +"bES" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bET" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/chair, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bEU" = ( +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-j2"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bEV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bEW" = ( +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bEX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bEY" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bEZ" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/vending/cola, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bFa" = ( +/obj/machinery/vending/snack, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whitehall" + }, +/area/medical/medbay) +"bFb" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/light_switch{ + dir = 1; + pixel_y = 22 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whitehall" + }, +/area/medical/surgery) +"bFc" = ( +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/obj/effect/landmark/start{ + name = "Medical Doctor" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bFd" = ( +/obj/structure/table/glass, +/obj/item/weapon/folder/white, +/obj/item/weapon/pen, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/obj/machinery/camera{ + c_tag = "Surgery Examination Room" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bFe" = ( +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/surgery) +"bFf" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/surgery) +"bFg" = ( +/obj/machinery/camera{ + c_tag = "Surgery Observation Room" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/surgery) +"bFh" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/medical/surgery) +"bFi" = ( +/obj/structure/table/glass, +/obj/item/clothing/gloves/color/latex, +/obj/item/clothing/mask/surgical, +/obj/item/clothing/suit/apron/surgical, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bFj" = ( +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bFk" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bFl" = ( +/obj/structure/sink{ + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bFm" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bFn" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/closed/wall, +/area/medical/surgery) +"bFo" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Aft Dormitory APC"; + pixel_y = 25 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bFp" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bFq" = ( +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/library) +"bFr" = ( +/obj/structure/table/wood, +/obj/machinery/computer/libraryconsole, +/turf/open/floor/wood, +/area/library) +"bFs" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/library) +"bFt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/wood, +/area/library) +"bFu" = ( +/obj/machinery/light_switch{ + pixel_y = 28 + }, +/turf/open/floor/wood, +/area/library) +"bFv" = ( +/obj/structure/table/wood, +/obj/item/device/flashlight/lamp/green, +/turf/open/floor/wood, +/area/library) +"bFw" = ( +/obj/machinery/libraryscanner, +/turf/open/floor/wood, +/area/library) +"bFx" = ( +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/library) +"bFy" = ( +/obj/structure/chair/office/dark{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/library) +"bFz" = ( +/obj/structure/cult/tome, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/library) +"bFA" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bFB" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/recharge_station, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/assembly/chargebay) +"bFC" = ( +/obj/machinery/recharge_station, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/assembly/chargebay) +"bFD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/table, +/obj/item/weapon/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = -1 + }, +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bFE" = ( +/obj/machinery/computer/rdconsole/robotics, +/turf/open/floor/plasteel{ + icon_state = "warnwhite" + }, +/area/assembly/robotics) +"bFF" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/obj/structure/chair/stool, +/obj/effect/landmark/start{ + name = "Roboticist" + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite" + }, +/area/assembly/robotics) +"bFG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite" + }, +/area/assembly/robotics) +"bFH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite" + }, +/area/assembly/robotics) +"bFI" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite" + }, +/area/assembly/robotics) +"bFJ" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/bodybags, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bFK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/robotics) +"bFL" = ( +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/robotics) +"bFM" = ( +/obj/structure/table/optable{ + name = "Robotics Operating Table" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bFN" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bFO" = ( +/obj/machinery/atmospherics/components/unary/vent_pump, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bFP" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warning" + }, +/area/toxins/misc_lab) +"bFQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/toxins/misc_lab) +"bFR" = ( +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 8 + }, +/area/toxins/misc_lab) +"bFS" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warning" + }, +/area/toxins/misc_lab) +"bFT" = ( +/obj/machinery/magnetic_module{ + dir = 2 + }, +/obj/structure/target_stake, +/obj/effect/landmark{ + name = "blobstart" + }, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/toxins/misc_lab) +"bFU" = ( +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warning" + }, +/area/toxins/misc_lab) +"bFV" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bFW" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bFX" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "green"; + dir = 4 + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bFY" = ( +/obj/structure/table, +/obj/item/weapon/grenade/chem_grenade/cleaner, +/obj/item/weapon/grenade/chem_grenade/cleaner, +/obj/item/weapon/grenade/chem_grenade/cleaner, +/obj/item/weapon/grenade/chem_grenade/cleaner, +/obj/item/weapon/grenade/chem_grenade/cleaner, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bFZ" = ( +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bGa" = ( +/obj/structure/chair/stool, +/obj/effect/landmark/start{ + name = "Janitor" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bGb" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bGc" = ( +/obj/structure/janitorialcart, +/obj/item/weapon/mop, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bGd" = ( +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bGe" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Medbay Foyer APC"; + pixel_x = 25 + }, +/obj/structure/cable/cyan{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/medical/medbay) +"bGf" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/syringes, +/obj/machinery/camera{ + c_tag = "Chemistry Testing Lab"; + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/chemistry) +"bGg" = ( +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/chemistry) +"bGh" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warnwhite" + }, +/area/medical/chemistry) +"bGi" = ( +/obj/machinery/door/window/northleft{ + dir = 4; + name = "Containment Pen"; + req_access_txt = "5; 33" + }, +/obj/machinery/door/poddoor/preopen{ + id = "chemTesting"; + name = "Containment Door" + }, +/turf/open/floor/engine, +/area/medical/chemistry) +"bGj" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/engine, +/area/medical/chemistry) +"bGk" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bGl" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bGm" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bGn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bGo" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bGp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bGq" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bGr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bGs" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitehall" + }, +/area/medical/medbay) +"bGt" = ( +/obj/machinery/door/airlock/medical{ + name = "Examination room"; + req_access_txt = "0" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/medical/surgery) +"bGu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitehall" + }, +/area/medical/surgery) +"bGv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bGw" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bGx" = ( +/obj/machinery/door/airlock/medical{ + name = "Surgery Observation Room"; + req_access_txt = "5" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/surgery) +"bGy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/surgery) +"bGz" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/surgery) +"bGA" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/surgery) +"bGB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/medical/surgery) +"bGC" = ( +/obj/structure/table/glass, +/obj/item/weapon/hemostat, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bGD" = ( +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bGE" = ( +/obj/machinery/computer/operating, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bGF" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/obj/machinery/camera{ + c_tag = "Surgery Operating Theatre"; + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bGG" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/closed/wall, +/area/medical/surgery) +"bGH" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bGI" = ( +/obj/effect/landmark/start{ + name = "Assistant" + }, +/obj/structure/chair/wood/normal{ + dir = 1 + }, +/turf/open/floor/wood, +/area/library) +"bGJ" = ( +/turf/open/floor/carpet, +/area/library) +"bGK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/carpet, +/area/library) +"bGL" = ( +/obj/structure/table/wood, +/obj/item/weapon/pen/blue{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/weapon/pen/red, +/turf/open/floor/wood, +/area/library) +"bGM" = ( +/obj/effect/landmark/start{ + name = "Librarian" + }, +/obj/structure/chair/office/dark{ + dir = 8 + }, +/turf/open/floor/wood, +/area/library) +"bGN" = ( +/obj/machinery/door/morgue{ + name = "Private Study"; + req_access_txt = "37" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/library) +"bGO" = ( +/obj/structure/closet, +/obj/item/clothing/under/rank/librarian, +/obj/item/clothing/under/blackskirt, +/obj/item/clothing/under/color/black, +/obj/item/clothing/under/color/black, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/library) +"bGP" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance{ + name = "Mech Bay Maintenance"; + req_access_txt = "29" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bGQ" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/closed/wall, +/area/assembly/chargebay) +"bGR" = ( +/obj/machinery/door/airlock/research{ + id_tag = ""; + name = "Mech Bay"; + req_access_txt = "29"; + req_one_access_txt = "0" + }, +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bGS" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "robotics"; + name = "robotics lab shutters" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/assembly/chargebay) +"bGT" = ( +/obj/machinery/mecha_part_fabricator, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/assembly/robotics) +"bGU" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/r_n_d/circuit_imprinter, +/obj/item/weapon/reagent_containers/glass/beaker/sulphuric, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/assembly/robotics) +"bGV" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/assembly/robotics) +"bGW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/assembly/robotics) +"bGX" = ( +/obj/structure/table/glass, +/obj/item/device/mmi, +/obj/item/device/mmi, +/obj/item/device/mmi, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bGY" = ( +/obj/structure/table/glass, +/obj/item/weapon/retractor, +/obj/item/weapon/hemostat, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bGZ" = ( +/obj/item/weapon/gun/energy/laser/practice, +/obj/item/clothing/ears/earmuffs, +/obj/structure/table/glass, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bHa" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bHb" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warningcorner" + }, +/area/toxins/misc_lab) +"bHc" = ( +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = 0 + }, +/obj/machinery/magnetic_controller{ + autolink = 1 + }, +/obj/structure/table/glass, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/toxins/misc_lab) +"bHd" = ( +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "warning" + }, +/area/toxins/misc_lab) +"bHe" = ( +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/toxins/misc_lab) +"bHf" = ( +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "warning" + }, +/area/toxins/misc_lab) +"bHg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bHh" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/sortjunction{ + dir = 2; + icon_state = "pipe-j2s"; + sortType = 22 + }, +/obj/machinery/camera{ + c_tag = "Aft Hallway Fore"; + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "green"; + dir = 4 + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bHi" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/janitor) +"bHj" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bHk" = ( +/obj/vehicle/janicart, +/obj/item/key/janitor, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bHl" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bHm" = ( +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bHn" = ( +/obj/structure/table/glass, +/obj/item/weapon/paper, +/obj/item/weapon/pen, +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/chemistry) +"bHo" = ( +/obj/structure/chair/office/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/chemistry) +"bHp" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/door/poddoor/preopen{ + id = "chemTesting"; + name = "Containment Door" + }, +/turf/open/floor/engine, +/area/medical/chemistry) +"bHq" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bHr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "whitebluecorner" + }, +/area/medical/medbay) +"bHs" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bHt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bHu" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bHv" = ( +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bHw" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitebluecorner" + }, +/area/medical/medbay) +"bHx" = ( +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 29 + }, +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "whitehall" + }, +/area/medical/medbay) +"bHy" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/surgery) +"bHz" = ( +/obj/machinery/door/airlock/glass_medical{ + desc = "A storage area for important medical supplies. Leads to the front desk."; + name = "Patient Room"; + req_access_txt = "5" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bHA" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/surgery) +"bHB" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/surgery) +"bHC" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/surgery) +"bHD" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/surgery) +"bHE" = ( +/obj/structure/table/glass, +/obj/item/weapon/surgicaldrill, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bHF" = ( +/obj/structure/table/optable, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bHG" = ( +/obj/structure/closet/secure_closet/medical2, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bHH" = ( +/obj/structure/grille, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bHI" = ( +/obj/structure/table/wood, +/obj/machinery/light{ + dir = 8 + }, +/obj/item/weapon/paper, +/turf/open/floor/wood, +/area/library) +"bHJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/bookcase{ + name = "bookcase (Fiction)" + }, +/turf/open/floor/wood, +/area/library) +"bHK" = ( +/obj/structure/bookcase{ + name = "bookcase (Fiction)" + }, +/turf/open/floor/wood, +/area/library) +"bHL" = ( +/obj/structure/table/wood, +/obj/item/weapon/paper_bin, +/turf/open/floor/wood, +/area/library) +"bHM" = ( +/obj/structure/table/wood, +/obj/item/device/camera_film, +/turf/open/floor/wood, +/area/library) +"bHN" = ( +/obj/structure/table/wood, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/wood, +/area/library) +"bHO" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Mech Bay APC"; + pixel_y = 24 + }, +/obj/structure/cable/pink{ + d2 = 2; + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/assembly/chargebay) +"bHP" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bHQ" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bHR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bHS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light_switch{ + dir = 1; + pixel_y = 22 + }, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bHT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/assembly/robotics) +"bHU" = ( +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bHV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/assembly/robotics) +"bHW" = ( +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bHX" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bHY" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bHZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bIa" = ( +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "Robotics Lab Port"; + network = list("SS13","RD") + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bIb" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteyellowcorner" + }, +/area/assembly/robotics) +"bIc" = ( +/obj/machinery/status_display{ + pixel_x = 32 + }, +/obj/structure/table/glass, +/obj/item/clothing/gloves/color/latex, +/obj/item/weapon/surgical_drapes, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bId" = ( +/turf/closed/wall, +/area/toxins/misc_lab) +"bIe" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock/glass_research{ + name = "Shooting Range"; + req_access_txt = "47" + }, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bIf" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/toxins/misc_lab) +"bIg" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/toxins/misc_lab) +"bIh" = ( +/obj/machinery/door/airlock{ + name = "Janitor's Closet"; + req_access_txt = "26" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bIi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bIj" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Janitor's Closet Maintenance"; + req_one_access_txt = "26" + }, +/turf/open/floor/plating, +/area/janitor) +"bIk" = ( +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bIl" = ( +/obj/machinery/door/airlock/glass_medical{ + desc = "SS13's Chemistry lab, to be used only by qualified and cautious experts."; + name = "Chemistry Testing Lab"; + req_access_txt = "5; 33" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/chemistry) +"bIm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/camera{ + c_tag = "Medbay Foyer Port"; + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bIn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bIo" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bIp" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bIq" = ( +/obj/structure/table/reinforced, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bIr" = ( +/obj/structure/table/reinforced, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bIs" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bIt" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bIu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bIv" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bIw" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/medical/surgery) +"bIx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/vending/wallmed{ + pixel_x = -30 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bIy" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/medical, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bIz" = ( +/obj/structure/table/glass, +/obj/item/weapon/retractor, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bIA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bIB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bIC" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bID" = ( +/obj/structure/table/glass, +/obj/item/weapon/circular_saw, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bIE" = ( +/obj/structure/rack, +/obj/item/clothing/tie/stethoscope, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bIF" = ( +/obj/structure/chair/wood/normal{ + dir = 1 + }, +/turf/open/floor/wood, +/area/library) +"bIG" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/carpet, +/area/library) +"bIH" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/library) +"bII" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/carpet, +/area/library) +"bIJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/library) +"bIK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Librarian" + }, +/turf/open/floor/carpet, +/area/library) +"bIL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/library) +"bIM" = ( +/obj/structure/table/wood, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/obj/item/weapon/paper_bin, +/turf/open/floor/wood, +/area/library) +"bIN" = ( +/obj/structure/table/wood, +/obj/item/weapon/storage/pill_bottle/dice, +/obj/machinery/camera{ + c_tag = "Library Starboard" + }, +/turf/open/floor/wood, +/area/library) +"bIO" = ( +/obj/structure/filingcabinet, +/turf/open/floor/wood, +/area/library) +"bIP" = ( +/obj/structure/grille, +/turf/open/space, +/area/space/nearstation) +"bIQ" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bIR" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bIS" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bIT" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bIU" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bIV" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bIW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bIX" = ( +/obj/machinery/door/window/southleft{ + dir = 8; + name = "Robotics Surgery"; + req_access_txt = "29" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bIY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/robotics) +"bIZ" = ( +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/robotics) +"bJa" = ( +/obj/effect/landmark/start{ + name = "Roboticist" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/robotics) +"bJb" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bJc" = ( +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bJd" = ( +/obj/structure/chair/office/light, +/obj/effect/landmark/start{ + name = "Scientist" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bJe" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bJf" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bJg" = ( +/obj/machinery/atmospherics/components/unary/vent_pump, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bJh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bJi" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Testing Lab" + }, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bJj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bJk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/toxins/misc_lab) +"bJl" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bJm" = ( +/obj/machinery/light_switch{ + dir = 8; + pixel_x = -22 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bJn" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bJo" = ( +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bJp" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bJq" = ( +/obj/structure/closet/crate, +/obj/item/weapon/coin/silver, +/obj/item/weapon/grenade/chem_grenade, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bJr" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/syringes, +/obj/item/weapon/storage/box/beakers{ + pixel_x = 2; + pixel_y = 2 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"bJs" = ( +/obj/item/weapon/grenade/chem_grenade, +/obj/item/weapon/grenade/chem_grenade, +/obj/item/weapon/grenade/chem_grenade, +/obj/item/weapon/grenade/chem_grenade, +/obj/structure/table/glass, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/item/weapon/grenade/chem_grenade/large, +/obj/item/weapon/grenade/chem_grenade/large, +/obj/machinery/camera{ + c_tag = "Chemistry Lab" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"bJt" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"bJu" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"bJv" = ( +/obj/machinery/chem_dispenser, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"bJw" = ( +/obj/machinery/chem_master, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"bJx" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/medical/medbay) +"bJy" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteyellow" + }, +/area/medical/medbay) +"bJz" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bJA" = ( +/obj/machinery/computer/crew, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bJB" = ( +/obj/structure/chair/office/light{ + dir = 1 + }, +/obj/effect/landmark/start{ + name = "Medical Doctor" + }, +/obj/machinery/button/door{ + desc = "A remote control switch for the medbay foyer."; + id = "FoyerLeft"; + name = "Medbay Doors Control"; + normaldoorcontrol = 1; + pixel_y = 30; + req_access_txt = "5" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bJC" = ( +/obj/structure/chair/office/light{ + dir = 1 + }, +/obj/effect/landmark/start{ + name = "Medical Doctor" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/button/door{ + desc = "A remote control switch for the medbay foyer."; + id = "FoyerRight"; + name = "Medbay Doors Control"; + normaldoorcontrol = 1; + pixel_y = 30; + req_access_txt = "5" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bJD" = ( +/obj/machinery/computer/med_data, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bJE" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bJF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bJG" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/structure/table/glass, +/turf/open/floor/plasteel{ + icon_state = "whitebluecorner" + }, +/area/medical/medbay) +"bJH" = ( +/obj/structure/table/glass, +/obj/item/weapon/reagent_containers/syringe, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bJI" = ( +/obj/structure/closet/secure_closet/personal/patient, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bJJ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/surgery) +"bJK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/surgery) +"bJL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/medical/surgery) +"bJM" = ( +/obj/structure/table/glass, +/obj/item/weapon/cautery{ + pixel_x = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bJN" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bJO" = ( +/obj/structure/closet/crate/freezer, +/obj/item/weapon/reagent_containers/blood/empty, +/obj/item/weapon/reagent_containers/blood/empty{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/weapon/reagent_containers/blood/AMinus, +/obj/item/weapon/reagent_containers/blood/BMinus{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/weapon/reagent_containers/blood/BPlus{ + pixel_x = 1; + pixel_y = 2 + }, +/obj/item/weapon/reagent_containers/blood/OMinus, +/obj/item/weapon/reagent_containers/blood/OPlus{ + pixel_x = -2; + pixel_y = -1 + }, +/obj/item/weapon/reagent_containers/blood/random, +/obj/item/weapon/reagent_containers/blood/random, +/obj/item/weapon/reagent_containers/blood/random, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bJP" = ( +/obj/structure/table/glass, +/obj/item/weapon/surgical_drapes, +/obj/item/device/radio/intercom{ + frequency = 1485; + name = "Station Intercom (Medbay)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bJQ" = ( +/obj/structure/table/glass, +/obj/item/weapon/scalpel, +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bJR" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bJS" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/wood, +/area/library) +"bJT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/bookcase{ + name = "bookcase (Non-Fiction)" + }, +/turf/open/floor/wood, +/area/library) +"bJU" = ( +/obj/structure/bookcase{ + name = "bookcase (Non-Fiction)" + }, +/turf/open/floor/wood, +/area/library) +"bJV" = ( +/obj/machinery/hologram/holopad, +/turf/open/floor/wood, +/area/library) +"bJW" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/turf/open/floor/wood, +/area/library) +"bJX" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/library) +"bJY" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/closed/wall, +/area/maintenance/asmaint2) +"bJZ" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bKa" = ( +/obj/structure/cable/pink{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bKb" = ( +/obj/structure/closet/wardrobe/robotics_black, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bKc" = ( +/obj/structure/rack, +/obj/item/device/healthanalyzer, +/obj/item/device/healthanalyzer, +/obj/item/device/healthanalyzer, +/obj/item/device/assembly/flash/handheld, +/obj/item/device/assembly/flash/handheld, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bKd" = ( +/obj/structure/rack, +/obj/item/weapon/storage/toolbox/electrical{ + pixel_x = -5; + pixel_y = 6 + }, +/obj/item/weapon/storage/toolbox/mechanical{ + pixel_x = -3; + pixel_y = 0 + }, +/obj/item/clothing/head/welding{ + pixel_x = -3; + pixel_y = 5 + }, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bKe" = ( +/obj/structure/table/glass, +/obj/item/clothing/glasses/welding, +/obj/item/weapon/crowbar, +/obj/item/device/multitool, +/obj/machinery/camera{ + c_tag = "Robotics"; + dir = 1; + network = list("SS13","RD") + }, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bKf" = ( +/obj/structure/chair/stool, +/obj/effect/landmark/start{ + name = "Roboticist" + }, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bKg" = ( +/obj/structure/table/glass, +/obj/item/device/assembly/flash/handheld, +/obj/item/stack/cable_coil, +/obj/item/borg/upgrade/rename, +/obj/item/device/assembly/flash/handheld, +/obj/item/device/assembly/flash/handheld, +/obj/item/device/assembly/flash/handheld, +/obj/item/device/assembly/flash/handheld, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bKh" = ( +/obj/structure/table/glass, +/obj/item/stack/sheet/plasteel{ + amount = 10 + }, +/obj/item/stack/sheet/glass{ + amount = 20; + pixel_x = -3; + pixel_y = 6 + }, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bKi" = ( +/obj/structure/table/glass, +/obj/item/weapon/stock_parts/cell/high{ + charge = 100; + maxcharge = 15000; + pixel_x = 5; + pixel_y = -5 + }, +/obj/item/weapon/stock_parts/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/obj/item/device/assembly/prox_sensor{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/device/assembly/prox_sensor{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/device/assembly/prox_sensor{ + pixel_x = -8; + pixel_y = 4 + }, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bKj" = ( +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/obj/structure/table/glass, +/obj/machinery/cell_charger, +/obj/item/weapon/stock_parts/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bKk" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bKl" = ( +/turf/open/floor/plasteel{ + dir = 2; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bKm" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 2; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bKn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 2; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bKo" = ( +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bKp" = ( +/obj/structure/table/glass, +/obj/machinery/airalarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/sheet/glass{ + amount = 50; + pixel_x = 3; + pixel_y = 3 + }, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bKq" = ( +/obj/structure/table/glass, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/item/stack/sheet/mineral/plasma{ + amount = 2 + }, +/obj/item/clothing/glasses/science, +/obj/item/clothing/glasses/science, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bKr" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/table/glass, +/obj/machinery/cell_charger, +/obj/item/weapon/stock_parts/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bKs" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/rack, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bKt" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/structure/table/glass, +/obj/item/stack/cable_coil, +/obj/item/stack/cable_coil, +/obj/machinery/light_switch{ + pixel_y = -25 + }, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bKu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bKv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bKw" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bKx" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/toxins/misc_lab) +"bKy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/sortjunction{ + dir = 1; + icon_state = "pipe-j2s"; + sortType = 14 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bKz" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "greencorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bKA" = ( +/obj/structure/closet/jcloset, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bKB" = ( +/obj/structure/closet/jcloset, +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bKC" = ( +/obj/structure/closet/l3closet/janitor, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bKD" = ( +/obj/structure/closet/l3closet/janitor, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bKE" = ( +/obj/structure/table, +/obj/item/weapon/storage/box/lights/mixed, +/obj/item/weapon/storage/box/lights/mixed, +/obj/item/weapon/storage/box/lights/mixed, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bKF" = ( +/obj/machinery/door/window/northright{ + name = "Janitor's Closet Deliveries"; + req_access_txt = "26" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bKG" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=8"; + freq = 1400; + location = "Janitor" + }, +/obj/structure/plasticflaps{ + opacity = 1 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "loadingarea" + }, +/area/janitor) +"bKH" = ( +/obj/item/weapon/reagent_containers/glass/beaker/large, +/obj/item/weapon/reagent_containers/dropper, +/obj/structure/table/glass, +/obj/machinery/requests_console{ + department = "Chemistry"; + departmentType = 2; + name = "Chemistry Requests Console"; + pixel_x = -32 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"bKI" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/chemistry) +"bKJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/chemistry) +"bKK" = ( +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Chemist" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"bKL" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/eastright{ + dir = 8; + name = "Chemistry Desk"; + req_access_txt = "5; 33" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteyellowfull" + }, +/area/medical/medbay) +"bKM" = ( +/obj/machinery/door/window/eastleft{ + name = "Medbay Front Desk"; + req_access_txt = "5" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bKN" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "Medbay Foyer Starboard"; + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bKO" = ( +/obj/machinery/door/airlock/medical{ + name = "Surgery Observation Room"; + req_access_txt = "5" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/surgery) +"bKP" = ( +/obj/machinery/door/airlock/medical{ + name = "Surgery Operating Theatre"; + req_access_txt = "45" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "whitebluefull" + }, +/area/medical/surgery) +"bKQ" = ( +/obj/structure/closet/crate, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bKR" = ( +/obj/structure/chair/wood/normal, +/turf/open/floor/wood, +/area/library) +"bKS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/carpet, +/area/library) +"bKT" = ( +/obj/item/stack/rods, +/obj/item/weapon/shard{ + icon_state = "medium" + }, +/obj/structure/grille{ + density = 0; + icon_state = "brokengrille" + }, +/turf/open/floor/plating/airless, +/area/mine/abandoned) +"bKU" = ( +/obj/structure/door_assembly/door_assembly_ext{ + name = "Broken External Airlock" + }, +/turf/open/floor/plasteel/airless{ + dir = 5; + icon_state = "asteroidfloor" + }, +/area/mine/abandoned) +"bKV" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating/airless, +/area/mine/abandoned) +"bKW" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bKX" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/closed/wall, +/area/maintenance/asmaint2) +"bKY" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Robotics Maintenance"; + req_access_txt = "29" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bKZ" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/assembly/robotics) +"bLa" = ( +/obj/machinery/door/airlock/research{ + name = "Robotics Lab"; + req_access_txt = "29"; + req_one_access_txt = "0" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteyellowfull" + }, +/area/assembly/robotics) +"bLb" = ( +/obj/machinery/door/airlock/glass_research{ + name = "Testing Lab"; + req_access_txt = "47"; + req_one_access = null + }, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bLc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bLd" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bLe" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bLf" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Chemistry Lab APC"; + pixel_x = 25 + }, +/obj/structure/cable/cyan{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/medical/chemistry) +"bLg" = ( +/obj/structure/table/glass, +/obj/machinery/reagentgrinder, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"bLh" = ( +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/chemistry) +"bLi" = ( +/obj/item/stack/sheet/mineral/plasma{ + layer = 2.9 + }, +/obj/item/stack/sheet/mineral/plasma{ + layer = 2.9 + }, +/obj/structure/table/glass, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/chemistry) +"bLj" = ( +/obj/machinery/chem_heater, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"bLk" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bLl" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bLm" = ( +/obj/machinery/door/airlock/glass_security{ + name = "Security Post"; + req_access_txt = "63" + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bLn" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bLo" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bLp" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitebluecorner" + }, +/area/medical/medbay) +"bLq" = ( +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bLr" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ + target_temperature = 80; + on = 1 + }, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bLs" = ( +/obj/machinery/atmospherics/components/unary/cryo_cell, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bLt" = ( +/obj/structure/table/glass, +/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone, +/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone, +/obj/item/weapon/wrench, +/obj/machinery/light{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + dir = 1; + frequency = 1485; + name = "Station Intercom (Medbay)"; + pixel_y = 25 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bLu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bLv" = ( +/obj/structure/table/glass, +/obj/item/weapon/reagent_containers/spray/cleaner, +/obj/machinery/light_switch{ + dir = 1; + pixel_y = 22 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bLw" = ( +/obj/machinery/vending/medical, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bLx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bLy" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/sink{ + pixel_y = 30 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bLz" = ( +/obj/machinery/camera{ + c_tag = "Medbay Sleeper Room" + }, +/obj/item/device/radio/intercom{ + dir = 1; + frequency = 1485; + name = "Station Intercom (Medbay)"; + pixel_y = 25 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bLA" = ( +/obj/machinery/sleeper{ + dir = 8 + }, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bLB" = ( +/obj/machinery/camera{ + c_tag = "Library Port"; + dir = 4 + }, +/obj/structure/table/wood, +/obj/item/weapon/paper, +/turf/open/floor/wood, +/area/library) +"bLC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/bookcase{ + name = "bookcase (Reference)" + }, +/turf/open/floor/wood, +/area/library) +"bLD" = ( +/obj/structure/bookcase{ + name = "bookcase (Reference)" + }, +/turf/open/floor/wood, +/area/library) +"bLE" = ( +/obj/structure/bookcase{ + name = "bookcase (Religious)" + }, +/turf/open/floor/wood, +/area/library) +"bLF" = ( +/obj/structure/chair/wood/normal{ + dir = 4 + }, +/turf/open/floor/wood, +/area/library) +"bLG" = ( +/obj/structure/chair/wood/normal{ + dir = 8 + }, +/turf/open/floor/wood, +/area/library) +"bLH" = ( +/obj/structure/grille, +/obj/item/weapon/shard, +/turf/open/floor/plating/airless, +/area/mine/abandoned) +"bLI" = ( +/turf/open/floor/plasteel/airless{ + dir = 5; + icon_state = "asteroidfloor" + }, +/area/mine/abandoned) +"bLJ" = ( +/obj/structure/grille{ + density = 0; + icon_state = "brokengrille" + }, +/turf/open/floor/plating/airless, +/area/mine/abandoned) +"bLK" = ( +/obj/structure/cable/pink{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/smes{ + charge = 1e+006 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bLL" = ( +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bLM" = ( +/obj/structure/cable/pink{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "Research Division Maintenance APC"; + pixel_y = 24 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bLN" = ( +/obj/structure/table, +/obj/item/weapon/extinguisher, +/obj/item/weapon/storage/box/lights/mixed, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bLO" = ( +/obj/machinery/portable_atmospherics/canister/air, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bLP" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Robotics Lab APC"; + pixel_y = 24 + }, +/obj/structure/cable/pink{ + d2 = 2; + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/assembly/assembly_line) +"bLQ" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bLR" = ( +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bLS" = ( +/obj/structure/closet/crate, +/obj/item/weapon/grenade/chem_grenade, +/obj/item/device/flashlight, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bLT" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteyellowcorner" + }, +/area/medical/research{ + name = "Research Division" + }) +"bLU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteyellow" + }, +/area/medical/research{ + name = "Research Division" + }) +"bLV" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteyellowcorner" + }, +/area/medical/research{ + name = "Research Division" + }) +"bLW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bLX" = ( +/obj/structure/cable/pink{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "Testing Lab APC"; + pixel_y = 25 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/misc_lab) +"bLY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bLZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Research Division North" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bMa" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bMb" = ( +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bMc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bMd" = ( +/obj/machinery/vending/cigarette, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bMe" = ( +/turf/closed/wall/r_wall, +/area/medical/research{ + name = "Research Division" + }) +"bMf" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bMg" = ( +/turf/closed/wall, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bMh" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bMi" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Custodial Closet APC"; + pixel_y = 25 + }, +/obj/structure/cable/cyan{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/janitor) +"bMj" = ( +/turf/closed/wall, +/area/maintenance/asmaint) +"bMk" = ( +/obj/machinery/computer/atmos_alert, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bMl" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/machinery/camera{ + c_tag = "Medbay Power Control" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bMm" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bMn" = ( +/obj/item/clothing/glasses/science{ + pixel_x = 2; + pixel_y = 4 + }, +/obj/item/clothing/glasses/science, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/obj/structure/table/glass, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteyellowcorner" + }, +/area/medical/chemistry) +"bMo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/chemistry) +"bMp" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"bMq" = ( +/obj/structure/bed/roller, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bMr" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/medbay) +"bMs" = ( +/obj/structure/table/reinforced, +/obj/machinery/button/door{ + desc = "A remote control switch for the medbay foyer."; + id = "FoyerLeft"; + name = "Medbay Doors Control"; + normaldoorcontrol = 1; + req_access_txt = "5" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 9 + }, +/area/medical/medbay) +"bMt" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 1 + }, +/area/medical/medbay) +"bMu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 1 + }, +/area/medical/medbay) +"bMv" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 1 + }, +/area/medical/medbay) +"bMw" = ( +/obj/structure/table/reinforced, +/obj/machinery/button/door{ + desc = "A remote control switch for the medbay foyer."; + id = "FoyerRight"; + name = "Medbay Doors Control"; + normaldoorcontrol = 1; + pixel_y = 6; + req_access_txt = "5" + }, +/obj/machinery/button/door{ + desc = "A remote control switch for the medbay cryogenics."; + id = "FoyerCryo"; + name = "Cryogenics Doors Control"; + normaldoorcontrol = 1; + pixel_y = -6; + req_access_txt = "5" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 5 + }, +/area/medical/medbay) +"bMx" = ( +/obj/structure/bed/roller, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bMy" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bMz" = ( +/obj/machinery/door/airlock/glass_medical{ + desc = "The rapid-treatment center for injured spacemen. Can be exited via the door button."; + id_tag = "FoyerCryo"; + name = "Medbay Cryogenics"; + req_access_txt = "5" + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bMA" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitebluecorner" + }, +/area/medical/medbay) +"bMB" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bMC" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bMD" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitebluecorner" + }, +/area/medical/medbay) +"bME" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/newscaster{ + pixel_y = 32 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bMF" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitebluecorner" + }, +/area/medical/surgery) +"bMG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bMH" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bMI" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bMJ" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bMK" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/obj/structure/chair/wood/normal{ + dir = 1 + }, +/turf/open/floor/wood, +/area/library) +"bML" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/carpet, +/area/library) +"bMM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/carpet, +/area/library) +"bMN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/library) +"bMO" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/wood, +/area/library) +"bMP" = ( +/obj/structure/table/wood, +/obj/item/weapon/lipstick/random, +/turf/open/floor/wood, +/area/library) +"bMQ" = ( +/obj/structure/grille, +/obj/item/weapon/shard{ + icon_state = "small" + }, +/turf/open/floor/plating/airless, +/area/mine/abandoned) +"bMR" = ( +/obj/structure/grille, +/turf/open/floor/plating/airless, +/area/mine/abandoned) +"bMS" = ( +/obj/machinery/door/airlock/external{ + name = "External Airlock"; + req_access_txt = "0" + }, +/turf/open/floor/plasteel/airless{ + dir = 5; + icon_state = "asteroidfloor" + }, +/area/mine/abandoned) +"bMT" = ( +/turf/closed/wall, +/area/mine/abandoned) +"bMU" = ( +/obj/item/organ/internal/appendix, +/obj/effect/decal/cleanable/blood/gibs, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"bMV" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bMW" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/engineering{ + name = "Research Power Control"; + req_access_txt = "11" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bMX" = ( +/obj/structure/closet/crate, +/obj/effect/landmark{ + name = "blobstart" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bMY" = ( +/obj/structure/cable/pink{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bMZ" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bNa" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bNb" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance{ + name = "Research Maintenance"; + req_access_txt = "47" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bNc" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bNd" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bNe" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/pink{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bNf" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bNg" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bNh" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bNi" = ( +/obj/structure/cable/pink{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bNj" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bNk" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bNl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bNm" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/vending/cola, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bNn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/medical/research{ + name = "Research Division" + }) +"bNo" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bNp" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bNq" = ( +/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bNr" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_one_access_txt = "5; 6; 9; 12; 22; 26; 28; 33; 37; 40" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bNs" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bNt" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bNu" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/atmos{ + name = "Medbay Atmospheric Control"; + req_access_txt = "24" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bNv" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bNw" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bNx" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bNy" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Chemistry Lab Maintenance"; + req_access_txt = "5; 33" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bNz" = ( +/obj/structure/bed/roller, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bNA" = ( +/obj/machinery/computer/med_data, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/medical/medbay) +"bNB" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/medical/medbay) +"bNC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/medical/medbay) +"bND" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/medical/medbay) +"bNE" = ( +/obj/machinery/computer/secure_data, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/medical/medbay) +"bNF" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bNG" = ( +/obj/machinery/door/airlock/glass_medical{ + desc = "The rapid-treatment center for injured spacemen. Can be exited via the door button."; + id_tag = "FoyerCryo"; + name = "Medbay Cryogenics"; + req_access_txt = "5" + }, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bNH" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 5 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitebluecorner" + }, +/area/medical/medbay) +"bNI" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bNJ" = ( +/obj/effect/landmark/start{ + name = "Medical Doctor" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bNK" = ( +/turf/open/floor/plasteel{ + icon_state = "whitebluecorner" + }, +/area/medical/medbay) +"bNL" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bNM" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitebluecorner" + }, +/area/medical/surgery) +"bNN" = ( +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bNO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bNP" = ( +/obj/effect/landmark/start{ + name = "Medical Doctor" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bNQ" = ( +/obj/machinery/sleeper{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitebluecorner" + }, +/area/medical/surgery) +"bNR" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/wood, +/area/library) +"bNS" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/carpet, +/area/library) +"bNT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/wood, +/area/library) +"bNU" = ( +/obj/structure/bookcase{ + name = "bookcase (Adult)" + }, +/turf/open/floor/wood, +/area/library) +"bNV" = ( +/obj/structure/table/wood, +/obj/item/weapon/folder, +/obj/item/weapon/pen, +/turf/open/floor/wood, +/area/library) +"bNW" = ( +/obj/structure/table/wood, +/obj/item/weapon/paper, +/turf/open/floor/wood, +/area/library) +"bNX" = ( +/obj/item/ammo_casing/c9mm, +/turf/open/space, +/area/space) +"bNY" = ( +/obj/item/stack/rods, +/obj/item/weapon/shard, +/obj/structure/grille{ + density = 0; + icon_state = "brokengrille" + }, +/turf/open/floor/plating/airless, +/area/mine/abandoned) +"bNZ" = ( +/obj/item/weapon/wrench, +/turf/open/floor/plasteel/airless{ + dir = 5; + icon_state = "asteroidfloor" + }, +/area/mine/abandoned) +"bOa" = ( +/turf/open/floor/plating/airless, +/area/mine/abandoned) +"bOb" = ( +/obj/item/wallframe/apc, +/turf/open/floor/plasteel/airless, +/area/mine/abandoned) +"bOc" = ( +/obj/item/weapon/folder/yellow, +/obj/item/weapon/pen, +/obj/structure/sign/poster{ + icon_state = "poster4"; + pixel_y = 30 + }, +/turf/open/floor/plasteel/airless, +/area/mine/abandoned) +"bOd" = ( +/obj/structure/computerframe{ + anchored = 1 + }, +/obj/effect/decal/cleanable/cobweb2, +/turf/open/floor/plasteel/airless, +/area/mine/abandoned) +"bOe" = ( +/obj/item/weapon/kitchen/knife/ritual, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"bOf" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/pink, +/obj/machinery/computer/monitor, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bOg" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bOh" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/camera{ + c_tag = "Research Power Control"; + dir = 8 + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bOi" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/closed/wall, +/area/maintenance/asmaint2) +"bOj" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/pink{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bOk" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Storage"; + req_access_txt = "12"; + req_one_access_txt = "0" + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bOl" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bOm" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bOn" = ( +/mob/living/simple_animal/mouse, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bOo" = ( +/turf/closed/wall/r_wall, +/area/toxins/server) +"bOp" = ( +/turf/closed/wall/r_wall, +/area/crew_quarters/hor) +"bOq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/structure/cable/pink{ + d2 = 4; + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/crew_quarters/hor) +"bOr" = ( +/obj/machinery/door/airlock/glass_command{ + name = "Research Director's Office"; + req_access_txt = "30" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bOs" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/structure/cable/pink{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/crew_quarters/hor) +"bOt" = ( +/turf/closed/wall/r_wall, +/area/toxins/lab) +"bOu" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/toxins/lab) +"bOv" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "research" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/glass_research{ + name = "Research and Development Lab"; + req_access_txt = "7" + }, +/turf/open/floor/plasteel{ + icon_state = "whitebluefull" + }, +/area/toxins/lab) +"bOw" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "research" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/glass_research{ + name = "Research and Development Lab"; + req_access_txt = "7" + }, +/turf/open/floor/plasteel{ + icon_state = "whitebluefull" + }, +/area/toxins/lab) +"bOx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bOy" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bOz" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bOA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/asmaint) +"bOB" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bOC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bOD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/meter, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bOE" = ( +/obj/structure/closet/wardrobe/chemistry_white, +/obj/machinery/newscaster{ + dir = 8; + pixel_x = -32 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteyellowcorner"; + dir = 8 + }, +/area/medical/chemistry) +"bOF" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/chemistry) +"bOG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/chemistry) +"bOH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/chemistry) +"bOI" = ( +/obj/structure/closet/secure_closet/chemical, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"bOJ" = ( +/obj/structure/sign/chemistry, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/medical/medbay) +"bOK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteyellow" + }, +/area/medical/medbay) +"bOL" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bOM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bON" = ( +/obj/structure/bed/roller, +/obj/item/device/radio/intercom{ + frequency = 1485; + name = "Station Intercom (Medbay)"; + pixel_y = -29 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bOO" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/medical/medbay) +"bOP" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/medical/medbay) +"bOQ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/medical/medbay) +"bOR" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/medical/medbay) +"bOS" = ( +/obj/structure/table/reinforced, +/obj/machinery/recharger, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/obj/machinery/camera{ + c_tag = "Medbay Security Post"; + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/medical/medbay) +"bOT" = ( +/obj/item/device/radio/intercom{ + frequency = 1485; + name = "Station Intercom (Medbay)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bOU" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bOV" = ( +/obj/structure/grille, +/obj/structure/window/fulltile, +/turf/open/floor/plating, +/area/medical/medbay) +"bOW" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bOX" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bOY" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Medbay Maintenance"; + req_access_txt = "5" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bOZ" = ( +/obj/machinery/newscaster{ + dir = 8; + pixel_x = -32 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/obj/structure/chair/wood/normal{ + dir = 4 + }, +/turf/open/floor/wood, +/area/library) +"bPa" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/wood, +/area/library) +"bPb" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/wood, +/area/library) +"bPc" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/wood, +/area/library) +"bPd" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel/airless{ + dir = 5; + icon_state = "asteroidfloor" + }, +/area/mine/abandoned) +"bPe" = ( +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plasteel/airless, +/area/mine/abandoned) +"bPf" = ( +/turf/open/floor/plasteel/airless{ + icon_state = "damaged2" + }, +/area/mine/abandoned) +"bPg" = ( +/obj/machinery/door/airlock, +/turf/open/floor/plasteel, +/area/mine/abandoned) +"bPh" = ( +/turf/open/floor/plasteel/airless, +/area/mine/abandoned) +"bPi" = ( +/turf/open/floor/plasteel/airless{ + icon_state = "damaged3" + }, +/area/mine/abandoned) +"bPj" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel/airless{ + icon_state = "damaged2" + }, +/area/mine/abandoned) +"bPk" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"bPl" = ( +/obj/item/clothing/under/rank/miner, +/obj/effect/decal/cleanable/blood, +/obj/item/clothing/glasses/regular/hipster, +/obj/effect/decal/remains/human, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"bPm" = ( +/obj/structure/rack, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/item/weapon/tank/internals/emergency_oxygen, +/obj/item/weapon/tank/internals/emergency_oxygen, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bPn" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bPo" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bPp" = ( +/obj/machinery/r_n_d/server/core, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/toxins/server) +"bPq" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/airalarm/server{ + pixel_y = 22 + }, +/turf/open/floor/plasteel{ + icon_state = "dark"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/toxins/server) +"bPr" = ( +/obj/machinery/r_n_d/server/robotics, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/toxins/server) +"bPs" = ( +/obj/machinery/computer/aifixer, +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/obj/machinery/button/door{ + id = "Biohazard"; + name = "Biohazard Shutter Control"; + pixel_x = -24; + req_access_txt = "47" + }, +/obj/machinery/button{ + id = "research"; + name = "Research and Development Shutters"; + pixel_x = -37 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whiteblue" + }, +/area/crew_quarters/hor) +"bPt" = ( +/obj/machinery/computer/robotics, +/obj/machinery/firealarm{ + pixel_y = 25 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/crew_quarters/hor) +"bPu" = ( +/obj/machinery/computer/mecha, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Research Director's Desk"; + departmentType = 5; + name = "Research Director RC"; + pixel_x = -2; + pixel_y = 30 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/crew_quarters/hor) +"bPv" = ( +/obj/structure/closet/secure_closet/RD, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/crew_quarters/hor) +"bPw" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/crew_quarters/hor) +"bPx" = ( +/obj/structure/table, +/obj/item/device/aicard, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/item/clothing/glasses/science, +/obj/machinery/light_switch{ + pixel_x = 25; + pixel_y = 0 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whiteblue" + }, +/area/crew_quarters/hor) +"bPy" = ( +/obj/structure/cable/pink{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "Research Lab APC"; + pixel_x = -25; + pixel_y = 0 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bPz" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/airalarm{ + frequency = 1439; + locked = 0; + pixel_y = 23 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bPA" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bPB" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitebluecorner" + }, +/area/toxins/lab) +"bPC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitebluecorner" + }, +/area/toxins/lab) +"bPD" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bPE" = ( +/obj/machinery/light_switch{ + pixel_y = 25 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bPF" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bPG" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/toxins/lab) +"bPH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/sortjunction{ + dir = 1; + icon_state = "pipe-j2s"; + sortType = 14 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bPI" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/landmark{ + name = "blobstart" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bPJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bPK" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bPL" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bPM" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/medical/chemistry) +"bPN" = ( +/obj/structure/table/glass, +/obj/item/weapon/hand_labeler, +/obj/item/stack/packageWrap, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"bPO" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/chemistry) +"bPP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/chemistry) +"bPQ" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"bPR" = ( +/turf/closed/wall/r_wall, +/area/medical/medbay) +"bPS" = ( +/obj/machinery/door/airlock/glass_medical{ + desc = "The front entrance to the medical bay. Can be exited even without ID via the buttons."; + id_tag = "FoyerLeft"; + name = "Medbay"; + req_access_txt = "5" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bPT" = ( +/obj/machinery/door/airlock/glass_medical{ + desc = "The front entrance to the medical bay. Can be exited even without ID via the buttons."; + id_tag = "FoyerLeft"; + name = "Medbay"; + req_access_txt = "5" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bPU" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall, +/area/medical/medbay) +"bPV" = ( +/obj/structure/closet/secure_closet/security/med, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/reagent_dispensers/peppertank{ + pixel_x = -32 + }, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 10 + }, +/area/medical/medbay) +"bPW" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/medical/medbay) +"bPX" = ( +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/medical/medbay) +"bPY" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/medical/medbay) +"bPZ" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/paper_bin, +/obj/item/weapon/pen, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 6 + }, +/area/medical/medbay) +"bQa" = ( +/obj/machinery/door/airlock/glass_medical{ + desc = "The front entrance to the medical bay. Can be exited even without ID via the buttons."; + id_tag = "FoyerRight"; + name = "Medbay"; + req_access_txt = "5" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bQb" = ( +/obj/machinery/door/airlock/glass_medical{ + desc = "The front entrance to the medical bay. Can be exited even without ID via the buttons."; + id_tag = "FoyerRight"; + name = "Medbay"; + req_access_txt = "5" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bQc" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bQd" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 9 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitebluecorner" + }, +/area/medical/medbay) +"bQe" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "whitebluecorner" + }, +/area/medical/medbay) +"bQf" = ( +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bQg" = ( +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bQh" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitebluecorner" + }, +/area/medical/surgery) +"bQi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "whitebluecorner" + }, +/area/medical/surgery) +"bQj" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/medical, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bQk" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/medical, +/obj/machinery/light, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitebluecorner" + }, +/area/medical/surgery) +"bQl" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/iv_drip, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bQm" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/obj/machinery/iv_drip, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bQn" = ( +/obj/structure/table/wood, +/obj/item/weapon/hand_labeler, +/turf/open/floor/wood, +/area/library) +"bQo" = ( +/obj/machinery/photocopier, +/turf/open/floor/wood, +/area/library) +"bQp" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/wood, +/area/library) +"bQq" = ( +/obj/machinery/light, +/turf/open/floor/wood, +/area/library) +"bQr" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/wood, +/area/library) +"bQs" = ( +/obj/machinery/bookbinder, +/turf/open/floor/wood, +/area/library) +"bQt" = ( +/obj/structure/ore_box, +/turf/open/floor/plasteel/airless{ + dir = 5; + icon_state = "asteroidfloor" + }, +/area/mine/abandoned) +"bQu" = ( +/turf/open/floor/plasteel/airless{ + icon_state = "floorgrime" + }, +/area/mine/abandoned) +"bQv" = ( +/obj/item/ammo_casing/c9mm, +/turf/open/floor/plasteel/airless, +/area/mine/abandoned) +"bQw" = ( +/obj/machinery/light/built{ + dir = 8 + }, +/turf/open/floor/plasteel/airless, +/area/mine/abandoned) +"bQx" = ( +/turf/open/floor/plasteel/airless{ + icon_state = "asteroidfloor" + }, +/area/mine/abandoned) +"bQy" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plasteel/airless{ + icon_state = "asteroidfloor" + }, +/area/mine/abandoned) +"bQz" = ( +/obj/structure/girder, +/turf/open/floor/plasteel/airless{ + icon_state = "asteroidfloor" + }, +/area/mine/abandoned) +"bQA" = ( +/obj/item/organ/internal/heart{ + beating = 0 + }, +/obj/effect/decal/cleanable/blood/gibs, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"bQB" = ( +/obj/effect/decal/cleanable/blood, +/obj/item/weapon/ectoplasm, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"bQC" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bQD" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/camera{ + c_tag = "Research Atmospheric Control" + }, +/obj/machinery/meter, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bQE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/computer/atmos_alert, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bQF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/asmaint2) +"bQG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bQH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/closed/wall, +/area/maintenance/asmaint2) +"bQI" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bQJ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + external_pressure_bound = 140; + on = 1; + pressure_checks = 0 + }, +/obj/machinery/camera{ + c_tag = "Server Room"; + dir = 4 + }, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/toxins/server) +"bQK" = ( +/obj/machinery/atmospherics/pipe/manifold/general/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/toxins/server) +"bQL" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + external_pressure_bound = 140; + on = 1; + pressure_checks = 0 + }, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/toxins/server) +"bQM" = ( +/obj/machinery/computer/security/telescreen{ + desc = "Used for watching the RD's goons from the safety of his office."; + dir = 4; + name = "Research Monitor"; + network = list("RD"); + pixel_x = -28 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/crew_quarters/hor) +"bQN" = ( +/obj/structure/chair/office/light, +/obj/effect/landmark/start{ + name = "Research Director" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bQO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bQP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bQQ" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bQR" = ( +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_x = 31 + }, +/obj/structure/rack, +/obj/item/weapon/circuitboard/teleporter, +/obj/item/weapon/circuitboard/aicore{ + pixel_x = -2; + pixel_y = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/crew_quarters/hor) +"bQS" = ( +/obj/structure/rack, +/obj/item/weapon/storage/toolbox/mechanical{ + pixel_x = 5; + pixel_y = -5 + }, +/obj/item/clothing/head/welding{ + pixel_x = -3; + pixel_y = 5 + }, +/obj/item/clothing/glasses/welding, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bQT" = ( +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/lab) +"bQU" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhitecorner" + }, +/area/toxins/lab) +"bQV" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "warnwhite" + }, +/area/toxins/lab) +"bQW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite" + }, +/area/toxins/lab) +"bQX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite" + }, +/area/toxins/lab) +"bQY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warnwhitecorner" + }, +/area/toxins/lab) +"bQZ" = ( +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bRa" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bRb" = ( +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bRc" = ( +/obj/structure/cable/cyan{ + icon_state = "0-2" + }, +/obj/machinery/power/smes{ + charge = 1e+006 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bRd" = ( +/obj/structure/cable/cyan{ + icon_state = "0-2" + }, +/obj/machinery/computer/monitor, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bRe" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bRf" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/syringes, +/obj/item/weapon/storage/box/beakers{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"bRg" = ( +/obj/machinery/chem_heater, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/chemistry) +"bRh" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"bRi" = ( +/obj/machinery/button/door{ + desc = "A remote control switch for the medbay foyer."; + id = "FoyerLeft"; + name = "Medbay Exit Button"; + normaldoorcontrol = 1; + pixel_y = 26 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/machinery/camera{ + c_tag = "Medbay Port" + }, +/turf/open/floor/plasteel{ + icon_state = "whiteyellowcorner"; + dir = 8 + }, +/area/medical/medbay2) +"bRj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bRk" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bRl" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/bed/roller, +/turf/open/floor/plasteel{ + icon_state = "whitered"; + dir = 4 + }, +/area/medical/medbay2) +"bRm" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/medbay) +"bRn" = ( +/obj/machinery/door/airlock/glass_security{ + name = "Security Post"; + req_access_txt = "63" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitered" + }, +/area/medical/medbay) +"bRo" = ( +/obj/machinery/button/door{ + desc = "A remote control switch for the medbay foyer."; + id = "FoyerRight"; + name = "Medbay Exit Button"; + normaldoorcontrol = 1; + pixel_y = 26 + }, +/obj/structure/bed/roller, +/turf/open/floor/plasteel{ + icon_state = "whitered"; + dir = 8 + }, +/area/medical/medbay2) +"bRp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bRq" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bRr" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bRs" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bRt" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bRu" = ( +/obj/structure/grille, +/obj/structure/window/fulltile, +/turf/open/floor/plating, +/area/medical/surgery) +"bRv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bRw" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Medbay Cryogenics"; + dir = 8 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bRx" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Library Maintenance"; + req_one_access_txt = "5; 6; 9; 12; 22; 33; 37" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bRy" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/airless, +/area/mine/abandoned) +"bRz" = ( +/obj/structure/closet/crate, +/obj/item/toy/syndicateballoon, +/turf/open/floor/plating/airless, +/area/mine/abandoned) +"bRA" = ( +/obj/machinery/portable_atmospherics/canister/air, +/turf/open/floor/plasteel/airless{ + icon_state = "asteroidfloor" + }, +/area/mine/abandoned) +"bRB" = ( +/obj/effect/decal/cleanable/molten_item, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/mine/abandoned) +"bRC" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/plasteel/airless{ + icon_state = "asteroidfloor" + }, +/area/mine/abandoned) +"bRD" = ( +/obj/item/weapon/weldingtool, +/turf/open/floor/plasteel/airless{ + icon_state = "asteroidfloor" + }, +/area/mine/explored) +"bRE" = ( +/obj/structure/girder/displaced, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"bRF" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bRG" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bRH" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/atmos{ + name = "Research Atmospheric Control"; + req_access_txt = "24" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bRI" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bRJ" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 9 + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bRK" = ( +/obj/structure/cable/pink{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bRL" = ( +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/toxins/server) +"bRM" = ( +/obj/machinery/atmospherics/pipe/simple/general/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/toxins/server) +"bRN" = ( +/obj/structure/table/glass, +/obj/item/weapon/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/obj/machinery/keycard_auth{ + pixel_x = -24 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/crew_quarters/hor) +"bRO" = ( +/obj/structure/table/glass, +/obj/item/weapon/folder/white, +/obj/item/weapon/stamp/rd{ + pixel_x = 3; + pixel_y = -2 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bRP" = ( +/obj/structure/table/glass, +/obj/item/weapon/cartridge/signal/toxins, +/obj/item/weapon/cartridge/signal/toxins{ + pixel_x = -4; + pixel_y = 2 + }, +/obj/item/weapon/cartridge/signal/toxins{ + pixel_x = 4; + pixel_y = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bRQ" = ( +/obj/structure/table/glass, +/obj/item/device/paicard{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/device/taperecorder, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bRR" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bRS" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Research Director's Office APC"; + pixel_x = 24 + }, +/obj/machinery/camera{ + c_tag = "Research Director's Office"; + dir = 8; + network = list("SS13","RD") + }, +/obj/structure/cable/pink{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/crew_quarters/hor) +"bRT" = ( +/obj/structure/table/glass, +/obj/item/weapon/reagent_containers/glass/beaker/large{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/weapon/reagent_containers/glass/beaker{ + pixel_x = 8; + pixel_y = 2 + }, +/obj/item/weapon/reagent_containers/dropper, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bRU" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warnwhite" + }, +/area/toxins/lab) +"bRV" = ( +/obj/machinery/r_n_d/protolathe, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "warning" + }, +/area/toxins/lab) +"bRW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/toxins/lab) +"bRX" = ( +/obj/machinery/r_n_d/destructive_analyzer, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "warning" + }, +/area/toxins/lab) +"bRY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhite" + }, +/area/toxins/lab) +"bRZ" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bSa" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "researchdesk" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/toxins/lab) +"bSb" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bSc" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bSd" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bSe" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/engineering{ + name = "Medbay Power Control"; + req_access_txt = "11" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bSf" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bSg" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bSh" = ( +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Medbay Atmospheric Control"; + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bSi" = ( +/turf/closed/wall/r_wall, +/area/medical/medbay2) +"bSj" = ( +/obj/structure/table/glass, +/obj/item/weapon/reagent_containers/glass/beaker/large, +/obj/item/weapon/reagent_containers/dropper, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteyellow" + }, +/area/medical/medbay2) +"bSk" = ( +/obj/structure/chair/office/light{ + dir = 8 + }, +/obj/effect/landmark/start{ + name = "Chemist" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bSl" = ( +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bSm" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bSn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteyellowcorner" + }, +/area/medical/medbay2) +"bSo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/smartfridge/chemistry, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteyellowfull" + }, +/area/medical/medbay2) +"bSp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteyellow" + }, +/area/medical/medbay2) +"bSq" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bSr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bSs" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 4 + }, +/area/medical/medbay2) +"bSt" = ( +/obj/machinery/firealarm{ + pixel_y = 25 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitered" + }, +/area/medical/medbay2) +"bSu" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitered" + }, +/area/medical/medbay2) +"bSv" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 1 + }, +/area/medical/medbay2) +"bSw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bSx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 4 + }, +/area/medical/medbay2) +"bSy" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitered" + }, +/area/medical/medbay2) +"bSz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/requests_console{ + department = "Medbay"; + departmentType = 1; + name = "Medbay Requests Console"; + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitered" + }, +/area/medical/medbay2) +"bSA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 1 + }, +/area/medical/medbay2) +"bSB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bSC" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bSD" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitebluecorner" + }, +/area/medical/medbay2) +"bSE" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/noticeboard{ + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bSF" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bSG" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitebluecorner" + }, +/area/medical/medbay2) +"bSH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitebluecorner" + }, +/area/medical/medbay2) +"bSI" = ( +/obj/structure/table/glass, +/obj/item/weapon/defibrillator/loaded, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bSJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/reagent_dispensers/water_cooler, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bSK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/table/glass, +/obj/item/weapon/storage/box/cups, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bSL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitebluecorner" + }, +/area/medical/medbay2) +"bSM" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bSN" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bSO" = ( +/turf/closed/wall, +/area/medical/medbay2) +"bSP" = ( +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bSQ" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Surgery APC"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/structure/cable/cyan{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/medical/surgery) +"bSR" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bSS" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Library APC"; + pixel_y = 25 + }, +/obj/structure/cable/cyan{ + icon_state = "0-2" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/library) +"bST" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bSU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/asmaint) +"bSV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/mineral/random/low_chance, +/area/mine/explored) +"bSW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/mine/explored) +"bSX" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + external_pressure_bound = 0; + initialize_directions = 1; + internal_pressure_bound = 4000; + on = 1; + pressure_checks = 2; + pump_direction = 0 + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/mine/explored) +"bSY" = ( +/obj/item/weapon/rack_parts, +/obj/machinery/light/built{ + dir = 1 + }, +/turf/open/floor/plasteel/airless{ + icon_state = "damaged5" + }, +/area/mine/abandoned) +"bSZ" = ( +/obj/structure/rack, +/obj/item/weapon/pickaxe{ + pixel_x = 5 + }, +/obj/item/weapon/shovel{ + pixel_x = -5 + }, +/turf/open/floor/plating/airless, +/area/mine/abandoned) +"bTa" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/turf/open/floor/plasteel/airless{ + icon_state = "floorgrime" + }, +/area/mine/abandoned) +"bTb" = ( +/turf/open/floor/plasteel/airless{ + icon_state = "asteroidfloor" + }, +/area/mine/explored) +"bTc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bTd" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/crew_quarters/hor) +"bTe" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/glass_command{ + name = "Server Room"; + req_access_txt = "30" + }, +/obj/machinery/atmospherics/pipe/simple/general/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/hor) +"bTf" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bTg" = ( +/obj/structure/chair/office/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bTh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bTi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bTj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bTk" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/machinery/computer/card/minor/rd, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitebluecorner" + }, +/area/crew_quarters/hor) +"bTl" = ( +/obj/structure/table/glass, +/obj/item/weapon/stock_parts/scanning_module{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/item/weapon/stock_parts/scanning_module{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/machinery/camera{ + c_tag = "Research & Development"; + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bTm" = ( +/obj/machinery/r_n_d/circuit_imprinter, +/obj/item/weapon/reagent_containers/glass/beaker{ + list_reagents = list("sacid" = 50) + }, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "warning" + }, +/area/toxins/lab) +"bTn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/landmark/start{ + name = "Scientist" + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/toxins/lab) +"bTo" = ( +/obj/machinery/computer/rdconsole/core, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "warning" + }, +/area/toxins/lab) +"bTp" = ( +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Scientist" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bTq" = ( +/obj/machinery/door/firedoor, +/obj/structure/table/reinforced, +/obj/machinery/door/window/eastleft{ + dir = 8; + layer = 4; + name = "Research Desk"; + req_access_txt = "7" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "researchdesk" + }, +/obj/item/weapon/folder, +/turf/open/floor/plasteel{ + icon_state = "whitebluefull" + }, +/area/toxins/lab) +"bTr" = ( +/obj/structure/cable/cyan{ + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "Medbay Maintenance APC"; + pixel_x = -24 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bTs" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bTt" = ( +/obj/structure/rack, +/obj/item/weapon/wirecutters, +/obj/item/device/multitool, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bTu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bTv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/maintenance/asmaint) +"bTw" = ( +/obj/machinery/chem_master, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "whiteyellow" + }, +/area/medical/medbay2) +"bTx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/chem_dispenser, +/turf/open/floor/plasteel{ + icon_state = "whiteyellow" + }, +/area/medical/medbay2) +"bTy" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/table/glass, +/obj/item/weapon/storage/toolbox, +/turf/open/floor/plasteel{ + icon_state = "whiteyellow" + }, +/area/medical/medbay2) +"bTz" = ( +/obj/item/device/assembly/timer{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/device/assembly/timer{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/device/assembly/igniter{ + pixel_x = 3; + pixel_y = -7 + }, +/obj/item/device/assembly/igniter{ + pixel_x = 3; + pixel_y = -7 + }, +/obj/item/device/assembly/igniter{ + pixel_x = 3; + pixel_y = -7 + }, +/obj/item/device/assembly/igniter{ + pixel_x = 3; + pixel_y = -7 + }, +/obj/item/device/assembly/timer{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/device/assembly/timer{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/structure/table/glass, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteyellow" + }, +/area/medical/medbay2) +"bTA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/light_switch{ + pixel_y = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteyellowcorner"; + dir = 8 + }, +/area/medical/medbay2) +"bTB" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bTC" = ( +/obj/machinery/door/airlock/glass_medical{ + desc = "SS13's Chemistry lab, to be used only by qualified and cautious experts."; + name = "Chemistry Lab"; + req_access_txt = "5; 33" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteyellowfull" + }, +/area/medical/medbay2) +"bTD" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/obj/item/device/radio/intercom{ + frequency = 1485; + name = "Station Intercom (Medbay)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteyellow" + }, +/area/medical/medbay2) +"bTE" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bTF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bTG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "whitebluecorner" + }, +/area/medical/medbay2) +"bTH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bTI" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bTJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitebluecorner" + }, +/area/medical/medbay2) +"bTK" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bTL" = ( +/obj/structure/disposalpipe/sortjunction{ + dir = 8; + icon_state = "pipe-j2s"; + sortType = 10 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bTM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/landmark{ + name = "lightsout" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bTN" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bTO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bTP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bTQ" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bTR" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bTS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bTT" = ( +/obj/machinery/door/window/eastleft{ + dir = 8; + name = "Medical Delivery"; + req_access_txt = "5" + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/medical/medbay2) +"bTU" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=8"; + freq = 1400; + location = "Medbay" + }, +/obj/structure/plasticflaps{ + opacity = 1 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "loadingarea" + }, +/area/medical/medbay2) +"bTV" = ( +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bTW" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bTX" = ( +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bTY" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bTZ" = ( +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bUa" = ( +/obj/structure/grille, +/obj/item/weapon/shard, +/obj/item/weapon/shard{ + icon_state = "small" + }, +/turf/open/floor/plating/airless, +/area/mine/abandoned) +"bUb" = ( +/obj/structure/table, +/obj/item/device/radio/off, +/turf/open/floor/plating/airless, +/area/mine/abandoned) +"bUc" = ( +/obj/item/weapon/crowbar/red, +/turf/open/floor/plasteel/airless, +/area/mine/abandoned) +"bUd" = ( +/obj/machinery/door/airlock, +/turf/open/floor/plasteel/airless, +/area/mine/abandoned) +"bUe" = ( +/obj/effect/decal/cleanable/blood, +/obj/item/ammo_casing/c9mm, +/turf/open/floor/plasteel/airless{ + icon_state = "damaged2" + }, +/area/mine/abandoned) +"bUf" = ( +/obj/machinery/light/small/built{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/mine/abandoned) +"bUg" = ( +/obj/structure/bed, +/obj/item/clothing/glasses/regular, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bUh" = ( +/obj/structure/closet/l3closet, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bUi" = ( +/obj/structure/table, +/obj/item/weapon/reagent_containers/glass/beaker, +/obj/item/weapon/reagent_containers/dropper, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bUj" = ( +/obj/structure/reagent_dispensers, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bUk" = ( +/obj/structure/rack, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bUl" = ( +/obj/structure/table, +/obj/item/toy/minimeteor, +/obj/item/weapon/poster/contraband, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bUm" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bUn" = ( +/obj/machinery/atmospherics/pipe/simple/general/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhitecorner" + }, +/area/crew_quarters/hor) +"bUo" = ( +/obj/machinery/atmospherics/pipe/simple/general/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite"; + dir = 1 + }, +/area/crew_quarters/hor) +"bUp" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warnwhitecorner" + }, +/area/crew_quarters/hor) +"bUq" = ( +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bUr" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bUs" = ( +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bUt" = ( +/obj/machinery/suit_storage_unit/rd, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bUu" = ( +/obj/structure/table/glass, +/obj/item/weapon/stock_parts/manipulator, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/item/stack/cable_coil, +/obj/item/weapon/stock_parts/capacitor, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bUv" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhitecorner" + }, +/area/toxins/lab) +"bUw" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite"; + dir = 1 + }, +/area/toxins/lab) +"bUx" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "warnwhite"; + dir = 1 + }, +/area/toxins/lab) +"bUy" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite"; + dir = 1 + }, +/area/toxins/lab) +"bUz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warnwhitecorner" + }, +/area/toxins/lab) +"bUA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bUB" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bUC" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bUD" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bUE" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/closed/wall, +/area/maintenance/asmaint) +"bUF" = ( +/turf/closed/wall/r_wall, +/area/medical/genetics) +"bUG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall, +/area/medical/genetics) +"bUH" = ( +/turf/closed/wall, +/area/medical/genetics) +"bUI" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/northleft{ + dir = 2; + name = "Genetics Desk"; + req_access_txt = "5; 9" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "whitebluefull" + }, +/area/medical/genetics) +"bUJ" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/medical/genetics) +"bUK" = ( +/obj/machinery/door/airlock/glass_medical{ + desc = "The part of Genetics where death is robusted and fed down the nearest disposal unit. Can be exited without ID access via the door button from inside."; + id_tag = "CloningDoor"; + name = "Cloning Lab"; + req_access_txt = "0"; + req_one_access_txt = "5; 9" + }, +/turf/open/floor/plasteel{ + icon_state = "whitebluefull" + }, +/area/medical/genetics) +"bUL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/machinery/vending/medical, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bUM" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bUN" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bUO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bUP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bUQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bUR" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/camera{ + c_tag = "Medbay Central"; + dir = 1 + }, +/obj/item/device/radio/intercom{ + frequency = 1485; + name = "Station Intercom (Medbay)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bUS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bUT" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/newscaster{ + hitstaken = 1; + pixel_y = -32 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bUU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bUV" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitebluecorner" + }, +/area/medical/medbay2) +"bUW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bUX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bUY" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bUZ" = ( +/obj/structure/table/glass, +/obj/item/weapon/reagent_containers/glass/bottle/toxin{ + pixel_x = 4; + pixel_y = 2 + }, +/obj/item/weapon/reagent_containers/glass/bottle/toxin{ + pixel_x = 4; + pixel_y = 2 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bVa" = ( +/turf/closed/wall/r_wall, +/area/medical/virology) +"bVb" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bVc" = ( +/obj/item/stack/rods, +/obj/item/weapon/shard{ + icon_state = "small" + }, +/obj/structure/grille{ + density = 0; + icon_state = "brokengrille" + }, +/turf/open/space, +/area/mine/abandoned) +"bVd" = ( +/obj/structure/table, +/obj/item/weapon/storage/toolbox/mechanical, +/turf/open/floor/plating/airless, +/area/mine/abandoned) +"bVe" = ( +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plating/airless, +/area/mine/abandoned) +"bVf" = ( +/obj/effect/decal/cleanable/generic, +/turf/open/floor/plasteel/airless, +/area/mine/abandoned) +"bVg" = ( +/obj/machinery/door/airlock, +/turf/open/floor/plasteel/airless{ + icon_state = "floorgrime" + }, +/area/mine/abandoned) +"bVh" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plasteel/airless, +/area/mine/abandoned) +"bVi" = ( +/obj/structure/table, +/obj/item/weapon/paper/crumpled/bloody, +/turf/open/floor/plating/airless, +/area/mine/abandoned) +"bVj" = ( +/obj/structure/bed, +/obj/effect/decal/cleanable/blood, +/obj/effect/decal/remains/human, +/turf/open/floor/plating/airless, +/area/mine/abandoned) +"bVk" = ( +/obj/structure/chair/stool, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bVl" = ( +/obj/machinery/computer/rdservercontrol, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bVm" = ( +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bVn" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bVo" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bVp" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bVq" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/displaycase/labcage, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bVr" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/crew_quarters/hor) +"bVs" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/table/glass, +/obj/item/weapon/disk/tech_disk, +/obj/item/weapon/disk/design_disk, +/obj/item/weapon/stock_parts/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bVt" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/lab) +"bVu" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/lab) +"bVv" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/button{ + id = "researchdesk"; + name = "Research desk Shutters"; + pixel_x = 25 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bVw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/sortjunction{ + dir = 1; + icon_state = "pipe-j2s"; + sortType = 13 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bVx" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/camera{ + c_tag = "Aft Hallway Central"; + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bVy" = ( +/obj/structure/table, +/obj/item/weapon/tank/internals/emergency_oxygen{ + pixel_x = -8 + }, +/obj/item/weapon/tank/internals/emergency_oxygen{ + pixel_x = -8 + }, +/obj/item/clothing/mask/breath{ + pixel_x = 4 + }, +/obj/item/clothing/mask/breath{ + pixel_x = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bVz" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bVA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bVB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bVC" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bVD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bVE" = ( +/obj/machinery/dna_scannernew, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"bVF" = ( +/obj/machinery/computer/scan_consolenew, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"bVG" = ( +/obj/item/weapon/folder/white, +/obj/item/weapon/pen, +/obj/structure/table/glass, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/requests_console{ + department = "Genetics"; + name = "Genetics Requests Console"; + pixel_y = 30 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"bVH" = ( +/obj/machinery/firealarm{ + pixel_y = 25 + }, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"bVI" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/rxglasses, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"bVJ" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/obj/structure/table/glass, +/obj/item/weapon/storage/box/syringes, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"bVK" = ( +/obj/item/weapon/storage/box/bodybags{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/structure/table/glass, +/obj/machinery/light{ + dir = 8 + }, +/obj/item/device/radio/intercom{ + dir = 1; + frequency = 1485; + name = "Station Intercom (Medbay)"; + pixel_y = 25 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whiteblue" + }, +/area/medical/genetics) +"bVL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/chair/office/light{ + dir = 1 + }, +/obj/effect/landmark/start{ + name = "Geneticist" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/genetics) +"bVM" = ( +/obj/structure/table/glass, +/obj/item/weapon/paper_bin, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/genetics) +"bVN" = ( +/obj/machinery/requests_console{ + department = "Genetics"; + name = "Genetics Requests Console"; + pixel_y = 30 + }, +/obj/structure/table/glass, +/obj/item/weapon/book/manual/medical_cloning, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/genetics) +"bVO" = ( +/obj/machinery/button/door{ + desc = "A remote control switch for the cloning door."; + id = "CloningDoor"; + name = "Cloning Exit Button"; + normaldoorcontrol = 1; + pixel_x = 23; + pixel_y = -5 + }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22; + pixel_y = 7 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whiteblue" + }, +/area/medical/genetics) +"bVP" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/medical/medbay2) +"bVQ" = ( +/obj/machinery/door/airlock/glass_medical{ + desc = "A storage area for important medical supplies, including a medical hardsuit for SAR operations."; + name = "Medbay Storage"; + req_access_txt = "45" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "whitebluefull" + }, +/area/medical/medbay2) +"bVR" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/medical/medbay2) +"bVS" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall, +/area/medical/medbay2) +"bVT" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/medbay2) +"bVU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock/glass_medical{ + desc = "The breakroom for the station's diligent Medical staff, suitably insulated from the screams of the injured."; + name = "Medbay Break Room"; + req_access_txt = "5" + }, +/turf/open/floor/plasteel{ + icon_state = "whitebluefull" + }, +/area/medical/medbay2) +"bVV" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/medbay2) +"bVW" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/firstaid/toxin{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/weapon/storage/firstaid/toxin, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bVX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bVY" = ( +/obj/effect/landmark/start{ + name = "Medical Doctor" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bVZ" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/rxglasses, +/obj/item/clothing/glasses/hud/health, +/obj/item/clothing/glasses/hud/health, +/obj/item/clothing/glasses/hud/health, +/obj/item/clothing/glasses/hud/health, +/obj/machinery/camera{ + c_tag = "Medbay Starboard"; + dir = 8 + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/plasteel{ + icon_state = "whitegreencorner" + }, +/area/medical/medbay2) +"bWa" = ( +/obj/structure/sign/biohazard, +/turf/closed/wall/r_wall, +/area/medical/virology) +"bWb" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bWc" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/obj/machinery/camera{ + c_tag = "Virology Access" + }, +/obj/structure/closet/l3closet, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bWd" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/obj/structure/closet/l3closet, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bWe" = ( +/obj/machinery/smartfridge/chemistry/virology, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bWf" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/obj/structure/sign/deathsposal{ + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bWg" = ( +/obj/structure/table/glass, +/obj/item/weapon/paper_bin{ + pixel_x = -2; + pixel_y = 5 + }, +/obj/item/weapon/pen/red, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bWh" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/beakers{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/weapon/storage/box/syringes, +/obj/structure/sink/kitchen{ + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bWi" = ( +/turf/closed/wall, +/area/medical/virology) +"bWj" = ( +/obj/structure/closet/wardrobe/virology_white, +/obj/item/weapon/tank/internals/air, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bWk" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/item/weapon/wrench, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bWl" = ( +/turf/open/space, +/area/mine/abandoned) +"bWm" = ( +/obj/structure/closet, +/obj/item/weapon/storage/toolbox/emergency, +/turf/open/floor/plating/airless, +/area/mine/abandoned) +"bWn" = ( +/turf/open/floor/plasteel/airless{ + icon_state = "damaged4" + }, +/area/mine/abandoned) +"bWo" = ( +/obj/structure/closet/wardrobe/black, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bWp" = ( +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bWq" = ( +/obj/machinery/door/airlock/hatch, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bWr" = ( +/obj/structure/table/glass, +/obj/machinery/cell_charger, +/obj/item/weapon/stock_parts/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue"; + dir = 10 + }, +/area/toxins/lab) +"bWs" = ( +/obj/structure/table/glass, +/obj/item/stack/sheet/glass{ + amount = 50; + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bWt" = ( +/obj/structure/table/glass, +/obj/item/weapon/stock_parts/matter_bin, +/obj/item/weapon/stock_parts/matter_bin, +/obj/item/clothing/glasses/science, +/obj/item/clothing/glasses/science, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bWu" = ( +/obj/item/weapon/stock_parts/console_screen, +/obj/structure/table/glass, +/obj/item/weapon/stock_parts/console_screen, +/obj/item/weapon/stock_parts/console_screen, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bWv" = ( +/obj/structure/table/glass, +/obj/item/weapon/stock_parts/micro_laser, +/obj/item/weapon/stock_parts/micro_laser, +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/item/weapon/storage/toolbox/mechanical{ + pixel_x = 5; + pixel_y = -5 + }, +/obj/item/stack/cable_coil, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bWw" = ( +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bWx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bWy" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "whiteblue"; + dir = 6 + }, +/area/toxins/lab) +"bWz" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bWA" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/sortjunction{ + icon_state = "pipe-j2s"; + sortType = 23 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bWB" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bWC" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bWD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bWE" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/medical/genetics) +"bWF" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"bWG" = ( +/obj/structure/chair/office/light{ + dir = 1 + }, +/obj/effect/landmark/start{ + name = "Geneticist" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"bWH" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"bWI" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"bWJ" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"bWK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"bWL" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/genetics) +"bWM" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/rxglasses, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitebluecorner" + }, +/area/medical/genetics) +"bWN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"bWO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"bWP" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"bWQ" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/obj/machinery/camera{ + c_tag = "Cloning Lab"; + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/genetics) +"bWR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/table/glass, +/obj/item/clothing/glasses/hud/health, +/obj/item/clothing/glasses/hud/health, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bWS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bWT" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bWU" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bWV" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/machinery/vending/wallmed{ + pixel_y = 30 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bWW" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bWX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bWY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bWZ" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/cups, +/obj/machinery/light_switch{ + dir = 1; + pixel_y = 22 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bXa" = ( +/obj/item/weapon/storage/firstaid/fire{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/weapon/storage/firstaid/fire, +/obj/structure/table/glass, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bXb" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bXc" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitegreen" + }, +/area/medical/medbay2) +"bXd" = ( +/obj/machinery/door/airlock/virology{ + autoclose = 0; + frequency = 1449; + icon_state = "door_locked"; + id_tag = "virology_airlock_exterior"; + locked = 1; + name = "Virology Exterior Airlock"; + req_access_txt = "39" + }, +/turf/open/floor/plasteel{ + icon_state = "whitegreenfull" + }, +/area/medical/virology) +"bXe" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bXf" = ( +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology) +"bXg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bXh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/virology{ + autoclose = 0; + frequency = 1449; + icon_state = "door_locked"; + id_tag = "virology_airlock_interior"; + locked = 1; + name = "Virology Interior Airlock"; + req_access_txt = "39" + }, +/turf/open/floor/plasteel{ + icon_state = "whitegreenfull" + }, +/area/medical/virology) +"bXi" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bXj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology) +"bXk" = ( +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Virologist" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology) +"bXl" = ( +/obj/machinery/computer/pandemic, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bXm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/newscaster, +/turf/closed/wall, +/area/medical/virology) +"bXn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bXo" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/medical, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/obj/effect/landmark/start{ + name = "Virologist" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bXp" = ( +/obj/structure/girder, +/turf/open/space, +/area/mine/abandoned) +"bXq" = ( +/obj/structure/table, +/obj/machinery/reagentgrinder, +/obj/machinery/newscaster{ + dir = 8; + pixel_x = -32 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bXr" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen"; + opened = 1 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/landmark/costume, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bXs" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "scimaintroom" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bXt" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bXu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bXv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "Toxins Lab APC"; + pixel_y = 25 + }, +/obj/structure/cable/pink{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/toxins/mixing) +"bXw" = ( +/turf/closed/wall/r_wall, +/area/toxins/mixing) +"bXx" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/toxins/mixing) +"bXy" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/toxins/mixing) +"bXz" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/toxins/mixing) +"bXA" = ( +/obj/machinery/requests_console{ + department = "Research"; + departmentType = 2; + name = "Research Requests Console"; + pixel_y = 32 + }, +/turf/closed/wall/r_wall, +/area/toxins/mixing) +"bXB" = ( +/obj/machinery/status_display, +/turf/closed/wall/r_wall, +/area/toxins/mixing) +"bXC" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "research" + }, +/turf/open/floor/plating, +/area/toxins/lab) +"bXD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "research" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/lab) +"bXE" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "research" + }, +/turf/open/floor/plating, +/area/toxins/lab) +"bXF" = ( +/turf/closed/wall, +/area/storage/art) +"bXG" = ( +/obj/structure/table/glass, +/obj/item/device/flashlight/pen, +/obj/item/device/radio/headset/headset_medsci, +/obj/machinery/camera{ + c_tag = "Genetics Research"; + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"bXH" = ( +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"bXI" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"bXJ" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"bXK" = ( +/obj/machinery/door/airlock/glass_medical{ + id_tag = ""; + name = "Genetics Research"; + req_access_txt = "5; 9" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"bXL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"bXM" = ( +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"bXN" = ( +/obj/machinery/clonepod, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/genetics) +"bXO" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/firstaid/regular{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/weapon/storage/firstaid/regular, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = -22 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/camera{ + c_tag = "Medbay Storage"; + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bXP" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bXQ" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bXR" = ( +/obj/structure/closet/secure_closet/medical3, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bXS" = ( +/obj/structure/reagent_dispensers/water_cooler, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bXT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bXU" = ( +/obj/structure/table/glass, +/obj/item/weapon/reagent_containers/food/drinks/britcup, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 29 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bXV" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/firstaid/o2{ + pixel_x = 2; + pixel_y = 6 + }, +/obj/item/weapon/storage/firstaid/o2{ + pixel_x = -2; + pixel_y = 4 + }, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bXW" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/firstaid/brute{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/weapon/storage/firstaid/regular{ + pixel_x = 0; + pixel_y = 0 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bXX" = ( +/obj/structure/closet/l3closet, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bXY" = ( +/obj/structure/closet/secure_closet/medical1, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bXZ" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/bodybags, +/obj/machinery/light_switch{ + pixel_y = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bYa" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/gloves{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/weapon/storage/box/masks, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitebluecorner" + }, +/area/medical/medbay2) +"bYb" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/beakers{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/weapon/storage/box/syringes, +/obj/machinery/doorButtons/access_button{ + idDoor = "virology_airlock_exterior"; + idSelf = "virology_airlock_control"; + name = "Virology Access Button"; + pixel_x = 25; + pixel_y = 0; + req_access_txt = "39" + }, +/obj/item/device/radio/intercom{ + frequency = 1485; + name = "Station Intercom (Medbay)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitegreencorner" + }, +/area/medical/medbay2) +"bYc" = ( +/obj/machinery/shower{ + dir = 4 + }, +/obj/machinery/doorButtons/access_button{ + idDoor = "virology_airlock_exterior"; + idSelf = "virology_airlock_control"; + name = "Virology Access Button"; + pixel_x = -25; + pixel_y = 0; + req_access_txt = "39" + }, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bYd" = ( +/obj/machinery/light/small, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "whitegreen" + }, +/area/medical/virology) +"bYe" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/doorButtons/access_button{ + idDoor = "virology_airlock_interior"; + idSelf = "virology_airlock_control"; + name = "Virology Access Button"; + pixel_x = 25; + pixel_y = 0; + req_access_txt = "39" + }, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bYf" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/medical/virology) +"bYg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/doorButtons/airlock_controller{ + idExterior = "virology_airlock_exterior"; + idInterior = "virology_airlock_interior"; + idSelf = "virology_airlock_control"; + name = "Virology Access Console"; + pixel_x = -25 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bYh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology) +"bYi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology) +"bYj" = ( +/obj/structure/table/glass, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/reagent_dispensers/virusfood{ + density = 0; + pixel_x = 30 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/item/weapon/reagent_containers/dropper, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bYk" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/medical/virology) +"bYl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Virology Break Room"; + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitegreencorner" + }, +/area/medical/virology) +"bYm" = ( +/obj/structure/table/glass, +/obj/machinery/microwave{ + pixel_x = -3; + pixel_y = 6 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitegreencorner" + }, +/area/medical/virology) +"bYn" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/medical/virology) +"bYo" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bYp" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/junction{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bYq" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/asmaint) +"bYr" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/mineral/random/low_chance, +/area/mine/explored) +"bYs" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/grille, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/mine/explored) +"bYt" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/grille{ + density = 0; + icon_state = "brokengrille" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/mine/explored) +"bYu" = ( +/turf/open/space, +/area/mine/explored) +"bYv" = ( +/turf/closed/mineral/random/low_chance, +/area/mine/unexplored) +"bYw" = ( +/obj/structure/table, +/obj/machinery/recharger, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bYx" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen"; + opened = 1 + }, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bYy" = ( +/obj/structure/closet/body_bag, +/obj/item/weapon/melee/classic_baton/telescopic, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bYz" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bYA" = ( +/obj/machinery/button{ + id = "scimaintroom"; + pixel_x = -25 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bYB" = ( +/turf/closed/wall/r_wall, +/area/maintenance/asmaint2) +"bYC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall, +/area/toxins/mixing) +"bYD" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite"; + dir = 1 + }, +/area/toxins/mixing) +"bYE" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 5 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite"; + dir = 1 + }, +/area/toxins/mixing) +"bYF" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible, +/obj/machinery/meter, +/turf/open/floor/plasteel{ + icon_state = "warnwhite"; + dir = 1 + }, +/area/toxins/mixing) +"bYG" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite"; + dir = 1 + }, +/area/toxins/mixing) +"bYH" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warnwhitecorner" + }, +/area/toxins/mixing) +"bYI" = ( +/obj/structure/sign/nosmoking_2{ + pixel_y = 32 + }, +/obj/structure/closet/bombcloset, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/mixing) +"bYJ" = ( +/obj/structure/tank_dispenser, +/obj/machinery/light{ + dir = 1 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitepurplecorner" + }, +/area/toxins/mixing) +"bYK" = ( +/obj/machinery/portable_atmospherics/scrubber, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/toxins/mixing) +"bYL" = ( +/obj/machinery/portable_atmospherics/pump, +/turf/open/floor/plasteel{ + icon_state = "whitepurple"; + dir = 5 + }, +/area/toxins/mixing) +"bYM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bYN" = ( +/obj/structure/closet/emcloset, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bYO" = ( +/obj/structure/table/glass, +/obj/item/stack/cable_coil/random, +/obj/item/stack/cable_coil/random, +/obj/machinery/atmospherics/components/unary/vent_scrubber, +/obj/machinery/airalarm{ + frequency = 1439; + locked = 0; + pixel_y = 23 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/storage/art) +"bYP" = ( +/obj/structure/table/glass, +/obj/item/stack/cable_coil/random, +/obj/item/stack/cable_coil/random, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/storage/art) +"bYQ" = ( +/mob/living/carbon/monkey, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"bYR" = ( +/mob/living/carbon/monkey, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"bYS" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/mob/living/carbon/monkey, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"bYT" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitepurplecorner" + }, +/area/medical/genetics) +"bYU" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"bYV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"bYW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/dna_scannernew, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"bYX" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/genetics) +"bYY" = ( +/obj/structure/bed/roller, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitebluecorner" + }, +/area/medical/genetics) +"bYZ" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"bZa" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"bZb" = ( +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/effect/landmark/start{ + name = "Geneticist" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"bZc" = ( +/obj/machinery/computer/cloning, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/genetics) +"bZd" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/belt/medical, +/obj/item/weapon/storage/belt/medical, +/obj/item/weapon/storage/belt/medical, +/obj/item/clothing/tie/stethoscope, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bZe" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bZf" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/requests_console{ + department = "Medbay"; + departmentType = 1; + name = "Medbay Requests Console"; + pixel_x = 32 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bZg" = ( +/turf/closed/wall/r_wall, +/area/medical/cmo) +"bZh" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/cable/cyan{ + icon_state = "0-2" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/cmo) +"bZi" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/cable/cyan{ + icon_state = "0-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/cmo) +"bZj" = ( +/obj/structure/sign/biohazard, +/turf/closed/wall/r_wall, +/area/medical/cmo) +"bZk" = ( +/obj/machinery/light_switch{ + dir = 8; + pixel_x = -22 + }, +/turf/closed/wall/r_wall, +/area/medical/virology) +"bZl" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/requests_console{ + department = "Virology"; + name = "Virology Requests Console"; + pixel_x = -32 + }, +/obj/structure/closet/l3closet/virology, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bZm" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology) +"bZn" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "whitegreencorner" + }, +/area/medical/virology) +"bZo" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bZp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/virology{ + name = "Break Room"; + req_access_txt = "39" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bZq" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology) +"bZr" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/donkpockets{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/obj/item/weapon/storage/secure/safe{ + pixel_x = 31 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology) +"bZs" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Virology APC"; + pixel_x = -24 + }, +/obj/structure/cable/cyan{ + icon_state = "0-4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/medical/virology) +"bZt" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bZu" = ( +/obj/machinery/door/morgue, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bZv" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bZw" = ( +/obj/structure/lattice, +/turf/open/space, +/area/maintenance/asmaint2) +"bZx" = ( +/obj/machinery/door/poddoor{ + id = "mixvent"; + name = "Mix Vent Blast Door" + }, +/turf/open/floor/engine/vacuum, +/area/toxins/mixing) +"bZy" = ( +/turf/open/floor/engine/vacuum, +/area/toxins/mixing) +"bZz" = ( +/obj/machinery/sparker{ + id = "mixingsparker"; + pixel_x = 25 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + external_pressure_bound = 0; + initialize_directions = 1; + internal_pressure_bound = 4000; + on = 1; + pressure_checks = 2; + pump_direction = 0 + }, +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_y = 32 + }, +/turf/open/floor/engine/vacuum, +/area/toxins/mixing) +"bZA" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/toxins/mixing) +"bZB" = ( +/obj/machinery/airlock_sensor{ + id_tag = "tox_airlock_sensor"; + master_tag = "tox_airlock_control"; + pixel_y = 24 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/engine, +/area/toxins/mixing) +"bZC" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/obj/machinery/meter, +/obj/machinery/embedded_controller/radio/airlock_controller{ + airpump_tag = "tox_airlock_pump"; + exterior_door_tag = "tox_airlock_exterior"; + id_tag = "tox_airlock_control"; + interior_door_tag = "tox_airlock_interior"; + pixel_x = -24; + sanitize_external = 1; + sensor_tag = "tox_airlock_sensor" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warnwhitecorner" + }, +/area/toxins/mixing) +"bZD" = ( +/obj/machinery/atmospherics/components/binary/valve{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/mixing) +"bZE" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/mixing) +"bZF" = ( +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/mixing) +"bZG" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 2; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/mixing) +"bZH" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/toxins/mixing) +"bZI" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/toxins/mixing) +"bZJ" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bZK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bZL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/medical/research{ + name = "Research Division" + }) +"bZM" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bZN" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bZO" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bZP" = ( +/obj/machinery/door/airlock/glass{ + name = "Art Storage" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/storage/art) +"bZQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/storage/art) +"bZR" = ( +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/storage/art) +"bZS" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/storage/art) +"bZT" = ( +/obj/structure/cable/cyan{ + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "Art Storage APC"; + pixel_x = -25 + }, +/turf/open/floor/plating, +/area/storage/art) +"bZU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bZV" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"bZW" = ( +/obj/machinery/door/window/eastright{ + name = "Monkey Pen"; + req_access_txt = "9" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"bZX" = ( +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Geneticist" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"bZY" = ( +/obj/machinery/computer/scan_consolenew, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"bZZ" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/genetics) +"caa" = ( +/obj/structure/closet/wardrobe/white, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/genetics) +"cab" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"cac" = ( +/obj/machinery/dna_scannernew, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/genetics) +"cad" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"cae" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"caf" = ( +/obj/structure/chair/office/light, +/obj/effect/landmark/start{ + name = "Medical Doctor" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"cag" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"cah" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitebluecorner" + }, +/area/medical/medbay2) +"cai" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/medical/cmo) +"caj" = ( +/obj/machinery/firealarm{ + pixel_y = 25 + }, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = -22 + }, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"cak" = ( +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"cal" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"cam" = ( +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"can" = ( +/obj/machinery/status_display{ + pixel_x = 32 + }, +/obj/machinery/computer/card/minor/cmo, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"cao" = ( +/obj/structure/closet/secure_closet/chemical, +/turf/open/floor/plating, +/area/medical/cmo) +"cap" = ( +/obj/structure/closet/secure_closet/personal/patient, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whitegreen" + }, +/area/medical/virology) +"caq" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/medical, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitegreen" + }, +/area/medical/virology) +"car" = ( +/obj/structure/table/glass, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whitegreen" + }, +/area/medical/virology) +"cas" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/virology) +"cat" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/closet/secure_closet/medical1, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitegreencorner" + }, +/area/medical/virology) +"cau" = ( +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology) +"cav" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 29 + }, +/obj/machinery/camera{ + c_tag = "Virology"; + dir = 9 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitegreencorner" + }, +/area/medical/virology) +"caw" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cax" = ( +/obj/machinery/power/solar{ + id = "starboardsolar"; + name = "Starboard Solar Array" + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/open/floor/plasteel/airless{ + icon_state = "solarpanel" + }, +/area/solar/starboard) +"cay" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/starboard) +"caz" = ( +/obj/machinery/power/solar{ + id = "starboardsolar"; + name = "Starboard Solar Array" + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plasteel/airless{ + icon_state = "solarpanel" + }, +/area/solar/starboard) +"caA" = ( +/obj/structure/bed, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"caB" = ( +/obj/machinery/door/airlock/glass_research{ + autoclose = 0; + frequency = 1449; + heat_proof = 1; + icon_state = "door_locked"; + id_tag = "tox_airlock_exterior"; + locked = 1; + name = "Mixing Room Exterior Airlock"; + req_access_txt = "8" + }, +/turf/open/floor/engine, +/area/toxins/mixing) +"caC" = ( +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume{ + frequency = 1449; + id = "tox_airlock_pump" + }, +/turf/open/floor/engine, +/area/toxins/mixing) +"caD" = ( +/obj/machinery/door/airlock/glass_research{ + autoclose = 0; + frequency = 1449; + heat_proof = 1; + icon_state = "door_locked"; + id_tag = "tox_airlock_interior"; + locked = 1; + name = "Mixing Room Interior Airlock"; + req_access_txt = "8" + }, +/turf/open/floor/engine, +/area/toxins/mixing) +"caE" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhite" + }, +/area/toxins/mixing) +"caF" = ( +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/mixing) +"caG" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/mixing) +"caH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/mixing) +"caI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/mixing) +"caJ" = ( +/obj/item/device/assembly/prox_sensor{ + pixel_x = -4; + pixel_y = 1 + }, +/obj/item/device/assembly/prox_sensor{ + pixel_x = 8; + pixel_y = 9 + }, +/obj/item/device/assembly/prox_sensor{ + pixel_x = 9; + pixel_y = -2 + }, +/obj/item/device/assembly/prox_sensor{ + pixel_y = 2 + }, +/obj/structure/table/glass, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/toxins/mixing) +"caK" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/toxins/mixing) +"caL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"caM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"caN" = ( +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"caO" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"caP" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"caQ" = ( +/obj/structure/table/glass, +/obj/item/weapon/hand_labeler, +/obj/machinery/light_switch{ + dir = 1; + pixel_x = -22; + pixel_y = 0 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/storage/art) +"caR" = ( +/obj/structure/table/glass, +/obj/item/weapon/airlock_painter, +/obj/machinery/camera{ + c_tag = "Art Storage"; + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/storage/art) +"caS" = ( +/obj/structure/table/glass, +/obj/item/device/camera_film, +/obj/item/device/camera, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/storage/art) +"caT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/storage/art) +"caU" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"caV" = ( +/mob/living/carbon/monkey, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"caW" = ( +/mob/living/carbon/monkey, +/turf/open/floor/plasteel{ + icon_state = "whitepurple" + }, +/area/medical/genetics) +"caX" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whitepurple" + }, +/area/medical/genetics) +"caY" = ( +/obj/item/weapon/storage/box/monkeycubes, +/obj/structure/table/glass, +/turf/open/floor/plasteel{ + icon_state = "whitepurple" + }, +/area/medical/genetics) +"caZ" = ( +/obj/item/weapon/storage/box/disks, +/obj/structure/table/glass, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel{ + icon_state = "whitepurple" + }, +/area/medical/genetics) +"cba" = ( +/obj/structure/closet/secure_closet/medical1, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitepurplecorner" + }, +/area/medical/genetics) +"cbb" = ( +/obj/machinery/light, +/obj/machinery/newscaster{ + hitstaken = 1; + pixel_y = -32 + }, +/turf/open/floor/plasteel{ + icon_state = "whitepurplecorner" + }, +/area/medical/genetics) +"cbc" = ( +/obj/structure/table/glass, +/obj/item/weapon/folder/white, +/obj/item/weapon/pen, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"cbd" = ( +/obj/structure/closet/secure_closet/personal/patient, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "whiteblue" + }, +/area/medical/genetics) +"cbe" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/genetics) +"cbf" = ( +/obj/machinery/light, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/genetics) +"cbg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/genetics) +"cbh" = ( +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "whiteblue" + }, +/area/medical/genetics) +"cbi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"cbj" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"cbk" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/lights/mixed, +/obj/item/weapon/reagent_containers/spray/cleaner, +/obj/machinery/light, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"cbl" = ( +/obj/structure/table/glass, +/obj/item/clothing/suit/straight_jacket, +/obj/item/clothing/mask/muzzle, +/obj/item/device/radio/intercom{ + frequency = 1485; + name = "Station Intercom (Medbay)"; + pixel_y = -29 + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"cbm" = ( +/obj/structure/table/glass, +/obj/item/weapon/hand_labeler, +/obj/item/weapon/gun/syringe, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"cbn" = ( +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/obj/machinery/camera{ + c_tag = "Medbay Break Room"; + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"cbo" = ( +/obj/structure/table/glass, +/obj/item/weapon/crowbar/red, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"cbp" = ( +/obj/structure/table/glass, +/obj/item/clothing/tie/stethoscope, +/obj/item/clothing/tie/stethoscope, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"cbq" = ( +/obj/machinery/door/airlock/glass_command{ + desc = "The workplace of the station's foremost doctor of med-TURN ON THOSE FUCKING SUIT SENSORS."; + name = "Chief Medical Officer's Office"; + req_access_txt = "40" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"cbr" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"cbs" = ( +/obj/structure/table/glass, +/obj/item/weapon/paper_bin{ + pixel_x = -2; + pixel_y = 5 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"cbt" = ( +/obj/machinery/computer/crew, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"cbu" = ( +/obj/effect/decal/cleanable/blood, +/obj/item/weapon/scalpel, +/turf/open/floor/plating, +/area/medical/cmo) +"cbv" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "whitegreen" + }, +/area/medical/virology) +"cbw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whitegreen" + }, +/area/medical/virology) +"cbx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "whitegreen" + }, +/area/medical/virology) +"cby" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/glass_virology{ + name = "Isolation Room"; + req_access_txt = "39" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitegreen" + }, +/area/medical/virology) +"cbz" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology) +"cbA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology) +"cbB" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/virology) +"cbC" = ( +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whitegreen" + }, +/area/medical/virology) +"cbD" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/mob/living/carbon/monkey, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitegreen" + }, +/area/medical/virology) +"cbE" = ( +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whitegreen" + }, +/area/medical/virology) +"cbF" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/starboard) +"cbG" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'BOMB RANGE"; + name = "BOMB RANGE" + }, +/turf/closed/wall/r_wall, +/area/toxins/test_area) +"cbH" = ( +/turf/closed/wall/r_wall, +/area/toxins/test_area) +"cbI" = ( +/turf/closed/wall, +/area/mine/explored) +"cbJ" = ( +/obj/structure/closet, +/obj/item/weapon/poster/contraband, +/turf/open/floor/plating, +/area/mine/explored) +"cbK" = ( +/turf/closed/wall, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cbL" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 4; + frequency = 1441; + id = "air_in" + }, +/turf/open/floor/engine/vacuum, +/area/toxins/mixing) +"cbM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + on = 1 + }, +/obj/structure/sign/fire{ + pixel_y = -32 + }, +/obj/machinery/light/small, +/turf/open/floor/engine, +/area/toxins/mixing) +"cbN" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/obj/machinery/meter, +/obj/machinery/button/door{ + id = "mixvent"; + name = "Mixing Room Vent Control"; + pixel_x = -25; + pixel_y = 5; + req_access_txt = "7" + }, +/obj/machinery/button/ignition{ + id = "mixingsparker"; + pixel_x = -25; + pixel_y = -5 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warnwhitecorner" + }, +/area/toxins/mixing) +"cbO" = ( +/obj/structure/chair/office/light, +/obj/effect/landmark/start{ + name = "Scientist" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/mixing) +"cbP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/mixing) +"cbQ" = ( +/obj/item/device/assembly/signaler{ + pixel_y = 8 + }, +/obj/item/device/assembly/signaler{ + pixel_x = -8; + pixel_y = 5 + }, +/obj/item/device/assembly/signaler{ + pixel_x = 6; + pixel_y = 5 + }, +/obj/item/device/assembly/signaler{ + pixel_x = -2; + pixel_y = -2 + }, +/obj/structure/table/glass, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/toxins/mixing) +"cbR" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/toxins/mixing) +"cbS" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cbT" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cbU" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Genetics Research Maintenance"; + req_access_txt = "5; 9" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cbV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/airlock/medical{ + desc = "Temporary storage for departed organisms, mostly the crew."; + name = "Morgue"; + req_access_txt = "6;5" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/genetics) +"cbW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock/medical{ + desc = "Temporary storage for departed organisms, mostly the crew."; + name = "Morgue"; + req_access_txt = "6;5" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"cbX" = ( +/turf/closed/wall, +/area/medical/morgue) +"cbY" = ( +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/effect/landmark/start{ + name = "Medical Doctor" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"cbZ" = ( +/obj/structure/table/glass, +/obj/item/weapon/folder/white, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"cca" = ( +/obj/structure/table/glass, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"ccb" = ( +/obj/structure/chair/office/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"ccc" = ( +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel{ + icon_state = "whitebluecorner" + }, +/area/medical/medbay2) +"ccd" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/cable/cyan{ + icon_state = "0-4" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/cmo) +"cce" = ( +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"ccf" = ( +/obj/structure/chair/office/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"ccg" = ( +/obj/structure/table/glass, +/obj/item/weapon/folder/white, +/obj/item/weapon/pen, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"cch" = ( +/obj/structure/chair/office/light{ + dir = 8 + }, +/obj/effect/landmark/start{ + name = "Chief Medical Officer" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"cci" = ( +/obj/machinery/computer/med_data/laptop, +/obj/structure/table/glass, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Chief Medical Officer's Desk"; + departmentType = 5; + name = "Chief Medical Officer Requests Console"; + pixel_x = 32 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"ccj" = ( +/turf/open/floor/plating, +/area/medical/cmo) +"cck" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/medical/virology) +"ccl" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology) +"ccm" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology) +"ccn" = ( +/obj/machinery/door/airlock/glass_virology{ + name = "Monkey Pen"; + req_access_txt = "39" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitegreen" + }, +/area/medical/virology) +"cco" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/mob/living/carbon/monkey, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology) +"ccp" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitegreen" + }, +/area/medical/virology) +"ccq" = ( +/obj/structure/rack, +/obj/item/weapon/storage/toolbox/emergency, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"ccr" = ( +/turf/open/floor/plasteel/airless, +/area/toxins/test_area) +"ccs" = ( +/obj/machinery/camera{ + c_tag = "Toxins Test Chamber Fore"; + network = list("SS13","Toxins") + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel/airless, +/area/toxins/test_area) +"cct" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'BOMB RANGE"; + name = "BOMB RANGE" + }, +/turf/closed/wall, +/area/mine/explored) +"ccu" = ( +/obj/structure/closet/emcloset, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 1 + }, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"ccv" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/machinery/atmospherics/components/unary/vent_pump, +/turf/open/floor/plasteel, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"ccw" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Toxins Launch Room APC"; + pixel_x = -25 + }, +/obj/structure/cable/pink{ + d2 = 4; + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"ccx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"ccy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/toxins/mixing) +"ccz" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite" + }, +/area/toxins/mixing) +"ccA" = ( +/turf/open/floor/plasteel{ + icon_state = "warnwhite" + }, +/area/toxins/mixing) +"ccB" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warnwhitecorner" + }, +/area/toxins/mixing) +"ccC" = ( +/obj/item/device/transfer_valve{ + pixel_x = -5 + }, +/obj/item/device/transfer_valve{ + pixel_x = -5 + }, +/obj/item/device/transfer_valve, +/obj/item/device/transfer_valve, +/obj/item/device/transfer_valve{ + pixel_x = 5 + }, +/obj/item/device/transfer_valve{ + pixel_x = 5 + }, +/obj/structure/table/glass, +/obj/machinery/camera{ + c_tag = "Toxins Lab"; + dir = 1; + network = list("SS13","RD") + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/mixing) +"ccD" = ( +/obj/structure/table/glass, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/item/weapon/wrench, +/obj/item/weapon/screwdriver, +/turf/open/floor/plasteel{ + icon_state = "whitepurplecorner" + }, +/area/toxins/mixing) +"ccE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 2; + icon_state = "whitepurple" + }, +/area/toxins/mixing) +"ccF" = ( +/obj/item/device/assembly/timer{ + pixel_x = 5; + pixel_y = 4 + }, +/obj/item/device/assembly/timer{ + pixel_x = -4; + pixel_y = 2 + }, +/obj/item/device/assembly/timer{ + pixel_x = 6; + pixel_y = -4 + }, +/obj/item/device/assembly/timer, +/obj/structure/table/glass, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = -3; + pixel_y = -24 + }, +/obj/machinery/light_switch{ + name = "light switch "; + pixel_x = 11; + pixel_y = -22 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "whitepurple" + }, +/area/toxins/mixing) +"ccG" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Aft Hallway APC"; + pixel_x = -24 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"ccH" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"ccI" = ( +/obj/structure/rack, +/obj/item/device/radio/off, +/obj/item/device/flashlight, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"ccJ" = ( +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"ccK" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Genetics Research APC"; + pixel_y = 25 + }, +/obj/structure/cable/cyan{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/medical/genetics) +"ccL" = ( +/obj/structure/bodycontainer/morgue, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"ccM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"ccN" = ( +/obj/machinery/camera{ + c_tag = "Medbay Morgue" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"ccO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"ccP" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"ccQ" = ( +/obj/structure/filingcabinet/chestdrawer, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"ccR" = ( +/obj/structure/table/glass, +/obj/item/device/camera, +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"ccS" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"ccT" = ( +/obj/structure/chair/office/light{ + dir = 1 + }, +/obj/effect/landmark/start{ + name = "Medical Doctor" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"ccU" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"ccV" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"ccW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"ccX" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/cyan{ + icon_state = "0-4" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/cmo) +"ccY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/suit_storage_unit/cmo, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"ccZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"cda" = ( +/obj/structure/table/glass, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/obj/item/weapon/stamp/cmo, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"cdb" = ( +/obj/structure/filingcabinet/filingcabinet, +/obj/machinery/camera{ + c_tag = "Chief Medical Officer's Office"; + dir = 8 + }, +/obj/machinery/keycard_auth{ + pixel_x = 32 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"cdc" = ( +/obj/effect/decal/remains/human, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plating, +/area/medical/cmo) +"cdd" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whitegreen" + }, +/area/medical/virology) +"cde" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitegreen" + }, +/area/medical/virology) +"cdf" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whitegreen" + }, +/area/medical/virology) +"cdg" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology) +"cdh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology) +"cdi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology) +"cdj" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/virology) +"cdk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/mob/living/carbon/monkey, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitegreen" + }, +/area/medical/virology) +"cdl" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitegreen" + }, +/area/medical/virology) +"cdm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/medical/virology) +"cdn" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cdo" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cdp" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating/airless, +/area/toxins/test_area) +"cdq" = ( +/obj/structure/cable/pink{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plating/airless, +/area/toxins/test_area) +"cdr" = ( +/obj/machinery/door/airlock/external{ + name = "Toxins Test Chamber"; + req_access_txt = "0" + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/airless, +/area/toxins/test_area) +"cds" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/mine/explored) +"cdt" = ( +/obj/machinery/door/airlock/external{ + name = "External Airlock"; + req_access_txt = "0" + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cdu" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_y = -32 + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 8 + }, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cdv" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warning" + }, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cdw" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cdx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/closed/wall, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cdy" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cdz" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cdA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/pink{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cdB" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/heater{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/toxins/mixing) +"cdC" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/toxins/mixing) +"cdD" = ( +/obj/machinery/portable_atmospherics/canister, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/toxins/mixing) +"cdE" = ( +/obj/machinery/door/airlock/glass_research{ + name = "Toxins Lab"; + req_access_txt = "7" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "whitepurplefull" + }, +/area/toxins/mixing) +"cdF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cdG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cdH" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_one_access_txt = "5; 6; 9; 12; 22; 26; 28; 33; 37; 40" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cdI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cdJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cdK" = ( +/obj/structure/cable/cyan, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/power/apc{ + name = "Chapel APC"; + pixel_y = -24 + }, +/turf/open/floor/plating, +/area/chapel/main) +"cdL" = ( +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cdM" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cdN" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cdO" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cdP" = ( +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cdQ" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Morgue Maintenance"; + req_access_txt = "0"; + req_one_access_txt = "6; 28" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/medical/morgue) +"cdR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"cdS" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"cdT" = ( +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"cdU" = ( +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"cdV" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"cdW" = ( +/obj/machinery/door/airlock/medical{ + name = "Autopsy Room"; + req_access_txt = "6" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"cdX" = ( +/obj/machinery/newscaster{ + dir = 8; + pixel_x = -32 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"cdY" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"cdZ" = ( +/obj/structure/cable/white{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/obj/structure/table/glass, +/obj/item/weapon/cartridge/chemistry{ + pixel_y = 2 + }, +/obj/item/weapon/cartridge/medical, +/obj/item/weapon/cartridge/medical{ + pixel_x = 6; + pixel_y = 3 + }, +/obj/item/weapon/cartridge/medical{ + pixel_x = -2; + pixel_y = 6 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"cea" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"ceb" = ( +/obj/structure/closet/secure_closet/CMO, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"cec" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plating, +/area/medical/cmo) +"ced" = ( +/obj/structure/closet/secure_closet/personal/patient, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "whitegreen" + }, +/area/medical/virology) +"cee" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/medical, +/turf/open/floor/plasteel{ + icon_state = "whitegreen" + }, +/area/medical/virology) +"cef" = ( +/obj/structure/table/glass, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "whitegreen" + }, +/area/medical/virology) +"ceg" = ( +/obj/structure/table/glass, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/item/clothing/gloves/color/latex, +/obj/item/device/healthanalyzer, +/obj/item/clothing/glasses/hud/health, +/turf/open/floor/plasteel{ + icon_state = "whitegreencorner" + }, +/area/medical/virology) +"ceh" = ( +/obj/structure/table/glass, +/obj/item/weapon/reagent_containers/glass/bottle/cold{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/weapon/reagent_containers/glass/bottle/flu_virion, +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/open/floor/plasteel{ + icon_state = "whitegreen" + }, +/area/medical/virology) +"cei" = ( +/obj/structure/table/glass, +/obj/item/weapon/reagent_containers/spray/cleaner, +/obj/item/weapon/reagent_containers/syringe/antiviral, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/item/weapon/hand_labeler, +/obj/item/device/radio/headset/headset_med, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitegreencorner" + }, +/area/medical/virology) +"cej" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "whitegreen" + }, +/area/medical/virology) +"cek" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "whitegreen" + }, +/area/medical/virology) +"cel" = ( +/mob/living/carbon/monkey, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "whitegreen" + }, +/area/medical/virology) +"cem" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cen" = ( +/turf/closed/wall/r_wall, +/area/maintenance/starboardsolar) +"ceo" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/starboardsolar) +"cep" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/toxins/test_area) +"ceq" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Toxins Test Chamber APC"; + pixel_x = 24 + }, +/obj/structure/cable/pink, +/turf/open/floor/plating/airless, +/area/toxins/test_area) +"cer" = ( +/turf/closed/wall/r_wall, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"ces" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cet" = ( +/obj/machinery/door/airlock/research{ + desc = "Make sure to pack some snacks."; + name = "Toxins Launch Room"; + req_access_txt = "8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"ceu" = ( +/turf/closed/wall, +/area/medical/research{ + name = "Research Division" + }) +"cev" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Research Maintenance"; + req_access_txt = "47" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/medical/research{ + name = "Research Division" + }) +"cew" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cex" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cey" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cez" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"ceA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"ceB" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"ceC" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/medical/research{ + name = "Research Division" + }) +"ceD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/sortjunction{ + dir = 1; + icon_state = "pipe-j2s"; + sortType = 12 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"ceE" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"ceF" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"ceG" = ( +/turf/closed/wall, +/area/chapel/main) +"ceH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/chapel/main) +"ceI" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Chapel Maintenance"; + req_access_txt = "22"; + req_one_access_txt = "0" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/chapel/main) +"ceJ" = ( +/obj/structure/chair/stool, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"ceK" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/table/glass, +/obj/item/device/healthanalyzer, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"ceL" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"ceM" = ( +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"ceN" = ( +/obj/machinery/newscaster{ + hitstaken = 1; + pixel_y = -32 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"ceO" = ( +/obj/structure/closet/wardrobe/white/medical, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"ceP" = ( +/obj/structure/table/glass, +/obj/item/clothing/tie/stethoscope, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"ceQ" = ( +/obj/machinery/power/apc{ + name = "Chief Medical Officer's Office APC"; + pixel_y = -25 + }, +/obj/structure/cable/cyan{ + icon_state = "0-4" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"ceR" = ( +/obj/machinery/light, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"ceS" = ( +/obj/structure/bed/dogbed{ + desc = "A comfy-looking cat bed. You can even strap your pet in, in case the gravity turns off."; + name = "Runtime's bed" + }, +/obj/item/toy/cattoy, +/mob/living/simple_animal/pet/cat/Runtime, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"ceT" = ( +/obj/structure/table/glass, +/obj/item/clothing/glasses/hud/health, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"ceU" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'HIGH VOLTAGE'"; + icon_state = "shock"; + name = "HIGH VOLTAGE" + }, +/turf/closed/wall/r_wall, +/area/maintenance/starboardsolar) +"ceV" = ( +/obj/machinery/power/smes{ + charge = 1e+006 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/starboardsolar) +"ceW" = ( +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboardsolar) +"ceX" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_x = 32 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/starboardsolar) +"ceY" = ( +/obj/structure/cable, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/starboard) +"ceZ" = ( +/turf/open/floor/plasteel/airless{ + icon_state = "warningcorner" + }, +/area/toxins/test_area) +"cfa" = ( +/turf/open/floor/plasteel/airless{ + dir = 1; + icon_state = "warningcorner" + }, +/area/toxins/test_area) +"cfb" = ( +/obj/machinery/door/airlock/external{ + name = "Toxins Test Chamber"; + req_access_txt = "0" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate" + }, +/area/toxins/test_area) +"cfc" = ( +/obj/structure/table/glass, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/obj/item/weapon/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cfd" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 22 + }, +/turf/open/floor/plasteel, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cfe" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cff" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/light_switch{ + dir = 1; + pixel_y = 22 + }, +/obj/machinery/camera{ + c_tag = "Toxins Launch Room"; + dir = 8 + }, +/turf/open/floor/plasteel, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cfg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cfh" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/newscaster{ + dir = 8; + pixel_x = -32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whitepurple" + }, +/area/medical/research{ + name = "Research Division" + }) +"cfi" = ( +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/medical/research{ + name = "Research Division" + }) +"cfj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/table/glass, +/obj/item/clothing/glasses/science, +/obj/item/clothing/glasses/science{ + pixel_x = 2; + pixel_y = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/medical/research{ + name = "Research Division" + }) +"cfk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/vending/snack, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/medical/research{ + name = "Research Division" + }) +"cfl" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/vending/cigarette, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/medical/research{ + name = "Research Division" + }) +"cfm" = ( +/obj/structure/reagent_dispensers/water_cooler, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "whitepurple"; + dir = 5 + }, +/area/medical/research{ + name = "Research Division" + }) +"cfn" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/medical/research{ + name = "Research Division" + }) +"cfo" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cfp" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cfq" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cfr" = ( +/obj/structure/noticeboard{ + pixel_y = 32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cfs" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cft" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cfu" = ( +/obj/item/clothing/head/ushanka, +/obj/item/clothing/under/soviet, +/turf/open/floor/plating, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cfv" = ( +/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka, +/obj/item/toy/snappop, +/turf/open/floor/plating, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cfw" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/bodybags{ + pixel_x = 3; + pixel_y = 3 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cfx" = ( +/obj/structure/bodycontainer/crematorium, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cfy" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cfz" = ( +/obj/structure/closet/wardrobe/chaplain_black, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cfA" = ( +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cfB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cfC" = ( +/obj/machinery/firealarm{ + pixel_y = 25 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cfD" = ( +/obj/structure/closet/coffin, +/obj/machinery/camera{ + c_tag = "Chapel Coffin Storage" + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/chapel/main) +"cfE" = ( +/obj/structure/closet/coffin, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/chapel/main) +"cfF" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"cfG" = ( +/obj/structure/table/glass, +/obj/item/weapon/crowbar, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 29 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"cfH" = ( +/obj/structure/table/optable{ + desc = "Used to examine the departed for medical purposes."; + name = "Autopsy Table" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"cfI" = ( +/obj/structure/table/glass, +/obj/item/weapon/scalpel, +/obj/item/weapon/retractor, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"cfJ" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/closed/wall/r_wall, +/area/medical/cmo) +"cfK" = ( +/obj/structure/rack, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cfL" = ( +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cfM" = ( +/obj/structure/closet/crate, +/obj/item/weapon/electronics/apc, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cfN" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cfO" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/glass{ + amount = 10 + }, +/obj/item/stack/rods, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cfP" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cfQ" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cfR" = ( +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cfS" = ( +/obj/machinery/door/airlock/engineering{ + name = "Aft Starboard Solar Access"; + req_access_txt = "10" + }, +/turf/open/floor/plating, +/area/maintenance/starboardsolar) +"cfT" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/starboardsolar) +"cfU" = ( +/turf/open/floor/plating, +/area/maintenance/starboardsolar) +"cfV" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/starboardsolar) +"cfW" = ( +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance"; + req_access = null; + req_access_txt = "10; 13" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/starboardsolar) +"cfX" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/starboardsolar) +"cfY" = ( +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/starboard) +"cfZ" = ( +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/starboard) +"cga" = ( +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/starboard) +"cgb" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/starboard) +"cgc" = ( +/obj/machinery/power/tracker, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plasteel/airless{ + icon_state = "solarpanel" + }, +/area/solar/starboard) +"cgd" = ( +/turf/open/floor/plasteel/airless{ + dir = 4; + icon_state = "warning" + }, +/area/toxins/test_area) +"cge" = ( +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 8 + }, +/area/toxins/test_area) +"cgf" = ( +/turf/open/floor/plating/airless, +/area/toxins/test_area) +"cgg" = ( +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 4 + }, +/area/toxins/test_area) +"cgh" = ( +/turf/open/floor/plasteel/airless{ + dir = 8; + icon_state = "warning" + }, +/area/toxins/test_area) +"cgi" = ( +/turf/open/floor/plasteel/airless{ + dir = 8; + icon_state = "warningcorner" + }, +/area/toxins/test_area) +"cgj" = ( +/turf/open/floor/plasteel/airless{ + icon_state = "warning"; + dir = 1 + }, +/area/toxins/test_area) +"cgk" = ( +/turf/open/floor/plasteel/airless{ + dir = 5; + icon_state = "warning" + }, +/area/toxins/test_area) +"cgl" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/airless, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cgm" = ( +/obj/structure/table/glass, +/obj/machinery/computer/security/telescreen{ + desc = "Used for watching the test chamber."; + dir = 4; + layer = 4; + name = "Toxins Test Chamber Monitor"; + network = list("Test"); + pixel_x = -30 + }, +/turf/open/floor/plasteel, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cgn" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cgo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cgp" = ( +/turf/open/floor/plasteel, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cgq" = ( +/obj/machinery/door/airlock/research{ + desc = "Make sure to pack some snacks."; + name = "Toxins Launch Room"; + req_access_txt = "8" + }, +/turf/open/floor/plasteel, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cgr" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitepurple" + }, +/area/medical/research{ + name = "Research Division" + }) +"cgs" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cgt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/medical/research{ + name = "Research Division" + }) +"cgu" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/research{ + name = "Research Division" + }) +"cgv" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitepurplecorner" + }, +/area/medical/research{ + name = "Research Division" + }) +"cgw" = ( +/turf/open/floor/plasteel{ + icon_state = "whiteredcorner" + }, +/area/medical/research{ + name = "Research Division" + }) +"cgx" = ( +/obj/machinery/light, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "whitered" + }, +/area/medical/research{ + name = "Research Division" + }) +"cgy" = ( +/turf/open/floor/plasteel{ + icon_state = "whitered" + }, +/area/medical/research{ + name = "Research Division" + }) +"cgz" = ( +/obj/machinery/camera{ + c_tag = "Research Division Central"; + dir = 1; + network = list("SS13","RD") + }, +/turf/open/floor/plasteel{ + icon_state = "whitered" + }, +/area/medical/research{ + name = "Research Division" + }) +"cgA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "whitered" + }, +/area/medical/research{ + name = "Research Division" + }) +"cgB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whitered" + }, +/area/medical/research{ + name = "Research Division" + }) +"cgC" = ( +/obj/machinery/requests_console{ + department = "Research"; + departmentType = 2; + name = "Research Requests Console"; + pixel_y = -32 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whitered" + }, +/area/medical/research{ + name = "Research Division" + }) +"cgD" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 8 + }, +/area/medical/research{ + name = "Research Division" + }) +"cgE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cgF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cgG" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cgH" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cgI" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cgJ" = ( +/obj/machinery/button/crematorium{ + pixel_x = 25 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cgK" = ( +/obj/machinery/camera{ + c_tag = "Chapel Office"; + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cgL" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/carpet, +/area/chapel/main) +"cgM" = ( +/obj/effect/landmark/start{ + name = "Chaplain" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/chapel/main) +"cgN" = ( +/obj/item/weapon/paper_bin{ + pixel_x = -2; + pixel_y = 5 + }, +/obj/item/weapon/pen, +/obj/structure/table/wood, +/turf/open/floor/carpet, +/area/chapel/main) +"cgO" = ( +/obj/machinery/door/airlock{ + name = "Coffin Storage"; + req_access_txt = "27" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cgP" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"cgQ" = ( +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"cgR" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/bodybags{ + pixel_x = 3; + pixel_y = 3 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"cgS" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Medbay APC"; + pixel_y = 25 + }, +/obj/structure/cable/cyan{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/medical/medbay2) +"cgT" = ( +/mob/living/simple_animal/mouse, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cgU" = ( +/obj/structure/cable/cyan, +/obj/machinery/power/apc{ + name = "Incinerator APC"; + pixel_y = -24 + }, +/turf/open/floor/plating{ + icon_state = "warnplatecorner" + }, +/area/maintenance/incinerator) +"cgV" = ( +/turf/open/floor/plating{ + icon_state = "warnplate" + }, +/area/maintenance/asmaint) +"cgW" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 1 + }, +/area/maintenance/asmaint) +"cgX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cgY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cgZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cha" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"chb" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Aft Starboard Solar APC"; + pixel_x = -26; + pixel_y = 3 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/starboardsolar) +"chc" = ( +/obj/structure/chair/stool, +/obj/machinery/camera{ + c_tag = "Aft Starboard Solar Control"; + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/starboardsolar) +"chd" = ( +/obj/machinery/power/solar_control{ + id = "starboardsolar"; + name = "Aft Starboard Solar Control" + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/starboardsolar) +"che" = ( +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/starboard) +"chf" = ( +/turf/open/floor/plasteel/airless{ + icon_state = "warning" + }, +/area/toxins/test_area) +"chg" = ( +/turf/open/floor/plasteel/airless{ + dir = 6; + icon_state = "warning" + }, +/area/toxins/test_area) +"chh" = ( +/turf/open/floor/plasteel/airless{ + dir = 10; + icon_state = "warning" + }, +/area/toxins/test_area) +"chi" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel/airless{ + dir = 6; + icon_state = "warning" + }, +/area/toxins/test_area) +"chj" = ( +/obj/structure/table/glass, +/obj/machinery/button/massdriver{ + id = "toxinsdriver"; + pixel_x = 25 + }, +/obj/item/weapon/folder/white, +/obj/item/weapon/pen, +/turf/open/floor/plasteel, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"chk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/machinery/doppler_array, +/turf/open/floor/plasteel, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"chl" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/turf/open/floor/plasteel, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"chm" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Scientist" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"chn" = ( +/obj/structure/table/glass, +/obj/item/weapon/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cho" = ( +/obj/structure/table/glass, +/obj/item/device/flashlight/lamp, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"chp" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/landmark/start{ + name = "Scientist" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"chq" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/medical/research{ + name = "Research Division" + }) +"chr" = ( +/obj/machinery/door/airlock/glass_research{ + name = "Research Division Break Room"; + req_access_txt = "7" + }, +/turf/open/floor/plasteel{ + icon_state = "whitepurplefull" + }, +/area/medical/research{ + name = "Research Division" + }) +"chs" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitepurple" + }, +/area/medical/research{ + name = "Research Division" + }) +"cht" = ( +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 29 + }, +/turf/open/floor/plasteel{ + icon_state = "whitered"; + dir = 4 + }, +/area/medical/research{ + name = "Research Division" + }) +"chu" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/research{ + name = "Research Division" + }) +"chv" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/research{ + name = "Research Division" + }) +"chw" = ( +/obj/machinery/door/poddoor/preopen{ + id = "Biohazard"; + name = "Biohazard Containment Door" + }, +/turf/open/floor/plasteel{ + icon_state = "whitered"; + dir = 8 + }, +/area/medical/research{ + name = "Research Division" + }) +"chx" = ( +/obj/machinery/door/poddoor/preopen{ + id = "Biohazard"; + name = "Biohazard Containment Door" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"chy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitecorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"chz" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"chA" = ( +/obj/machinery/portable_atmospherics/canister/air, +/turf/open/floor/plating, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"chB" = ( +/obj/machinery/portable_atmospherics/scrubber, +/turf/open/floor/plating, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"chC" = ( +/obj/structure/bodycontainer/morgue, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"chD" = ( +/obj/machinery/camera{ + c_tag = "Chapel Crematorium"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"chE" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"chF" = ( +/obj/item/device/flashlight/lamp/green{ + pixel_x = 1; + pixel_y = 5 + }, +/obj/structure/table/wood, +/turf/open/floor/carpet, +/area/chapel/main) +"chG" = ( +/obj/item/weapon/nullrod, +/obj/structure/table/wood, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/carpet, +/area/chapel/main) +"chH" = ( +/obj/item/weapon/reagent_containers/food/drinks/bottle/holywater, +/obj/structure/table/wood, +/turf/open/floor/carpet, +/area/chapel/main) +"chI" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"chJ" = ( +/obj/structure/closet/coffin, +/obj/machinery/light/small, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/chapel/main) +"chK" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Morgue APC"; + pixel_y = 25 + }, +/obj/structure/cable/cyan{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/medical/morgue) +"chL" = ( +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"chM" = ( +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"chN" = ( +/turf/closed/wall, +/area/maintenance/incinerator) +"chO" = ( +/obj/machinery/door/airlock/maintenance{ + desc = "The 'grey toxins' area."; + name = "Incinerator Access"; + req_access_txt = "12" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/maintenance/asmaint) +"chP" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall, +/area/maintenance/incinerator) +"chQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/maintenance/incinerator) +"chR" = ( +/turf/closed/wall/r_wall, +/area/maintenance/incinerator) +"chS" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/starboard) +"chT" = ( +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 1 + }, +/area/toxins/test_area) +"chU" = ( +/turf/open/floor/plating/airless{ + icon_state = "warnplatecorner"; + dir = 4 + }, +/area/toxins/test_area) +"chV" = ( +/turf/open/floor/plating/airless{ + icon_state = "warnplatecorner"; + dir = 8 + }, +/area/toxins/test_area) +"chW" = ( +/obj/machinery/camera{ + c_tag = "Toxins Test Chamber Starboard"; + dir = 8; + network = list("SS13","Test") + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 1 + }, +/area/toxins/test_area) +"chX" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 1 + }, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"chY" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"chZ" = ( +/obj/machinery/door/window/southleft{ + name = "Mass Driver Door"; + req_access_txt = "7" + }, +/turf/open/floor/plasteel{ + icon_state = "loadingarea" + }, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cia" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/cups, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cib" = ( +/obj/structure/table/glass, +/obj/item/weapon/folder/white, +/obj/item/weapon/pen, +/obj/item/weapon/crowbar/red, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cic" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitepurplecorner" + }, +/area/medical/research{ + name = "Research Division" + }) +"cid" = ( +/turf/open/floor/plasteel{ + icon_state = "whitered"; + dir = 4 + }, +/area/medical/research{ + name = "Research Division" + }) +"cie" = ( +/obj/structure/closet/secure_closet/security/science, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 9 + }, +/area/medical/research{ + name = "Research Division" + }) +"cif" = ( +/obj/machinery/computer/security/telescreen{ + desc = "Used for watching various laboratories."; + name = "Research Monitor"; + network = list("RD"); + pixel_y = 28 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/obj/machinery/camera{ + c_tag = "Research Security Post"; + network = list("SS13","RD") + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 1 + }, +/area/medical/research{ + name = "Research Division" + }) +"cig" = ( +/obj/structure/table/glass, +/obj/item/weapon/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/obj/item/weapon/pen, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 1 + }, +/area/medical/research{ + name = "Research Division" + }) +"cih" = ( +/obj/structure/table/glass, +/obj/machinery/recharger{ + pixel_y = 4 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 5 + }, +/area/medical/research{ + name = "Research Division" + }) +"cii" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/preopen{ + id = "Biohazard"; + name = "Biohazard Containment Door" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/research{ + name = "Research Division" + }) +"cij" = ( +/turf/open/floor/plasteel{ + icon_state = "whitered"; + dir = 8 + }, +/area/medical/research{ + name = "Research Division" + }) +"cik" = ( +/obj/structure/closet/l3closet/scientist, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "warnwhite" + }, +/area/medical/research{ + name = "Research Division" + }) +"cil" = ( +/obj/structure/closet/firecloset, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite"; + dir = 1 + }, +/area/medical/research{ + name = "Research Division" + }) +"cim" = ( +/obj/structure/sign/nosmoking_2{ + pixel_y = 32 + }, +/obj/structure/closet/firecloset, +/turf/open/floor/plasteel{ + icon_state = "warnwhite"; + dir = 5 + }, +/area/medical/research{ + name = "Research Division" + }) +"cin" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitehall" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cio" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cip" = ( +/obj/machinery/door/airlock{ + name = "Aft Emergency Storage"; + req_access_txt = "0" + }, +/turf/open/floor/plating, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"ciq" = ( +/turf/open/floor/plating, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cir" = ( +/obj/item/weapon/storage/box/lights/mixed, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cis" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cit" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"ciu" = ( +/obj/machinery/door/airlock{ + name = "Crematorium"; + req_access_txt = "27" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"civ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"ciw" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/chapel/main) +"cix" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/chapel/main) +"ciy" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/carpet, +/area/chapel/main) +"ciz" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"ciA" = ( +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"ciB" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"ciC" = ( +/turf/closed/wall/r_wall, +/area/atmos) +"ciD" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Firefighting equipment"; + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"ciE" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/incinerator) +"ciF" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/incinerator) +"ciG" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 10 + }, +/obj/machinery/camera{ + c_tag = "Incinerator"; + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/incinerator) +"ciH" = ( +/turf/open/floor/plating, +/area/maintenance/incinerator) +"ciI" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/structure/sign/deathsposal{ + pixel_y = 32 + }, +/turf/open/floor/plating, +/area/maintenance/incinerator) +"ciJ" = ( +/obj/machinery/doorButtons/airlock_controller{ + idExterior = "incinerator_airlock_exterior"; + idSelf = "incinerator_access_control"; + idInterior = "incinerator_airlock_interior"; + name = "Incinerator Access Console"; + pixel_x = 24; + pixel_y = -8; + req_access_txt = "12" + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "Gas Pump" + }, +/turf/open/floor/plating{ + icon_state = "warnplatecorner" + }, +/area/maintenance/incinerator) +"ciK" = ( +/obj/machinery/doorButtons/access_button{ + idDoor = "incinerator_airlock_exterior"; + layer = 3.1; + idSelf = "incinerator_access_control"; + name = "Incinerator airlock control"; + pixel_x = -24; + pixel_y = -8 + }, +/obj/structure/sign/fire{ + pixel_y = 32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/incinerator) +"ciL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/maintenance/incinerator) +"ciM" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + external_pressure_bound = 0; + initialize_directions = 1; + internal_pressure_bound = 4000; + on = 1; + pressure_checks = 2; + pump_direction = 0 + }, +/turf/open/floor/engine/vacuum, +/area/maintenance/incinerator) +"ciN" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_y = 32 + }, +/turf/open/floor/engine/vacuum, +/area/maintenance/incinerator) +"ciO" = ( +/obj/machinery/door/poddoor{ + id = "disvent"; + name = "Incinerator Vent" + }, +/turf/open/floor/engine/vacuum, +/area/maintenance/incinerator) +"ciP" = ( +/obj/structure/lattice, +/turf/open/space, +/area/maintenance/incinerator) +"ciQ" = ( +/obj/machinery/camera{ + c_tag = "Toxins Test Chamber Port"; + dir = 4; + network = list("SS13","Test") + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plasteel/airless, +/area/toxins/test_area) +"ciR" = ( +/turf/closed/indestructible/riveted{ + name = "Super Reinforced Wall" + }, +/area/toxins/test_area) +"ciS" = ( +/obj/item/device/radio/beacon, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/toxins/test_area) +"ciT" = ( +/obj/machinery/door/poddoor{ + id = "toxinsdriver"; + name = "Toxins Launcher Bay Door" + }, +/turf/open/floor/plating/airless, +/area/toxins/test_area) +"ciU" = ( +/obj/machinery/door/poddoor{ + id = "toxinsdriver"; + name = "Toxins Launcher Bay Door" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"ciV" = ( +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 8 + }, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"ciW" = ( +/turf/open/floor/plating, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"ciX" = ( +/obj/machinery/mass_driver{ + dir = 8; + id = "toxinsdriver" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"ciY" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/requests_console{ + department = "Research"; + departmentType = 2; + name = "Research Requests Console"; + pixel_x = -30 + }, +/obj/structure/closet/wardrobe/science_white, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "whitepurple" + }, +/area/medical/research{ + name = "Research Division" + }) +"ciZ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + external_pressure_bound = 101.325; + on = 1; + pressure_checks = 0 + }, +/turf/open/floor/plasteel{ + icon_state = "whitepurple" + }, +/area/medical/research{ + name = "Research Division" + }) +"cja" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whitepurple" + }, +/area/medical/research{ + name = "Research Division" + }) +"cjb" = ( +/obj/structure/closet/emcloset, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "whitepurple" + }, +/area/medical/research{ + name = "Research Division" + }) +"cjc" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/medical/research{ + name = "Research Division" + }) +"cjd" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cje" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whitered"; + dir = 4 + }, +/area/medical/research{ + name = "Research Division" + }) +"cjf" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/research{ + name = "Research Division" + }) +"cjg" = ( +/obj/structure/filingcabinet, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/medical/research{ + name = "Research Division" + }) +"cjh" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/medical/research{ + name = "Research Division" + }) +"cji" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/medical/research{ + name = "Research Division" + }) +"cjj" = ( +/obj/machinery/computer/secure_data, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/medical/research{ + name = "Research Division" + }) +"cjk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "whitered"; + dir = 8 + }, +/area/medical/research{ + name = "Research Division" + }) +"cjl" = ( +/obj/machinery/door/airlock/research{ + desc = "The secured entrance to the main Research Division."; + id_tag = "ResearchFoyer"; + name = "Research Division Access"; + req_access_txt = "47" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warnwhite" + }, +/area/medical/research{ + name = "Research Division" + }) +"cjm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhite" + }, +/area/medical/research{ + name = "Research Division" + }) +"cjn" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warnwhite" + }, +/area/medical/research{ + name = "Research Division" + }) +"cjo" = ( +/obj/machinery/door/airlock/research{ + desc = "The secured entrance to the main Research Division."; + id_tag = "ResearchFoyer"; + name = "Research Division Access"; + req_access_txt = "47" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhite" + }, +/area/medical/research{ + name = "Research Division" + }) +"cjp" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitehall" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cjq" = ( +/obj/structure/rack, +/obj/item/device/radio{ + pixel_y = 6 + }, +/obj/item/weapon/crowbar/red, +/turf/open/floor/plating, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cjr" = ( +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cjs" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cjt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cju" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/chapel/main) +"cjv" = ( +/obj/machinery/requests_console{ + department = "Chapel"; + departmentType = 2; + name = "Chapel Requests Console"; + pixel_y = -32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cjw" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cjx" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cjy" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cjz" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + broadcasting = 1; + frequency = 1480; + name = "Confessional Intercom"; + pixel_y = 26 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cjA" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/tinted/fulltile, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cjB" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/item/device/radio/intercom{ + broadcasting = 1; + frequency = 1480; + name = "Confessional Intercom"; + pixel_y = 26 + }, +/obj/effect/landmark{ + name = "blobstart" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cjC" = ( +/obj/structure/cable/cyan, +/obj/machinery/power/apc{ + name = "Atmospherics APC"; + pixel_y = -24 + }, +/turf/open/floor/plating, +/area/atmos) +"cjD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cjE" = ( +/obj/structure/closet/crate, +/obj/item/device/assembly/prox_sensor, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cjF" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cjG" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cjH" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cjI" = ( +/obj/machinery/portable_atmospherics/pump, +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/atmos) +"cjJ" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/air, +/turf/open/floor/plasteel, +/area/atmos) +"cjK" = ( +/obj/machinery/atmospherics/components/trinary/filter{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cjL" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cjM" = ( +/obj/machinery/portable_atmospherics/scrubber, +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/atmos) +"cjN" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cjO" = ( +/obj/structure/closet, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cjP" = ( +/obj/structure/sign/nosmoking_2{ + pixel_x = -28 + }, +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/incinerator) +"cjQ" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/incinerator) +"cjR" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 4 + }, +/mob/living/simple_animal/mouse, +/turf/open/floor/plating, +/area/maintenance/incinerator) +"cjS" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8 + }, +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plating, +/area/maintenance/incinerator) +"cjT" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible, +/obj/machinery/meter, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/maintenance/incinerator) +"cjU" = ( +/obj/machinery/door/airlock/glass{ + autoclose = 0; + frequency = 1449; + heat_proof = 1; + icon_state = "door_locked"; + id_tag = "incinerator_airlock_interior"; + locked = 1; + name = "Mixing Room Interior Airlock"; + req_access_txt = "12" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 8 + }, +/area/maintenance/incinerator) +"cjV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/incinerator) +"cjW" = ( +/obj/machinery/door/airlock/glass{ + autoclose = 0; + frequency = 1449; + heat_proof = 1; + icon_state = "door_locked"; + id_tag = "incinerator_airlock_exterior"; + locked = 1; + name = "Mixing Room Exterior Airlock"; + req_access_txt = "12" + }, +/turf/open/floor/engine/vacuum, +/area/maintenance/incinerator) +"cjX" = ( +/turf/open/floor/engine/vacuum, +/area/maintenance/incinerator) +"cjY" = ( +/turf/open/floor/plating/airless{ + icon_state = "warnplate" + }, +/area/toxins/test_area) +"cjZ" = ( +/turf/open/floor/plating/airless{ + icon_state = "warnplatecorner"; + dir = 1 + }, +/area/toxins/test_area) +"cka" = ( +/turf/open/floor/plating/airless{ + icon_state = "warnplatecorner" + }, +/area/toxins/test_area) +"ckb" = ( +/turf/closed/wall/r_wall, +/area/toxins/storage) +"ckc" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"ckd" = ( +/obj/structure/reagent_dispensers/peppertank{ + pixel_x = -32 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 10 + }, +/area/medical/research{ + name = "Research Division" + }) +"cke" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/medical/research{ + name = "Research Division" + }) +"ckf" = ( +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/medical/research{ + name = "Research Division" + }) +"ckg" = ( +/obj/structure/table/glass, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = -3; + pixel_y = -24 + }, +/obj/machinery/light_switch{ + name = "light switch "; + pixel_x = 11; + pixel_y = -22 + }, +/obj/machinery/button/door{ + desc = "A remote control switch for the medbay foyer."; + id = "ResearchFoyer"; + name = "Research Door Control"; + normaldoorcontrol = 1; + pixel_y = -4 + }, +/obj/machinery/button/door{ + id = "Biohazard"; + name = "Biohazard Shutter Control"; + pixel_y = 6; + req_access_txt = "47" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 6 + }, +/area/medical/research{ + name = "Research Division" + }) +"ckh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "whitered"; + dir = 8 + }, +/area/medical/research{ + name = "Research Division" + }) +"cki" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/medical/research{ + name = "Research Division" + }) +"ckj" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "warnwhite" + }, +/area/medical/research{ + name = "Research Division" + }) +"ckk" = ( +/turf/open/floor/plasteel{ + icon_state = "warnwhite" + }, +/area/medical/research{ + name = "Research Division" + }) +"ckl" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/obj/machinery/camera{ + c_tag = "Research Divison Access"; + dir = 1; + network = list("SS13","RD") + }, +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "warnwhite" + }, +/area/medical/research{ + name = "Research Division" + }) +"ckm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitehall" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"ckn" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/chapel/main) +"cko" = ( +/obj/machinery/door/airlock/glass{ + name = "Chapel Office"; + req_access_txt = "22" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"ckp" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/chapel/main) +"ckq" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall, +/area/chapel/main) +"ckr" = ( +/obj/machinery/door/morgue{ + name = "Confession Booth" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cks" = ( +/obj/machinery/door/morgue{ + name = "Confession Booth (Chaplain)"; + req_access_txt = "22" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"ckt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/atmos) +"cku" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Atmospherics Maintenance"; + req_access_txt = "24" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"ckv" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/atmos) +"ckw" = ( +/obj/machinery/atmospherics/pipe/manifold4w/supplymain/visible, +/obj/machinery/meter, +/turf/open/floor/plasteel, +/area/atmos) +"ckx" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cky" = ( +/turf/open/floor/plasteel, +/area/atmos) +"ckz" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"ckA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/atmos) +"ckB" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/visible, +/turf/open/floor/plasteel, +/area/atmos) +"ckC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 9 + }, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 29 + }, +/turf/open/floor/plasteel, +/area/atmos) +"ckD" = ( +/obj/structure/rack, +/obj/item/clothing/suit/fire/firefighter, +/obj/item/clothing/mask/gas, +/obj/item/weapon/extinguisher, +/obj/item/clothing/head/hardhat/red, +/obj/item/clothing/glasses/meson, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"ckE" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plating, +/area/maintenance/incinerator) +"ckF" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible, +/turf/open/floor/plating, +/area/maintenance/incinerator) +"ckG" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/incinerator) +"ckH" = ( +/obj/machinery/button/ignition{ + id = "Incinerator"; + pixel_x = 24; + pixel_y = 8 + }, +/obj/machinery/button/door{ + id = "disvent"; + name = "Incinerator Vent Control"; + pixel_y = -24; + req_access_txt = "12" + }, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/obj/machinery/meter, +/obj/machinery/light/small, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 8 + }, +/area/maintenance/incinerator) +"ckI" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/maintenance/incinerator) +"ckJ" = ( +/obj/machinery/doorButtons/access_button{ + idDoor = "incinerator_airlock_interior"; + idSelf = "incinerator_access_control"; + name = "Incinerator airlock control"; + pixel_x = 24; + pixel_y = 8 + }, +/obj/structure/sign/fire{ + pixel_y = -32 + }, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/maintenance/incinerator) +"ckK" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 8; + frequency = 1441; + id = "air_in" + }, +/obj/machinery/sparker{ + id = "Incinerator"; + pixel_x = -25 + }, +/turf/open/floor/engine/vacuum, +/area/maintenance/incinerator) +"ckL" = ( +/turf/open/floor/plasteel/airless{ + dir = 9; + icon_state = "warning" + }, +/area/toxins/test_area) +"ckM" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel/airless{ + dir = 5; + icon_state = "warning" + }, +/area/toxins/test_area) +"ckN" = ( +/obj/machinery/portable_atmospherics/canister/toxins, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/toxins/storage) +"ckO" = ( +/obj/machinery/portable_atmospherics/canister/toxins, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/toxins/storage) +"ckP" = ( +/turf/closed/wall, +/area/toxins/storage) +"ckQ" = ( +/obj/machinery/portable_atmospherics/canister, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/toxins/storage) +"ckR" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"ckS" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitepurplecorner" + }, +/area/medical/research{ + name = "Research Division" + }) +"ckT" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/medical/research{ + name = "Research Division" + }) +"ckU" = ( +/obj/machinery/atmospherics/components/unary/vent_pump, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitepurplecorner" + }, +/area/medical/research{ + name = "Research Division" + }) +"ckV" = ( +/obj/machinery/firealarm{ + pixel_y = 25 + }, +/obj/machinery/camera{ + c_tag = "Research Divison South"; + network = list("SS13","RD") + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"ckW" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"ckX" = ( +/obj/machinery/door/airlock/glass_security{ + name = "Security Post"; + req_access_txt = "63" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteredfull" + }, +/area/medical/research{ + name = "Research Division" + }) +"ckY" = ( +/obj/machinery/door/poddoor/preopen{ + id = "Biohazard"; + name = "Biohazard Containment Door" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "whitered"; + dir = 8 + }, +/area/medical/research{ + name = "Research Division" + }) +"ckZ" = ( +/obj/machinery/door/poddoor/preopen{ + id = "Biohazard"; + name = "Biohazard Containment Door" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cla" = ( +/obj/machinery/door/airlock/research{ + desc = "Emergency showers for hygiene or chemical incidents."; + id_tag = "ResearchFoyer"; + name = "Research Division Access"; + req_access_txt = "47" + }, +/turf/open/floor/plasteel, +/area/medical/research{ + name = "Research Division" + }) +"clb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/camera/autoname{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitecorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"clc" = ( +/obj/item/weapon/paper_bin{ + pixel_x = -2; + pixel_y = 5 + }, +/obj/item/weapon/pen, +/obj/structure/table/wood, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cld" = ( +/obj/item/weapon/reagent_containers/food/snacks/grown/harebell{ + pixel_y = 4 + }, +/obj/item/weapon/reagent_containers/food/snacks/grown/harebell{ + pixel_y = 4 + }, +/obj/item/weapon/reagent_containers/food/snacks/grown/harebell{ + pixel_y = 4 + }, +/obj/structure/table/wood, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cle" = ( +/obj/item/weapon/reagent_containers/food/snacks/grown/poppy{ + pixel_y = 2 + }, +/obj/item/weapon/reagent_containers/food/snacks/grown/poppy{ + pixel_y = 2 + }, +/obj/item/weapon/reagent_containers/food/snacks/grown/poppy{ + pixel_y = 2 + }, +/obj/structure/table/wood, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"clf" = ( +/obj/structure/table/wood, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"clg" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"clh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cli" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"clj" = ( +/obj/machinery/requests_console{ + department = "Chapel"; + departmentType = 2; + name = "Chapel Requests Console"; + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"clk" = ( +/obj/machinery/pipedispenser/disposal, +/turf/open/floor/plasteel, +/area/atmos) +"cll" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 0; + name = "Waste to Filter"; + on = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"clm" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cln" = ( +/obj/structure/rack, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/gloves/color/black, +/obj/item/clothing/gloves/color/black, +/obj/item/clothing/gloves/color/black, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/turf/open/floor/plasteel, +/area/atmos) +"clo" = ( +/obj/item/weapon/crowbar, +/obj/item/weapon/wrench, +/obj/item/weapon/grenade/chem_grenade/metalfoam, +/obj/item/weapon/grenade/chem_grenade/metalfoam, +/obj/item/weapon/grenade/chem_grenade/metalfoam, +/obj/item/weapon/grenade/chem_grenade/metalfoam, +/obj/structure/table, +/turf/open/floor/plasteel, +/area/atmos) +"clp" = ( +/obj/machinery/space_heater, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/atmos) +"clq" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "Main to Pumps"; + on = 0 + }, +/turf/open/floor/plasteel, +/area/atmos) +"clr" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cls" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 2; + name = "Filters to Waste"; + on = 0 + }, +/turf/open/floor/plasteel, +/area/atmos) +"clt" = ( +/obj/machinery/camera{ + c_tag = "Atmospherics North East"; + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel, +/area/atmos) +"clu" = ( +/turf/closed/wall/r_wall, +/area/maintenance/asmaint) +"clv" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/starboard) +"clw" = ( +/obj/machinery/portable_atmospherics/scrubber/huge, +/turf/open/floor/plasteel, +/area/toxins/storage) +"clx" = ( +/turf/open/floor/plasteel, +/area/toxins/storage) +"cly" = ( +/obj/structure/cable/pink{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/toxins/storage) +"clz" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/toxins/storage) +"clA" = ( +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/obj/machinery/camera{ + c_tag = "Toxins Storage"; + network = list("SS13","RD") + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/toxins/storage) +"clB" = ( +/obj/machinery/door/airlock/research{ + name = "Toxins Storage"; + req_access_txt = "8" + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/toxins/storage) +"clC" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"clD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/structure/cable/pink{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"clE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"clF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"clG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"clH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 4 + }, +/area/medical/research{ + name = "Research Division" + }) +"clI" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "whitered"; + dir = 1 + }, +/area/medical/research{ + name = "Research Division" + }) +"clJ" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 1 + }, +/area/medical/research{ + name = "Research Division" + }) +"clK" = ( +/obj/structure/cable/pink{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"clL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 4 + }, +/area/medical/research{ + name = "Research Division" + }) +"clM" = ( +/obj/machinery/camera{ + c_tag = "Research Division Aft Starboard"; + network = list("SS13","RD") + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whitered"; + dir = 1 + }, +/area/medical/research{ + name = "Research Division" + }) +"clN" = ( +/obj/machinery/newscaster/security_unit{ + pixel_z = 32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whitered"; + dir = 1 + }, +/area/medical/research{ + name = "Research Division" + }) +"clO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 1 + }, +/area/medical/research{ + name = "Research Division" + }) +"clP" = ( +/obj/machinery/shower{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/medical/research{ + name = "Research Division" + }) +"clQ" = ( +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/medical/research{ + name = "Research Division" + }) +"clR" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/medical/research{ + name = "Research Division" + }) +"clS" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"clT" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/item/candle, +/obj/structure/table/wood, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"clU" = ( +/obj/item/candle, +/obj/structure/table/wood, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"clV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/chapel/main) +"clW" = ( +/obj/machinery/camera{ + c_tag = "Chapel Port"; + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"clX" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "chapel" + }, +/area/chapel/main) +"clY" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "chapel" + }, +/area/chapel/main) +"clZ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cma" = ( +/obj/structure/chair/stool, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "chapel" + }, +/area/chapel/main) +"cmb" = ( +/obj/structure/chair/stool, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "chapel" + }, +/area/chapel/main) +"cmc" = ( +/turf/open/floor/carpet, +/area/chapel/main) +"cmd" = ( +/obj/machinery/pipedispenser, +/turf/open/floor/plasteel, +/area/atmos) +"cme" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cmf" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cmg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/visible, +/turf/open/floor/plasteel, +/area/atmos) +"cmh" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible, +/turf/open/floor/plasteel, +/area/atmos) +"cmi" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cmj" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Mix to Waste"; + on = 0 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cmk" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 10; + initialize_directions = 12 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cml" = ( +/obj/machinery/door/window/eastright, +/turf/open/floor/plasteel, +/area/atmos) +"cmm" = ( +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"cmn" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/atmos) +"cmo" = ( +/turf/open/floor/plasteel/airless{ + dir = 4; + icon_state = "warningcorner" + }, +/area/toxins/test_area) +"cmp" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/toxins/storage) +"cmq" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/toxins/storage) +"cmr" = ( +/obj/machinery/portable_atmospherics/canister/nitrous_oxide, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/toxins/storage) +"cms" = ( +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/toxins/storage) +"cmt" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cmu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research) +"cmv" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cmw" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cmx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cmy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cmz" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/chapel/main) +"cmA" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "chapel" + }, +/area/chapel/main) +"cmB" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "chapel" + }, +/area/chapel/main) +"cmC" = ( +/obj/structure/chair/stool, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "chapel" + }, +/area/chapel/main) +"cmD" = ( +/obj/structure/chair/stool, +/turf/open/floor/plasteel{ + icon_state = "chapel" + }, +/area/chapel/main) +"cmE" = ( +/obj/item/candle, +/obj/structure/table/wood, +/turf/open/floor/carpet, +/area/chapel/main) +"cmF" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/chapel/main) +"cmG" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/pipedispenser/disposal/transit_tube, +/turf/open/floor/plasteel, +/area/atmos) +"cmH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/turf/open/floor/plasteel, +/area/atmos) +"cmI" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cmJ" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Mix to Distro" + }, +/turf/open/floor/plasteel, +/area/atmos) +"cmK" = ( +/obj/machinery/atmospherics/pipe/manifold/yellow/visible{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cmL" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cmM" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/visible, +/turf/open/floor/plasteel, +/area/atmos) +"cmN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cmO" = ( +/obj/machinery/atmospherics/pipe/manifold/yellow/visible{ + dir = 4; + initialize_directions = 11 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cmP" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cmQ" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Toxins Maintenance"; + req_access_txt = "8" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cmR" = ( +/obj/structure/sign/biohazard, +/turf/closed/wall/r_wall, +/area/medical/research{ + name = "Research Division" + }) +"cmS" = ( +/obj/machinery/door/airlock/research{ + name = "Xenobiology"; + req_access_txt = "47" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "whitegreenfull" + }, +/area/medical/research{ + name = "Research Division" + }) +"cmT" = ( +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cmU" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cmV" = ( +/obj/machinery/light/small, +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/medical/research{ + name = "Research Division" + }) +"cmW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cmX" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/sortjunction{ + dir = 2; + icon_state = "pipe-j2s"; + sortType = 17 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cmY" = ( +/obj/machinery/door/airlock/glass{ + name = "Chapel Foyer"; + req_access_txt = "0" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cmZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cna" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/chapel/main) +"cnb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/chapel/main) +"cnc" = ( +/obj/machinery/door/airlock/glass{ + name = "Chapel"; + req_access_txt = "0" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/chapel/main) +"cnd" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/chapel/main) +"cne" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/open/floor/carpet, +/area/chapel/main) +"cnf" = ( +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/obj/structure/table/wood, +/turf/open/floor/carpet, +/area/chapel/main) +"cng" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/carpet, +/area/chapel/main) +"cnh" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cni" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cnj" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cnk" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Atmospherics North"; + dir = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cnl" = ( +/obj/machinery/atmospherics/pipe/manifold/supplymain/visible, +/turf/open/floor/plasteel, +/area/atmos) +"cnm" = ( +/obj/machinery/atmospherics/pipe/manifold/supplymain/visible{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cnn" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/turf/open/floor/plasteel, +/area/atmos) +"cno" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Air to Distro"; + on = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cnp" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/turf/open/floor/plasteel, +/area/atmos) +"cnq" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + dir = 10; + initialize_directions = 12 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cnr" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/turf/open/floor/plasteel, +/area/atmos) +"cns" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"cnt" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/maintenance/asmaint2) +"cnu" = ( +/obj/machinery/hydroponics/soil, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/maintenance/asmaint2) +"cnv" = ( +/obj/machinery/power/apc{ + cell_type = 5000; + dir = 8; + name = "Toxins Storage APC"; + pixel_x = -25 + }, +/obj/structure/cable/pink, +/turf/open/floor/plating, +/area/toxins/storage) +"cnw" = ( +/turf/closed/wall/r_wall, +/area/toxins/xenobiology) +"cnx" = ( +/obj/structure/disposaloutlet, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"cny" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"cnz" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio2"; + name = "Containment Door" + }, +/obj/structure/cable/pink{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/toxins/xenobiology) +"cnA" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warning" + }, +/area/toxins/xenobiology) +"cnB" = ( +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"cnC" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warnwhitecorner" + }, +/area/toxins/xenobiology) +"cnD" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"cnE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhitecorner" + }, +/area/toxins/xenobiology) +"cnF" = ( +/obj/machinery/camera{ + c_tag = "Xenobiology North"; + dir = 6; + network = list("SS13","RD") + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite"; + dir = 5 + }, +/area/toxins/xenobiology) +"cnG" = ( +/obj/structure/table/reinforced, +/obj/machinery/button/door{ + id = "xenobio3"; + name = "Containment Blast Doors"; + req_access_txt = "55" + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warning" + }, +/area/toxins/xenobiology) +"cnH" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio3"; + name = "Containment Door" + }, +/obj/structure/cable/pink{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/toxins/xenobiology) +"cnI" = ( +/turf/open/floor/engine, +/area/toxins/xenobiology) +"cnJ" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Research Maintenance"; + req_access_txt = "47" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cnK" = ( +/turf/closed/wall/r_wall, +/area/toxins/explab) +"cnL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock/research{ + name = "Experimentation Lab"; + req_access_txt = "7" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/explab) +"cnM" = ( +/turf/closed/wall/r_wall, +/area/teleporter) +"cnN" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cnO" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cnP" = ( +/obj/machinery/door/airlock/glass{ + name = "Chapel Foyer"; + req_access_txt = "0" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cnQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/carpet, +/area/chapel/main) +"cnR" = ( +/obj/machinery/door/airlock/glass{ + name = "Chapel"; + req_access_txt = "0" + }, +/turf/open/floor/carpet, +/area/chapel/main) +"cnS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/carpet, +/area/chapel/main) +"cnT" = ( +/obj/machinery/hologram/holopad, +/turf/open/floor/carpet, +/area/chapel/main) +"cnU" = ( +/obj/structure/table/wood, +/turf/open/floor/carpet, +/area/chapel/main) +"cnV" = ( +/obj/machinery/camera{ + c_tag = "Chapel Starboard"; + dir = 8 + }, +/turf/open/floor/carpet, +/area/chapel/main) +"cnW" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/visible, +/turf/open/floor/plasteel, +/area/atmos) +"cnX" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plasteel, +/area/atmos) +"cnY" = ( +/turf/closed/wall, +/area/atmos) +"cnZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/turf/closed/wall, +/area/atmos) +"coa" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/visible, +/turf/open/floor/plasteel, +/area/atmos) +"cob" = ( +/obj/structure/grille, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/mine/explored) +"coc" = ( +/obj/machinery/camera{ + c_tag = "Toxins Test Chamber Aft"; + dir = 1; + network = list("SS13","Test") + }, +/obj/machinery/light/small, +/turf/open/floor/plasteel/airless, +/area/toxins/test_area) +"cod" = ( +/obj/machinery/vending/hydroseeds, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/maintenance/asmaint2) +"coe" = ( +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/maintenance/asmaint2) +"cof" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"cog" = ( +/mob/living/simple_animal/slime, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"coh" = ( +/obj/machinery/door/window/northleft{ + dir = 8; + name = "Containment Pen"; + req_access_txt = "55" + }, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio2"; + name = "Containment Door" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/pink{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"coi" = ( +/obj/machinery/door/window/northleft{ + dir = 4; + name = "Containment Pen"; + req_access_txt = "55" + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warning" + }, +/area/toxins/xenobiology) +"coj" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/pink{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"cok" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"col" = ( +/obj/machinery/hologram/holopad, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"com" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"con" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/pink{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"coo" = ( +/obj/machinery/door/window/northleft{ + dir = 8; + name = "Containment Pen"; + req_access_txt = "55" + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warning" + }, +/area/toxins/xenobiology) +"cop" = ( +/obj/machinery/door/window/northleft{ + dir = 4; + name = "Containment Pen"; + req_access_txt = "55" + }, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio3"; + name = "Containment Door" + }, +/obj/structure/cable/pink{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"coq" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"cor" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cos" = ( +/obj/structure/closet/l3closet/scientist, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/explab) +"cot" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/explab) +"cou" = ( +/obj/machinery/camera{ + c_tag = "Experimentor Lab"; + dir = 2; + network = list("SS13","RD") + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/explab) +"cov" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/machinery/shieldwallgen, +/turf/open/floor/plasteel{ + icon_state = "bot"; + dir = 1 + }, +/area/teleporter) +"cow" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/machinery/shieldwallgen, +/turf/open/floor/plasteel{ + icon_state = "bot"; + dir = 1 + }, +/area/teleporter) +"cox" = ( +/obj/machinery/shieldwallgen, +/turf/open/floor/plasteel{ + icon_state = "bot"; + dir = 1 + }, +/area/teleporter) +"coy" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"coz" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-j2"; + dir = 2 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"coA" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/chapel/main) +"coB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"coC" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"coD" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "chapel" + }, +/area/chapel/main) +"coE" = ( +/obj/structure/chair/stool, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "chapel" + }, +/area/chapel/main) +"coF" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plasteel, +/area/atmos) +"coG" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/machinery/portable_atmospherics/canister, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/atmos) +"coH" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/machinery/portable_atmospherics/canister, +/obj/item/weapon/wrench, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/atmos) +"coI" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/atmos) +"coJ" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/atmos) +"coK" = ( +/obj/structure/table, +/obj/item/device/t_scanner, +/obj/item/device/t_scanner, +/obj/item/clothing/head/welding, +/obj/item/clothing/head/welding, +/obj/item/clothing/head/welding, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "yellow" + }, +/area/atmos) +"coL" = ( +/obj/structure/table, +/obj/item/weapon/storage/belt/utility, +/obj/item/weapon/storage/belt/utility, +/obj/item/weapon/storage/belt/utility, +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/item/device/multitool, +/obj/machinery/requests_console{ + department = "Atmospherics"; + departmentType = 4; + name = "Atmospherics Requests Console"; + pixel_x = 0; + pixel_y = 30 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/atmos) +"coM" = ( +/obj/structure/table, +/obj/item/stack/sheet/glass{ + amount = 50 + }, +/obj/item/stack/sheet/glass{ + amount = 50 + }, +/obj/item/device/multitool, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/structure/fireaxecabinet{ + pixel_x = 0; + pixel_y = 30 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/atmos) +"coN" = ( +/obj/structure/closet/secure_closet/atmospherics, +/obj/machinery/camera{ + c_tag = "Atmospherics Storage"; + dir = 2 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/atmos) +"coO" = ( +/obj/structure/closet/secure_closet/atmospherics, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 6 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/atmos) +"coP" = ( +/obj/structure/closet/secure_closet/atmospherics, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 9 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "yellow" + }, +/area/atmos) +"coQ" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/atmos) +"coR" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"coS" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/meter, +/turf/open/floor/plasteel, +/area/atmos) +"coT" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"coU" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/atmos) +"coV" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"coW" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + external_pressure_bound = 0; + frequency = 1441; + id_tag = "air_out"; + initialize_directions = 1; + internal_pressure_bound = 4000; + on = 1; + pressure_checks = 2; + pump_direction = 0 + }, +/turf/open/floor/engine{ + name = "air floor"; + nitrogen = 10580; + oxygen = 2644 + }, +/area/atmos) +"coX" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/engine{ + name = "air floor"; + nitrogen = 10580; + oxygen = 2644 + }, +/area/atmos) +"coY" = ( +/turf/open/floor/engine{ + name = "air floor"; + nitrogen = 10580; + oxygen = 2644 + }, +/area/atmos) +"coZ" = ( +/obj/machinery/seed_extractor, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/maintenance/asmaint2) +"cpa" = ( +/obj/item/weapon/storage/backpack, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/maintenance/asmaint2) +"cpb" = ( +/obj/item/weapon/reagent_containers/glass/beaker, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/maintenance/asmaint2) +"cpc" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio2"; + name = "Containment Door" + }, +/obj/structure/cable/pink, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/toxins/xenobiology) +"cpd" = ( +/obj/structure/table/reinforced, +/obj/machinery/button/door{ + id = "xenobio2"; + name = "Containment Blast Doors"; + req_access_txt = "55" + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warning" + }, +/area/toxins/xenobiology) +"cpe" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"cpf" = ( +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"cpg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"cph" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"cpi" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"cpj" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warning" + }, +/area/toxins/xenobiology) +"cpk" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio3"; + name = "Containment Door" + }, +/obj/structure/cable/pink, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/toxins/xenobiology) +"cpl" = ( +/obj/structure/disposaloutlet{ + dir = 1 + }, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"cpm" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/explab) +"cpn" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/explab) +"cpo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/explab) +"cpp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/toxins/explab) +"cpq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/teleporter) +"cpr" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/teleporter) +"cps" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/teleporter) +"cpt" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/teleporter) +"cpu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cpv" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cpw" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cpx" = ( +/obj/machinery/camera{ + c_tag = "Chapel Foyer"; + dir = 8 + }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cpy" = ( +/obj/machinery/light_switch{ + dir = 8; + pixel_x = -22 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cpz" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "chapel" + }, +/area/chapel/main) +"cpA" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "chapel" + }, +/area/chapel/main) +"cpB" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cpC" = ( +/obj/structure/chair/stool, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "chapel" + }, +/area/chapel/main) +"cpD" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cpE" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cpF" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible, +/obj/effect/landmark/start{ + name = "Atmospheric Technician" + }, +/turf/open/floor/plasteel, +/area/atmos) +"cpG" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible, +/turf/open/floor/plasteel, +/area/atmos) +"cpH" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 4; + initialize_directions = 11 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cpI" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 2; + name = "Air to Port"; + on = 0 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cpJ" = ( +/obj/machinery/door/airlock/glass_atmos{ + desc = "The Atmos storage area, with all the gear you could want."; + name = "Atmospherics Storage"; + req_access_txt = "24" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowfull" + }, +/area/atmos) +"cpK" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/atmos) +"cpL" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cpM" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/atmos) +"cpN" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/computer/atmos_control/tank{ + input_tag = "air_in"; + name = "Air Tank Supply Control"; + output_tag = "air_out"; + sensors = list("air_sensor" = "Tank") + }, +/turf/open/floor/plasteel, +/area/atmos) +"cpO" = ( +/obj/machinery/air_sensor{ + frequency = 1441; + id_tag = "air_sensor" + }, +/turf/open/floor/engine{ + name = "air floor"; + nitrogen = 10580; + oxygen = 2644 + }, +/area/atmos) +"cpP" = ( +/obj/machinery/portable_atmospherics/canister/air, +/turf/open/floor/engine{ + name = "air floor"; + nitrogen = 10580; + oxygen = 2644 + }, +/area/atmos) +"cpQ" = ( +/obj/structure/table, +/obj/item/weapon/storage/bag/plants, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/maintenance/asmaint2) +"cpR" = ( +/obj/item/weapon/reagent_containers/glass/bucket, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/maintenance/asmaint2) +"cpS" = ( +/turf/closed/wall, +/area/toxins/xenobiology) +"cpT" = ( +/obj/machinery/camera{ + c_tag = "Xenobiology Pens"; + dir = 4; + network = list("SS13","RD") + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/sink{ + icon_state = "sink"; + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"cpU" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"cpV" = ( +/obj/structure/table, +/obj/item/weapon/folder, +/obj/item/weapon/folder, +/obj/item/clothing/glasses/science, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/explab) +"cpW" = ( +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/explab) +"cpX" = ( +/obj/structure/closet/radiation, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/explab) +"cpY" = ( +/obj/item/device/radio/beacon, +/turf/closed/wall/r_wall, +/area/toxins/explab) +"cpZ" = ( +/obj/machinery/camera{ + c_tag = "Teleporter Room"; + dir = 5; + network = list("SS13","RD") + }, +/turf/open/floor/plasteel, +/area/teleporter) +"cqa" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/teleporter) +"cqb" = ( +/obj/machinery/teleport/hub, +/obj/item/weapon/crowbar, +/turf/open/floor/plating, +/area/teleporter) +"cqc" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/chapel/main) +"cqd" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cqe" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cqf" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cqg" = ( +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cqh" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cqi" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cqj" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cqk" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cql" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Connector Ports"; + on = 0 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cqm" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 1; + initialize_directions = 11 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cqn" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cqo" = ( +/obj/machinery/portable_atmospherics/canister/nitrous_oxide, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/atmos) +"cqp" = ( +/obj/machinery/portable_atmospherics/canister/nitrous_oxide, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cqq" = ( +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel, +/area/atmos) +"cqr" = ( +/obj/structure/sign/atmosplaque{ + desc = "This plaque commemorates the rise of the LINDA administration at CentCom, and the advent of a new era."; + name = "\improper LINDA plaque"; + pixel_x = 32 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/atmos) +"cqs" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cqt" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/turf/open/floor/plasteel, +/area/atmos) +"cqu" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cqv" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced, +/obj/machinery/meter, +/turf/open/floor/plasteel, +/area/atmos) +"cqw" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"cqx" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/atmos) +"cqy" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"cqz" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 8; + frequency = 1441; + id = "air_in"; + pixel_y = 1 + }, +/turf/open/floor/engine{ + name = "air floor"; + nitrogen = 10580; + oxygen = 2644 + }, +/area/atmos) +"cqA" = ( +/obj/structure/table, +/obj/item/weapon/poster/contraband, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cqB" = ( +/obj/structure/table, +/obj/item/weapon/storage/box/lights/mixed, +/obj/item/weapon/reagent_containers/spray/plantbgone, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/maintenance/asmaint2) +"cqC" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio1"; + name = "Containment Door" + }, +/obj/structure/cable/pink{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/toxins/xenobiology) +"cqD" = ( +/obj/machinery/disposal/bin, +/obj/structure/sign/electricshock{ + pixel_y = 32 + }, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warning" + }, +/area/toxins/xenobiology) +"cqE" = ( +/obj/structure/table/reinforced, +/obj/structure/sign/electricshock{ + pixel_y = 32 + }, +/obj/machinery/button/door{ + id = "xenobio4"; + name = "Containment Blast Doors"; + req_access_txt = "55" + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warning" + }, +/area/toxins/xenobiology) +"cqF" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio4"; + name = "Containment Door" + }, +/obj/structure/cable/pink{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/toxins/xenobiology) +"cqG" = ( +/obj/structure/table, +/obj/item/device/radio/off, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/explab) +"cqH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/explab) +"cqI" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/explab) +"cqJ" = ( +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel, +/area/teleporter) +"cqK" = ( +/turf/open/floor/plasteel, +/area/teleporter) +"cqL" = ( +/obj/machinery/teleport/station, +/turf/open/floor/plating, +/area/teleporter) +"cqM" = ( +/obj/machinery/door/airlock/glass{ + name = "Escape Hallway" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cqN" = ( +/obj/machinery/door/airlock/glass{ + name = "Escape Hallway" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cqO" = ( +/obj/machinery/door/airlock/glass{ + name = "Escape Hallway" + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cqP" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cqQ" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Mix to Ports"; + on = 0 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cqR" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cqS" = ( +/obj/machinery/portable_atmospherics/canister/nitrogen, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/atmos) +"cqT" = ( +/obj/machinery/portable_atmospherics/canister/nitrogen, +/turf/open/floor/plasteel, +/area/atmos) +"cqU" = ( +/obj/machinery/computer/atmos_control, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/atmos) +"cqV" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/turf/open/floor/plasteel, +/area/atmos) +"cqW" = ( +/turf/open/floor/plating/asteroid/airless, +/area/atmos) +"cqX" = ( +/obj/structure/grille{ + density = 0; + icon_state = "brokengrille" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/mine/explored) +"cqY" = ( +/obj/item/clothing/shoes/sneakers/black, +/obj/effect/landmark/costume, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cqZ" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet, +/obj/item/weapon/poster/contraband, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cra" = ( +/obj/machinery/door/window/northleft{ + dir = 8; + name = "Containment Pen"; + req_access_txt = "55" + }, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio1"; + name = "Containment Door" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/pink{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"crb" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"crc" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"crd" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"cre" = ( +/obj/machinery/door/window/northleft{ + dir = 4; + name = "Containment Pen"; + req_access_txt = "55" + }, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio4"; + name = "Containment Door" + }, +/obj/structure/cable/pink{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"crf" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"crg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/toxins/explab) +"crh" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/table, +/obj/item/weapon/paper_bin{ + pixel_x = 0; + pixel_y = 6 + }, +/obj/item/weapon/pen, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/explab) +"cri" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/table, +/obj/item/weapon/clipboard, +/obj/item/weapon/book/manual/experimentor, +/obj/item/device/multitool, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/explab) +"crj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/computer/rdconsole/experiment, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/explab) +"crk" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/obj/machinery/button/door{ + id = "telelab"; + name = "Test Chamber Blast Doors"; + pixel_x = 25; + pixel_y = 0 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/explab) +"crl" = ( +/obj/machinery/computer/teleporter, +/turf/open/floor/plating, +/area/teleporter) +"crm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "bluecorner" + }, +/area/hallway/secondary/exit) +"crn" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"cro" = ( +/obj/structure/disposalpipe/sortjunction{ + dir = 2; + icon_state = "pipe-j2s"; + sortType = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"crp" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/secondary/exit) +"crq" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/exit) +"crr" = ( +/obj/machinery/firealarm{ + pixel_y = 25 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/exit) +"crs" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Escape Hallway North" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/exit) +"crt" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/exit) +"cru" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/exit) +"crv" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/exit) +"crw" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/exit) +"crx" = ( +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/secondary/exit) +"cry" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "yellowcorner" + }, +/area/hallway/secondary/exit) +"crz" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/atmos) +"crA" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/table, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "yellow" + }, +/area/atmos) +"crB" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/atmos) +"crC" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/atmos) +"crD" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/closet/wardrobe/atmospherics_yellow, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "yellow" + }, +/area/atmos) +"crE" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/atmos) +"crF" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Atmospherics West"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"crG" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/atmos) +"crH" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/heater{ + dir = 1; + on = 1; + tag = "" + }, +/obj/machinery/camera{ + c_tag = "Atmospherics Mix"; + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/atmos) +"crI" = ( +/obj/machinery/atmospherics/components/unary/vent_pump, +/turf/open/floor/plasteel, +/area/atmos) +"crJ" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/atmos) +"crK" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/plasteel, +/area/atmos) +"crL" = ( +/obj/effect/landmark/start{ + name = "Atmospheric Technician" + }, +/obj/structure/chair/office/dark{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"crM" = ( +/obj/machinery/computer/station_alert, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/atmos) +"crN" = ( +/obj/machinery/light/small, +/obj/machinery/button/door{ + id = "bar1"; + name = "Bolts Control"; + normaldoorcontrol = 1; + pixel_y = -25; + req_access_txt = "0"; + specialfunctions = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"crO" = ( +/obj/machinery/door/airlock/hatch{ + id_tag = "bar1"; + name = "Private Room 1" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"crP" = ( +/obj/structure/reagent_dispensers/beerkeg, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"crQ" = ( +/obj/structure/table, +/obj/machinery/chem_dispenser/drinks/beer, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"crR" = ( +/obj/machinery/vending/boozeomat, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"crS" = ( +/obj/structure/sink/kitchen{ + pixel_y = 32 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"crT" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio1"; + name = "Containment Door" + }, +/obj/structure/cable/pink, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/toxins/xenobiology) +"crU" = ( +/obj/structure/table/reinforced, +/obj/machinery/button/door{ + id = "xenobio1"; + name = "Containment Blast Doors"; + req_access_txt = "55" + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warning" + }, +/area/toxins/xenobiology) +"crV" = ( +/obj/structure/closet/l3closet/scientist, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"crW" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"crX" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio4"; + name = "Containment Door" + }, +/obj/structure/cable/pink, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/toxins/xenobiology) +"crY" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/door/poddoor/preopen{ + id = "telelab"; + name = "test chamber blast door" + }, +/turf/open/floor/plating, +/area/toxins/explab) +"crZ" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/preopen{ + id = "telelab"; + name = "test chamber blast door" + }, +/turf/open/floor/engine, +/area/toxins/explab) +"csa" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/teleporter) +"csb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/teleporter) +"csc" = ( +/obj/machinery/door/airlock/command{ + name = "Teleporter Room"; + req_access_txt = "17" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/teleporter) +"csd" = ( +/obj/structure/disposalpipe/junction{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/hallway/secondary/exit) +"cse" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"csf" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/secondary/exit) +"csg" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/secondary/exit) +"csh" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/secondary/exit) +"csi" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/secondary/exit) +"csj" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"csk" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/hallway/secondary/exit) +"csl" = ( +/obj/machinery/door/airlock/atmos{ + desc = "The station's Atmospherics department, responsible for keeping air in your lungs and fire out."; + name = "Atmospherics"; + req_access_txt = "24" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowfull" + }, +/area/atmos) +"csm" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/atmos) +"csn" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cso" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"csp" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/atmos) +"csq" = ( +/obj/machinery/door/airlock/atmos{ + desc = "The station's Atmospherics department, responsible for keeping air in your lungs and fire out."; + name = "Atmospherics"; + req_access_txt = "24" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowfull" + }, +/area/atmos) +"csr" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/turf/open/floor/plasteel, +/area/atmos) +"css" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cst" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/atmos) +"csu" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/atmos) +"csv" = ( +/obj/machinery/portable_atmospherics/canister/air, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "yellow"; + dir = 10 + }, +/area/atmos) +"csw" = ( +/obj/machinery/portable_atmospherics/canister/air, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/atmos) +"csx" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/atmos) +"csy" = ( +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/atmos) +"csz" = ( +/obj/machinery/computer/atmos_control, +/obj/machinery/light, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "yellow" + }, +/area/atmos) +"csA" = ( +/obj/machinery/camera{ + c_tag = "Atmospherics Central East"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/turf/open/floor/plasteel, +/area/atmos) +"csB" = ( +/obj/machinery/button/door{ + id = "mixedvent"; + name = "Gas Mix Emergency Vent Control"; + pixel_x = 24; + pixel_y = 0 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"csC" = ( +/obj/structure/table, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"csD" = ( +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"csE" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/obj/structure/table/glass, +/obj/machinery/reagentgrinder, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"csF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"csG" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/sink{ + dir = 4; + icon_state = "sink"; + pixel_x = 11; + pixel_y = 0 + }, +/obj/machinery/camera{ + c_tag = "Xenobiology Center"; + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"csH" = ( +/turf/open/floor/engine, +/area/toxins/explab) +"csI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "bluecorner" + }, +/area/hallway/secondary/exit) +"csJ" = ( +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=AfCH1"; + location = "Escape" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"csK" = ( +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/hallway/secondary/exit) +"csL" = ( +/turf/closed/wall, +/area/hallway/secondary/exit) +"csM" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/hallway/secondary/exit) +"csN" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/hallway/secondary/exit) +"csO" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"csP" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowcorner" + }, +/area/hallway/secondary/exit) +"csQ" = ( +/turf/open/floor/plasteel{ + icon_state = "yellow"; + dir = 10 + }, +/area/atmos) +"csR" = ( +/obj/machinery/camera{ + c_tag = "Atmospherics Access"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/atmos) +"csS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/atmos) +"csT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "yellow" + }, +/area/atmos) +"csU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/atmos) +"csV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/atmos) +"csW" = ( +/obj/structure/tank_dispenser/oxygen, +/turf/open/floor/plasteel, +/area/atmos) +"csX" = ( +/obj/machinery/suit_storage_unit/atmos, +/turf/open/floor/plasteel, +/area/atmos) +"csY" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plasteel, +/area/atmos) +"csZ" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel, +/area/atmos) +"cta" = ( +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/turf/open/floor/plasteel, +/area/atmos) +"ctb" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/turf/open/floor/plasteel, +/area/atmos) +"ctc" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + tag = "icon-intact (NORTHEAST)"; + icon_state = "intact"; + dir = 5 + }, +/turf/open/floor/plasteel, +/area/atmos) +"ctd" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 4 + }, +/obj/machinery/meter, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cte" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "To Mix"; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"ctf" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/atmos) +"ctg" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"cth" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + external_pressure_bound = 0; + frequency = 1441; + id_tag = "mix_in"; + initialize_directions = 1; + internal_pressure_bound = 4000; + on = 1; + pressure_checks = 2; + pump_direction = 0 + }, +/turf/open/floor/engine{ + name = "vacuum floor"; + nitrogen = 0.01; + oxygen = 0.01 + }, +/area/atmos) +"cti" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/engine{ + name = "vacuum floor"; + nitrogen = 0.01; + oxygen = 0.01 + }, +/area/atmos) +"ctj" = ( +/turf/open/floor/engine{ + name = "vacuum floor"; + nitrogen = 0.01; + oxygen = 0.01 + }, +/area/atmos) +"ctk" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/button/door{ + id = "bar2"; + name = "Bolts Control"; + normaldoorcontrol = 1; + pixel_y = 25; + req_access_txt = "0"; + specialfunctions = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"ctl" = ( +/obj/machinery/door/airlock/hatch{ + id_tag = "bar2"; + name = "Private Room 2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"ctm" = ( +/obj/structure/table, +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{ + pixel_x = -5; + pixel_y = 2 + }, +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{ + pixel_x = 4; + pixel_y = 5 + }, +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{ + pixel_x = 6; + pixel_y = -1 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"ctn" = ( +/obj/structure/table, +/obj/item/weapon/reagent_containers/glass/rag, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cto" = ( +/obj/structure/table, +/obj/machinery/chem_dispenser/drinks, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"ctp" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"ctq" = ( +/obj/machinery/shieldwallgen{ + req_access = list(55) + }, +/obj/structure/cable/pink{ + d2 = 4; + icon_state = "0-4" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 6 + }, +/area/toxins/xenobiology) +"ctr" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"cts" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warnwhitecorner" + }, +/area/toxins/xenobiology) +"ctt" = ( +/obj/machinery/monkey_recycler, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"ctu" = ( +/obj/structure/table/glass, +/obj/item/weapon/extinguisher{ + pixel_x = 4; + pixel_y = 3 + }, +/obj/item/weapon/extinguisher, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"ctv" = ( +/obj/machinery/processor{ + desc = "A machine used to process slimes and retrieve their extract."; + name = "Slime Processor" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"ctw" = ( +/obj/structure/table/reinforced, +/obj/structure/sign/electricshock{ + pixel_y = 32 + }, +/obj/machinery/button/door{ + id = "xenobio5"; + name = "Containment Blast Doors"; + req_access_txt = "55" + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warning" + }, +/area/toxins/xenobiology) +"ctx" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio5"; + name = "Containment Door" + }, +/obj/structure/cable/pink{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/toxins/xenobiology) +"cty" = ( +/obj/machinery/r_n_d/experimentor, +/turf/open/floor/engine, +/area/toxins/explab) +"ctz" = ( +/obj/effect/landmark{ + name = "blobstart" + }, +/turf/open/floor/engine, +/area/toxins/explab) +"ctA" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/structure/table/glass, +/obj/item/weapon/hand_tele, +/turf/open/floor/plasteel, +/area/teleporter) +"ctB" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/toolbox/emergency, +/turf/open/floor/plasteel, +/area/teleporter) +"ctC" = ( +/obj/structure/table/glass, +/obj/machinery/light_switch{ + pixel_y = -22 + }, +/obj/item/weapon/tank/internals/oxygen, +/obj/item/clothing/mask/gas, +/turf/open/floor/plasteel, +/area/teleporter) +"ctD" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/obj/machinery/camera{ + c_tag = "Escape Hallway Central"; + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/hallway/secondary/exit) +"ctE" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"ctF" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/hallway/secondary/exit) +"ctG" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"ctH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/atmos) +"ctI" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/atmos) +"ctJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/closed/wall, +/area/atmos) +"ctK" = ( +/obj/machinery/door/airlock/glass_atmos{ + desc = "The control and monitoring station for Atmospherics."; + name = "Atmospherics Front Desk"; + req_access_txt = "24" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowfull" + }, +/area/atmos) +"ctL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/atmos) +"ctM" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/atmos) +"ctN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"ctO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"ctP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/atmos) +"ctQ" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 6; + initialize_directions = 6 + }, +/turf/open/floor/plasteel, +/area/atmos) +"ctR" = ( +/obj/machinery/atmospherics/pipe/manifold/cyan/visible, +/turf/open/floor/plasteel, +/area/atmos) +"ctS" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + name = "Air to Mix"; + on = 0 + }, +/turf/open/floor/plasteel, +/area/atmos) +"ctT" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 10; + initialize_directions = 12 + }, +/turf/open/floor/plasteel, +/area/atmos) +"ctU" = ( +/obj/machinery/computer/atmos_control/tank{ + frequency = 1441; + input_tag = "mix_in"; + name = "Gas Mix Tank Control"; + output_tag = "mix_in"; + sensors = list("mix_sensor" = "Tank") + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"ctV" = ( +/obj/machinery/air_sensor{ + frequency = 1441; + id_tag = "mix_sensor" + }, +/turf/open/floor/engine{ + name = "vacuum floor"; + nitrogen = 0.01; + oxygen = 0.01 + }, +/area/atmos) +"ctW" = ( +/obj/item/clothing/shoes/sneakers/black{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"ctX" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet, +/obj/item/clothing/under/rank/clown/sexy, +/obj/item/clothing/under/sexymime, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"ctY" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/preopen{ + id = "Xenolab"; + name = "Test Chamber Containment Door" + }, +/obj/structure/cable/pink{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 5 + }, +/area/toxins/xenobiology) +"ctZ" = ( +/obj/structure/table/reinforced, +/obj/machinery/computer/security/telescreen{ + dir = 4; + name = "Test Chamber Monitor"; + network = list("Xeno"); + pixel_y = 2 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"cua" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"cub" = ( +/obj/machinery/computer/camera_advanced/xenobio, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"cuc" = ( +/obj/machinery/smartfridge/extract, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"cud" = ( +/obj/machinery/door/window/northleft{ + dir = 4; + name = "Containment Pen"; + req_access_txt = "55" + }, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio5"; + name = "Containment Door" + }, +/obj/structure/cable/pink{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"cue" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/hallway/secondary/exit) +"cuf" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/hallway/secondary/exit) +"cug" = ( +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"cuh" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=4"; + freq = 1400; + location = "Atmospherics" + }, +/obj/structure/plasticflaps, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "loadingarea" + }, +/area/atmos) +"cui" = ( +/obj/machinery/door/window/northleft{ + dir = 4; + layer = 2.7; + name = "Atmospherics Deliveries"; + req_access_txt = "24" + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/atmos) +"cuj" = ( +/obj/machinery/airalarm{ + pixel_y = 20 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cuk" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowcorner" + }, +/area/atmos) +"cul" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/atmos) +"cum" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "yellow" + }, +/area/atmos) +"cun" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1; + scrub_Toxins = 0 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cuo" = ( +/obj/machinery/atmospherics/components/trinary/mixer{ + dir = 4; + node1_concentration = 0.8; + node2_concentration = 0.2; + on = 1; + pixel_x = 0; + pixel_y = 0; + target_pressure = 4500 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cup" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cuq" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cur" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + name = "Pure to Mix"; + on = 0 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cus" = ( +/obj/machinery/atmospherics/pipe/manifold4w/green/visible, +/turf/open/floor/plasteel, +/area/atmos) +"cut" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/machinery/meter, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cuu" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"cuv" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/atmos) +"cuw" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"cux" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 8; + frequency = 1441; + id = "mix_in"; + pixel_y = 0 + }, +/turf/open/floor/engine{ + name = "vacuum floor"; + nitrogen = 0.01; + oxygen = 0.01 + }, +/area/atmos) +"cuy" = ( +/obj/effect/landmark{ + name = "blobstart" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cuz" = ( +/obj/machinery/camera{ + c_tag = "Xenobiology Containment Pen"; + dir = 5; + network = list("SS13","RD","Xeno") + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"cuA" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 6 + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"cuB" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"cuC" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/obj/structure/sign/electricshock{ + pixel_y = 32 + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"cuD" = ( +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/obj/machinery/door/poddoor/preopen{ + id = "Xenolab"; + name = "Test Chamber Containment Door" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/pink{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/toxins/xenobiology) +"cuE" = ( +/obj/structure/table/reinforced, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/obj/machinery/button/ignition{ + id = "Xenobio"; + pixel_x = -6; + pixel_y = -2 + }, +/obj/machinery/button/door{ + id = "Xenolab"; + name = "Test Chamber Blast Doors"; + pixel_x = 4; + pixel_y = -2; + req_access_txt = "55" + }, +/obj/item/weapon/wrench, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"cuF" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 10 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"cuG" = ( +/obj/structure/chair/office/dark{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"cuH" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio5"; + name = "Containment Door" + }, +/obj/structure/cable/pink, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/toxins/xenobiology) +"cuI" = ( +/obj/structure/cable/pink{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "Experimention Lab APC"; + pixel_y = 25 + }, +/turf/open/floor/plating, +/area/toxins/explab) +"cuJ" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Teleporter APC"; + pixel_y = 25 + }, +/obj/structure/cable/pink{ + d2 = 2; + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/teleporter) +"cuK" = ( +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "Escape Shuttle Hallway APC"; + pixel_y = 25 + }, +/turf/open/floor/plating, +/area/hallway/secondary/exit) +"cuL" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_access_txt = "0"; + req_one_access_txt = "7; 8; 12; 17; 29; 30; 42; 47; 55; 63" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/hallway/secondary/exit) +"cuM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/hallway/secondary/exit) +"cuN" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"cuO" = ( +/obj/machinery/newscaster, +/turf/closed/wall, +/area/hallway/secondary/exit) +"cuP" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/northleft{ + dir = 4; + layer = 2.9; + name = "Atmospherics Desk"; + req_access_txt = "24" + }, +/obj/item/weapon/folder/yellow, +/obj/item/weapon/pen, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/atmos) +"cuQ" = ( +/obj/effect/landmark/start{ + name = "Atmospheric Technician" + }, +/obj/structure/chair/office/dark{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cuR" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/obj/machinery/camera{ + c_tag = "Atmospherics Front Desk"; + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/atmos) +"cuS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/atmos) +"cuT" = ( +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 8; + initialize_directions = 11 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cuU" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + name = "N2 to Pure"; + on = 0 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cuV" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/turf/open/floor/plasteel, +/area/atmos) +"cuW" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "Unfiltered to Mix"; + on = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cuX" = ( +/obj/structure/toilet{ + cistern = 1; + desc = "The HT-451, a torque rotation-based, waste disposal unit for small matter. This one has a heart drawn on the cistern."; + dir = 4 + }, +/obj/machinery/button/door{ + id = "barbath"; + name = "Bolts Control"; + normaldoorcontrol = 1; + pixel_y = 25; + req_access_txt = "0"; + specialfunctions = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cuY" = ( +/obj/structure/sink{ + pixel_y = 32 + }, +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cuZ" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + id_tag = "barbath"; + name = "Bathroom" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cva" = ( +/obj/structure/closet/secure_closet/bar{ + req_access_txt = "25" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cvb" = ( +/obj/machinery/light/small, +/obj/machinery/vending/sovietsoda, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cvc" = ( +/obj/structure/rack, +/obj/effect/landmark/costume, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cvd" = ( +/obj/machinery/sparker{ + id = "Xenobio"; + pixel_x = -25 + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"cve" = ( +/obj/item/device/radio/beacon, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"cvf" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 1; + unacidable = 1 + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"cvg" = ( +/obj/machinery/door/window/northleft{ + dir = 8; + name = "Containment Pen"; + req_access_txt = "55" + }, +/obj/machinery/door/poddoor/preopen{ + id = "Xenolab"; + name = "Test Chamber Containment Door" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/pink{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"cvh" = ( +/obj/machinery/door/window/northleft{ + dir = 4; + name = "Containment Pen"; + req_access_txt = "55" + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"cvi" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/general/visible, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"cvj" = ( +/obj/structure/cable/pink{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"cvk" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhitecorner" + }, +/area/toxins/xenobiology) +"cvl" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cvm" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cvn" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cvo" = ( +/obj/structure/closet/crate, +/obj/item/weapon/crowbar/red, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cvp" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"cvq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"cvr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/secondary/exit) +"cvs" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/exit) +"cvt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/closet/emcloset, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/exit) +"cvu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/table/glass, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/item/toy/carpplushie, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/exit) +"cvv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/chair, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/exit) +"cvw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/chair, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/exit) +"cvx" = ( +/obj/structure/chair, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/exit) +"cvy" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/exit) +"cvz" = ( +/obj/machinery/computer/arcade, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/exit) +"cvA" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/exit) +"cvB" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/secondary/exit) +"cvC" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"cvD" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/atmos) +"cvE" = ( +/obj/machinery/computer/station_alert, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cvF" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cvG" = ( +/obj/machinery/requests_console{ + department = "Atmospherics"; + departmentType = 4; + name = "Atmospherics Requests Console"; + pixel_y = -32 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cvH" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/atmos) +"cvI" = ( +/obj/machinery/door/window/eastright{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cvJ" = ( +/obj/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cvK" = ( +/obj/machinery/atmospherics/components/trinary/filter{ + dir = 4; + filter_type = "n2"; + flipped = 0; + on = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cvL" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cvM" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/turf/open/floor/plasteel, +/area/atmos) +"cvN" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/machinery/door/window/eastright{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cvO" = ( +/obj/machinery/atmospherics/components/trinary/filter{ + dir = 4; + filter_type = "o2"; + flipped = 0; + on = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cvP" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/machinery/door/window/eastright{ + dir = 2 + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "O2 to Pure"; + on = 0 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cvQ" = ( +/obj/machinery/atmospherics/components/trinary/filter{ + dir = 4; + filter_type = "co2"; + flipped = 0; + on = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cvR" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/turf/open/floor/plasteel, +/area/atmos) +"cvS" = ( +/obj/machinery/atmospherics/components/trinary/filter{ + dir = 4; + filter_type = "plasma"; + flipped = 0; + on = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cvT" = ( +/obj/machinery/atmospherics/components/trinary/filter{ + dir = 4; + filter_type = "n2o"; + flipped = 0; + on = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cvU" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel, +/area/atmos) +"cvV" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 9 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cvW" = ( +/mob/living/simple_animal/crab/Coffee, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"cvX" = ( +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/obj/structure/disposaloutlet{ + dir = 8 + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"cvY" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/preopen{ + id = "Xenolab"; + name = "Test Chamber Containment Door" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/pink, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/toxins/xenobiology) +"cvZ" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"cwa" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/general/visible, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"cwb" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 2; + icon_state = "warnwhitecorner" + }, +/area/toxins/xenobiology) +"cwc" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable/pink{ + d2 = 2; + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/toxins/xenobiology) +"cwd" = ( +/turf/open/floor/bluegrid{ + name = "airless floor"; + nitrogen = 0; + oxygen = 0; + temperature = 2.7 + }, +/area/toxins/xenobiology) +"cwe" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/closed/wall, +/area/hallway/secondary/exit) +"cwf" = ( +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 1 + }, +/area/hallway/secondary/exit) +"cwg" = ( +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/hallway/secondary/exit) +"cwh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"cwi" = ( +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/hallway/secondary/exit) +"cwj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"cwk" = ( +/turf/open/floor/plasteel{ + icon_state = "yellowcorner" + }, +/area/hallway/secondary/exit) +"cwl" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/machinery/meter, +/turf/open/floor/plasteel, +/area/atmos) +"cwm" = ( +/obj/machinery/computer/atmos_control/tank{ + input_tag = "n2_in"; + name = "Nitrogen Supply Control"; + output_tag = "n2_out"; + sensors = list("n2_sensor" = "Tank") + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel, +/area/atmos) +"cwn" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/turf/open/floor/plasteel, +/area/atmos) +"cwo" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/machinery/meter, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"cwp" = ( +/obj/structure/window/reinforced, +/obj/machinery/computer/atmos_control/tank{ + input_tag = "o2_in"; + name = "Oxygen Supply Control"; + output_tag = "o2_out"; + sensors = list("n2_sensor" = "Tank") + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"cwq" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced, +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 8; + initialize_directions = 11 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"cwr" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"cws" = ( +/obj/machinery/computer/atmos_control/tank{ + input_tag = "co2_in"; + name = "Carbon Dioxide Supply Control"; + output_tag = "co2_out"; + sensors = list("co2_sensor" = "Tank") + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel, +/area/atmos) +"cwt" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/meter, +/turf/open/floor/plasteel, +/area/atmos) +"cwu" = ( +/obj/machinery/computer/atmos_control/tank{ + input_tag = "tox_in"; + name = "Plasma Supply Control"; + output_tag = "tox_out"; + sensors = list("tox_sensor" = "Tank") + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel, +/area/atmos) +"cwv" = ( +/obj/machinery/computer/atmos_control/tank{ + input_tag = "n2o_in"; + name = "Nitrous Oxide Supply Control"; + output_tag = "n2o_out"; + sensors = list("n2o_sensor" = "Tank") + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel, +/area/atmos) +"cww" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating/airless, +/area/maintenance/portsolar) +"cwx" = ( +/turf/closed/wall/r_wall, +/area/maintenance/portsolar) +"cwy" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/preopen{ + id = "Xenolab"; + name = "Test Chamber Containment Door" + }, +/obj/structure/cable/pink, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 6 + }, +/area/toxins/xenobiology) +"cwz" = ( +/obj/structure/table/reinforced, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/obj/item/clothing/glasses/science, +/obj/item/clothing/glasses/science, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"cwA" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "Gas Pump" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"cwB" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"cwC" = ( +/obj/structure/cable/pink{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable/pink{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/toxins/xenobiology) +"cwD" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/bluegrid{ + name = "airless floor"; + nitrogen = 0; + oxygen = 0; + temperature = 2.7 + }, +/area/toxins/xenobiology) +"cwE" = ( +/obj/machinery/vending/cola, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "warning" + }, +/area/hallway/secondary/exit) +"cwF" = ( +/obj/structure/chair, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/hallway/secondary/exit) +"cwG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/structure/chair, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/hallway/secondary/exit) +"cwH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/chair, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/hallway/secondary/exit) +"cwI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/table/glass, +/obj/machinery/light{ + dir = 1 + }, +/obj/item/device/radio/intercom{ + pixel_x = 0; + pixel_y = 25 + }, +/obj/item/weapon/storage/fancy/cigarettes/cigpack_robust, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/hallway/secondary/exit) +"cwJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/chair, +/obj/machinery/camera{ + c_tag = "Escape Hallway West" + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/hallway/secondary/exit) +"cwK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/chair, +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/hallway/secondary/exit) +"cwL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/chair, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/hallway/secondary/exit) +"cwM" = ( +/obj/machinery/status_display{ + pixel_y = 32 + }, +/obj/structure/table/glass, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/item/weapon/lighter, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/hallway/secondary/exit) +"cwN" = ( +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 4 + }, +/area/hallway/secondary/exit) +"cwO" = ( +/obj/machinery/hologram/holopad, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"cwP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"cwQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"cwR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"cwS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"cwT" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/hallway/secondary/exit) +"cwU" = ( +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"cwV" = ( +/obj/machinery/camera{ + c_tag = "Atmospherics South West"; + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"cwW" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"cwX" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "N2 Outlet Pump"; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"cwY" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "O2 Outlet Pump"; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"cwZ" = ( +/obj/machinery/camera{ + c_tag = "Atmospherics South"; + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"cxa" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "CO2 Outlet Pump"; + on = 0 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"cxb" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "Plasma Outlet Pump"; + on = 0 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"cxc" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "N2O Outlet Pump"; + on = 0 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"cxd" = ( +/obj/machinery/camera{ + c_tag = "Atmospherics South East"; + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"cxe" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_x = -32 + }, +/turf/open/floor/plating, +/area/maintenance/portsolar) +"cxf" = ( +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/portsolar) +"cxg" = ( +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/machinery/power/smes{ + charge = 1e+006 + }, +/turf/open/floor/plating, +/area/maintenance/portsolar) +"cxh" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'HIGH VOLTAGE'"; + icon_state = "shock"; + name = "HIGH VOLTAGE" + }, +/turf/closed/wall/r_wall, +/area/maintenance/portsolar) +"cxi" = ( +/obj/machinery/light, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"cxj" = ( +/obj/machinery/shieldwallgen{ + req_access = list(55) + }, +/obj/structure/cable/pink{ + d2 = 4; + icon_state = "0-4" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 5 + }, +/area/toxins/xenobiology) +"cxk" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"cxl" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"cxm" = ( +/obj/structure/table/glass, +/obj/item/stack/sheet/mineral/plasma, +/obj/item/stack/sheet/mineral/plasma, +/obj/item/stack/sheet/mineral/plasma, +/obj/item/stack/sheet/mineral/plasma, +/obj/item/weapon/storage/box/monkeycubes, +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"cxn" = ( +/obj/machinery/power/apc{ + name = "Xenobiology APC"; + pixel_y = -25 + }, +/obj/structure/cable/pink, +/obj/structure/table/glass, +/obj/item/weapon/storage/box/beakers{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/weapon/storage/box/syringes, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"cxo" = ( +/obj/machinery/camera{ + c_tag = "Xenobiology South"; + dir = 1; + network = list("SS13","RD") + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhitecorner" + }, +/area/toxins/xenobiology) +"cxp" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable/pink, +/turf/open/floor/plating, +/area/toxins/xenobiology) +"cxq" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_access_txt = "0"; + req_one_access_txt = "7; 8; 12; 17; 29; 30; 42; 47; 55; 63" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/maintenance/asmaint2) +"cxr" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warning" + }, +/area/hallway/secondary/exit) +"cxs" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"cxt" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"cxu" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/hallway/secondary/exit) +"cxv" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/hallway/secondary/exit) +"cxw" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/obj/item/device/radio/beacon, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"cxx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/hallway/secondary/exit) +"cxy" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"cxz" = ( +/obj/machinery/camera{ + c_tag = "Escape Hallway East"; + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/hallway/secondary/exit) +"cxA" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/green/visible, +/turf/open/floor/plating, +/area/atmos) +"cxB" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/turf/open/floor/plating, +/area/atmos) +"cxC" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/green/visible, +/turf/open/floor/plating/airless, +/area/atmos) +"cxD" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating/airless, +/area/atmos) +"cxE" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/turf/open/floor/plating/airless, +/area/atmos) +"cxF" = ( +/obj/machinery/door/airlock/external{ + name = "Atmosphereics External Access"; + req_access_txt = "24" + }, +/turf/open/floor/plating, +/area/atmos) +"cxG" = ( +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/port) +"cxH" = ( +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/port) +"cxI" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance"; + req_access = null; + req_access_txt = "10; 13" + }, +/turf/open/floor/plating, +/area/maintenance/portsolar) +"cxJ" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/portsolar) +"cxK" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/portsolar) +"cxL" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/portsolar) +"cxM" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/portsolar) +"cxN" = ( +/obj/machinery/door/airlock/engineering{ + name = "Aft Port Solar Access"; + req_access_txt = "10" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/portsolar) +"cxO" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cxP" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Xenobiology Maintenance"; + req_access_txt = "47" + }, +/turf/open/floor/plating, +/area/toxins/xenobiology) +"cxQ" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "warning" + }, +/area/hallway/secondary/exit) +"cxR" = ( +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/hallway/secondary/exit) +"cxS" = ( +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/hallway/secondary/exit) +"cxT" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_y = -32 + }, +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/hallway/secondary/exit) +"cxU" = ( +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/hallway/secondary/exit) +"cxV" = ( +/obj/machinery/camera{ + c_tag = "Escape Hallway Aft"; + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/hallway/secondary/exit) +"cxW" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"cxX" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"cxY" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/green/visible, +/turf/open/space, +/area/space/nearstation) +"cxZ" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/turf/open/space, +/area/space/nearstation) +"cya" = ( +/turf/open/floor/plating, +/area/atmos) +"cyb" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/space) +"cyc" = ( +/obj/machinery/power/solar_control{ + id = "portsolar"; + name = "Aft Port Solar Control" + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/portsolar) +"cyd" = ( +/obj/structure/chair/stool, +/turf/open/floor/plating, +/area/maintenance/portsolar) +"cye" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Aft Port Solar APC"; + pixel_x = 23; + pixel_y = 2 + }, +/obj/machinery/camera{ + c_tag = "Aft Port Solar Control"; + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/portsolar) +"cyf" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cyg" = ( +/obj/machinery/door/airlock/external{ + name = "Escape Airlock" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/hallway/secondary/exit) +"cyh" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/hallway/secondary/exit) +"cyi" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/hallway/secondary/exit) +"cyj" = ( +/obj/machinery/door/airlock/external{ + name = "Shuttle Brig Airlock"; + req_access_txt = "63; 42" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/hallway/secondary/exit) +"cyk" = ( +/obj/structure/grille, +/turf/closed/wall/r_wall, +/area/atmos) +"cyl" = ( +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/atmos) +"cym" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/atmos) +"cyn" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cyo" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/obj/item/weapon/weldingtool, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cyp" = ( +/obj/structure/grille{ + density = 0; + icon_state = "brokengrille" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cyq" = ( +/obj/structure/chair, +/obj/item/clothing/mask/cigarette/cigar/havana, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cyr" = ( +/obj/structure/chair/comfy/brown, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cys" = ( +/obj/structure/chair, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cyt" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplatecorner" + }, +/area/hallway/secondary/exit) +"cyu" = ( +/turf/open/floor/plating{ + icon_state = "warnplate" + }, +/area/hallway/secondary/exit) +"cyv" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 1 + }, +/area/hallway/secondary/exit) +"cyw" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 1; + frequency = 1441; + id = "n2_in" + }, +/turf/open/floor/engine{ + name = "n2 floor"; + nitrogen = 100000; + oxygen = 0 + }, +/area/atmos) +"cyx" = ( +/obj/machinery/air_sensor{ + frequency = 1441; + id_tag = "n2_sensor" + }, +/turf/open/floor/engine{ + name = "n2 floor"; + nitrogen = 100000; + oxygen = 0 + }, +/area/atmos) +"cyy" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + external_pressure_bound = 0; + frequency = 1441; + id_tag = "n2_out"; + initialize_directions = 1; + internal_pressure_bound = 4000; + on = 1; + pressure_checks = 2; + pump_direction = 0 + }, +/turf/open/floor/engine{ + name = "n2 floor"; + nitrogen = 100000; + oxygen = 0 + }, +/area/atmos) +"cyz" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 1; + frequency = 1441; + id = "o2_in" + }, +/turf/open/floor/engine{ + name = "o2 floor"; + nitrogen = 0; + oxygen = 100000 + }, +/area/atmos) +"cyA" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/air_sensor{ + frequency = 1441; + id_tag = "o2_sensor" + }, +/turf/open/floor/engine{ + name = "o2 floor"; + nitrogen = 0; + oxygen = 100000 + }, +/area/atmos) +"cyB" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + external_pressure_bound = 0; + frequency = 1441; + id_tag = "o2_out"; + initialize_directions = 1; + internal_pressure_bound = 4000; + on = 1; + pressure_checks = 2; + pump_direction = 0 + }, +/turf/open/floor/engine{ + name = "o2 floor"; + nitrogen = 0; + oxygen = 100000 + }, +/area/atmos) +"cyC" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 1; + frequency = 1441; + id = "co2_in"; + pixel_y = 1 + }, +/turf/open/floor/engine{ + carbon_dioxide = 50000; + name = "co2 floor"; + nitrogen = 0; + oxygen = 0 + }, +/area/atmos) +"cyD" = ( +/obj/machinery/air_sensor{ + frequency = 1441; + id_tag = "co2_sensor" + }, +/turf/open/floor/engine{ + carbon_dioxide = 50000; + name = "co2 floor"; + nitrogen = 0; + oxygen = 0 + }, +/area/atmos) +"cyE" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + external_pressure_bound = 0; + frequency = 1441; + id_tag = "co2_out"; + initialize_directions = 1; + internal_pressure_bound = 4000; + on = 1; + pressure_checks = 2; + pump_direction = 0 + }, +/turf/open/floor/engine{ + carbon_dioxide = 50000; + name = "co2 floor"; + nitrogen = 0; + oxygen = 0 + }, +/area/atmos) +"cyF" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 1; + frequency = 1441; + id = "tox_in"; + pixel_y = 1 + }, +/turf/open/floor/engine{ + name = "plasma floor"; + nitrogen = 0; + oxygen = 0; + toxins = 70000 + }, +/area/atmos) +"cyG" = ( +/obj/machinery/air_sensor{ + frequency = 1441; + id_tag = "tox_sensor" + }, +/turf/open/floor/engine{ + name = "plasma floor"; + nitrogen = 0; + oxygen = 0; + toxins = 70000 + }, +/area/atmos) +"cyH" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + external_pressure_bound = 0; + frequency = 1441; + id_tag = "tox_out"; + initialize_directions = 1; + internal_pressure_bound = 4000; + on = 1; + pressure_checks = 2; + pump_direction = 0 + }, +/turf/open/floor/engine{ + name = "plasma floor"; + nitrogen = 0; + oxygen = 0; + toxins = 70000 + }, +/area/atmos) +"cyI" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 1; + frequency = 1441; + id = "n2o_in"; + pixel_y = 1 + }, +/turf/open/floor/engine/n2o, +/area/atmos) +"cyJ" = ( +/obj/machinery/air_sensor{ + frequency = 1441; + id_tag = "n2o_sensor" + }, +/turf/open/floor/engine/n2o, +/area/atmos) +"cyK" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + external_pressure_bound = 0; + frequency = 1441; + id_tag = "n2o_out"; + initialize_directions = 1; + internal_pressure_bound = 4000; + on = 1; + pressure_checks = 2; + pump_direction = 0 + }, +/turf/open/floor/engine/n2o, +/area/atmos) +"cyL" = ( +/turf/open/space, +/area/maintenance/asmaint2) +"cyM" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 8 + }, +/area/hallway/secondary/exit) +"cyN" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 4 + }, +/area/hallway/secondary/exit) +"cyO" = ( +/turf/open/floor/engine{ + name = "n2 floor"; + nitrogen = 100000; + oxygen = 0 + }, +/area/atmos) +"cyP" = ( +/obj/machinery/portable_atmospherics/canister/nitrogen, +/turf/open/floor/engine{ + name = "n2 floor"; + nitrogen = 100000; + oxygen = 0 + }, +/area/atmos) +"cyQ" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/engine{ + name = "n2 floor"; + nitrogen = 100000; + oxygen = 0 + }, +/area/atmos) +"cyR" = ( +/turf/open/floor/engine{ + name = "o2 floor"; + nitrogen = 0; + oxygen = 100000 + }, +/area/atmos) +"cyS" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/engine{ + name = "o2 floor"; + nitrogen = 0; + oxygen = 100000 + }, +/area/atmos) +"cyT" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/engine{ + name = "o2 floor"; + nitrogen = 0; + oxygen = 100000 + }, +/area/atmos) +"cyU" = ( +/turf/open/floor/engine{ + carbon_dioxide = 50000; + name = "co2 floor"; + nitrogen = 0; + oxygen = 0 + }, +/area/atmos) +"cyV" = ( +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/turf/open/floor/engine{ + carbon_dioxide = 50000; + name = "co2 floor"; + nitrogen = 0; + oxygen = 0 + }, +/area/atmos) +"cyW" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/engine{ + carbon_dioxide = 50000; + name = "co2 floor"; + nitrogen = 0; + oxygen = 0 + }, +/area/atmos) +"cyX" = ( +/turf/open/floor/engine{ + name = "plasma floor"; + nitrogen = 0; + oxygen = 0; + toxins = 70000 + }, +/area/atmos) +"cyY" = ( +/obj/machinery/portable_atmospherics/canister/toxins, +/turf/open/floor/engine{ + name = "plasma floor"; + nitrogen = 0; + oxygen = 0; + toxins = 70000 + }, +/area/atmos) +"cyZ" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/engine{ + name = "plasma floor"; + nitrogen = 0; + oxygen = 0; + toxins = 70000 + }, +/area/atmos) +"cza" = ( +/turf/open/floor/engine/n2o, +/area/atmos) +"czb" = ( +/obj/machinery/portable_atmospherics/canister/nitrous_oxide{ + valve_open = 1 + }, +/turf/open/floor/engine/n2o, +/area/atmos) +"czc" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/engine/n2o, +/area/atmos) +"czd" = ( +/obj/structure/lattice, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"cze" = ( +/obj/structure/grille{ + density = 0; + icon_state = "brokengrille" + }, +/turf/open/space, +/area/space/nearstation) +"czf" = ( +/obj/machinery/power/solar{ + id = "portsolar"; + name = "Port Solar Array" + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/open/floor/plasteel/airless{ + icon_state = "solarpanel" + }, +/area/solar/port) +"czg" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall_s6"; + dir = 2 + }, +/area/shuttle/escape) +"czh" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall14"; + dir = 2 + }, +/area/shuttle/escape) +"czi" = ( +/obj/structure/window/shuttle, +/obj/structure/grille, +/turf/open/floor/plating, +/area/shuttle/escape) +"czj" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Emergency Shuttle Airlock" + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor2" + }, +/area/shuttle/escape) +"czk" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall_s10"; + dir = 2 + }, +/area/shuttle/escape) +"czl" = ( +/obj/structure/grille, +/obj/structure/window/shuttle, +/turf/open/floor/plating/airless, +/area/shuttle/escape) +"czm" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Emergency Shuttle Airlock" + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor3" + }, +/area/shuttle/escape) +"czn" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Emergency Shuttle Airlock" + }, +/obj/docking_port/stationary{ + dir = 2; + dwidth = 10; + height = 13; + id = "emergency_home"; + name = "emergency evac bay"; + width = 28 + }, +/obj/docking_port/mobile/emergency{ + dir = 2; + dwidth = 10; + height = 13; + width = 28 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor3" + }, +/area/shuttle/escape) +"czo" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall12"; + dir = 2 + }, +/area/shuttle/escape) +"czp" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Emergency Shuttle Airlock"; + req_access_txt = "2" + }, +/turf/open/floor/plasteel/shuttle/red, +/area/shuttle/escape) +"czq" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/port) +"czr" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/port) +"czs" = ( +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/port) +"czt" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/port) +"czu" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/port) +"czv" = ( +/obj/structure/shuttle/engine/propulsion{ + icon_state = "propulsion"; + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/escape) +"czw" = ( +/obj/structure/shuttle/engine/heater{ + icon_state = "heater"; + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/escape) +"czx" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall11"; + dir = 2 + }, +/area/shuttle/escape) +"czy" = ( +/obj/structure/ore_box, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor2" + }, +/area/shuttle/escape) +"czz" = ( +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor2" + }, +/area/shuttle/escape) +"czA" = ( +/obj/machinery/recharge_station, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor2" + }, +/area/shuttle/escape) +"czB" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall7"; + dir = 2 + }, +/area/shuttle/escape) +"czC" = ( +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor3" + }, +/area/shuttle/escape) +"czD" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall3"; + dir = 2 + }, +/area/shuttle/escape) +"czE" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel/shuttle/red, +/area/shuttle/escape) +"czF" = ( +/turf/open/floor/plasteel/shuttle/red, +/area/shuttle/escape) +"czG" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel/shuttle/red, +/area/shuttle/escape) +"czH" = ( +/obj/machinery/power/solar{ + id = "portsolar"; + name = "Port Solar Array" + }, +/obj/structure/cable, +/turf/open/floor/plasteel/airless{ + icon_state = "solarpanel" + }, +/area/solar/port) +"czI" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall15"; + dir = 2 + }, +/area/shuttle/escape) +"czJ" = ( +/turf/closed/wall/shuttle{ + icon_state = "swallc4"; + dir = 2 + }, +/area/shuttle/escape) +"czK" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall13"; + dir = 2 + }, +/area/shuttle/escape) +"czL" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall_f13" + }, +/area/shuttle/escape) +"czM" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall_f11" + }, +/area/shuttle/escape) +"czN" = ( +/obj/structure/window/shuttle, +/obj/structure/grille, +/turf/open/floor/plating/airless, +/area/shuttle/escape) +"czO" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/turf/open/floor/plasteel/shuttle/red, +/area/shuttle/escape) +"czP" = ( +/obj/structure/lattice, +/obj/structure/grille{ + density = 0; + icon_state = "brokengrille" + }, +/turf/open/space, +/area/space/nearstation) +"czQ" = ( +/obj/machinery/suit_storage_unit, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor2" + }, +/area/shuttle/escape) +"czR" = ( +/obj/machinery/door/airlock/mining{ + name = "Emergency Shuttle Storage"; + req_access_txt = "0" + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor2" + }, +/area/shuttle/escape) +"czS" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor3" + }, +/area/shuttle/escape) +"czT" = ( +/obj/structure/closet, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"czU" = ( +/obj/structure/table, +/obj/item/weapon/extinguisher, +/obj/item/weapon/crowbar, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"czV" = ( +/obj/structure/chair, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"czW" = ( +/obj/structure/table, +/obj/item/weapon/storage/firstaid/fire, +/obj/item/weapon/storage/firstaid/regular{ + pixel_x = 2; + pixel_y = 3 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"czX" = ( +/obj/structure/closet/emcloset, +/obj/item/device/radio/intercom{ + broadcasting = 0; + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"czY" = ( +/obj/structure/bed/roller, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"czZ" = ( +/obj/structure/grille, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"cAa" = ( +/turf/closed/wall/shuttle{ + icon_state = "swallc1"; + dir = 2 + }, +/area/shuttle/escape) +"cAb" = ( +/obj/machinery/door/airlock/glass_security{ + name = "Emergency Shuttle Brig"; + req_access_txt = "2" + }, +/turf/open/floor/plasteel/shuttle/red, +/area/shuttle/escape) +"cAc" = ( +/obj/structure/bed, +/turf/open/floor/plasteel/shuttle/red, +/area/shuttle/escape) +"cAd" = ( +/obj/machinery/computer/station_alert, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAe" = ( +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAf" = ( +/obj/structure/chair/office/light{ + name = "Chief Engineer" + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAg" = ( +/obj/structure/chair/office/light{ + name = "Captain" + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAh" = ( +/obj/structure/chair/office/light{ + name = "Head of Security" + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAi" = ( +/obj/item/device/radio/intercom{ + broadcasting = 0; + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAj" = ( +/obj/machinery/ai_status_display, +/turf/closed/wall/shuttle{ + icon_state = "swall1"; + dir = 2 + }, +/area/shuttle/escape) +"cAk" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAl" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAm" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAn" = ( +/obj/machinery/computer/security, +/turf/open/floor/plasteel/shuttle/red, +/area/shuttle/escape) +"cAo" = ( +/obj/structure/table, +/obj/item/weapon/paper_bin{ + pixel_x = -1; + pixel_y = 6 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAp" = ( +/obj/machinery/computer/emergency_shuttle, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAq" = ( +/obj/structure/table, +/obj/item/weapon/folder/blue, +/obj/item/weapon/pen, +/obj/machinery/recharger, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAr" = ( +/obj/machinery/ai_slipper, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAs" = ( +/obj/machinery/door/airlock/glass_command{ + name = "Emergency Shuttle Cockpit"; + req_access_txt = "19" + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAt" = ( +/obj/structure/grille, +/obj/structure/window/shuttle, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAu" = ( +/obj/machinery/status_display, +/turf/closed/wall/shuttle{ + icon_state = "swall7"; + dir = 2 + }, +/area/shuttle/escape) +"cAv" = ( +/obj/machinery/computer/communications, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAw" = ( +/obj/structure/chair/office/light{ + dir = 1; + name = "Research Director" + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAx" = ( +/obj/structure/chair/office/light{ + dir = 1; + name = "Head of Personnel" + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAy" = ( +/obj/structure/chair/office/light{ + dir = 1; + name = "Chief Medical Officer" + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAz" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAA" = ( +/obj/machinery/status_display, +/turf/closed/wall/shuttle{ + icon_state = "swall2"; + dir = 2 + }, +/area/shuttle/escape) +"cAB" = ( +/obj/machinery/computer/crew, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor3" + }, +/area/shuttle/escape) +"cAC" = ( +/obj/machinery/door/airlock/glass_medical{ + id_tag = null; + name = "Escape Shuttle Infirmary"; + req_access_txt = "5" + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor3" + }, +/area/shuttle/escape) +"cAD" = ( +/obj/machinery/door/airlock/glass_medical{ + id_tag = null; + name = "Escape Shuttle Infirmary"; + req_access_txt = "0" + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor3" + }, +/area/shuttle/escape) +"cAE" = ( +/obj/structure/bed, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor3" + }, +/area/shuttle/escape) +"cAF" = ( +/obj/structure/sink{ + icon_state = "sink"; + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/structure/mirror{ + pixel_x = -30 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor3" + }, +/area/shuttle/escape) +"cAG" = ( +/obj/machinery/door/airlock{ + name = "Emergency Shuttle Restroom" + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor3" + }, +/area/shuttle/escape) +"cAH" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAI" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAJ" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAK" = ( +/obj/structure/table, +/obj/item/weapon/extinguisher, +/obj/item/weapon/crowbar, +/obj/machinery/recharger, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAL" = ( +/obj/machinery/sleeper{ + icon_state = "sleeper-open"; + dir = 8 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor3" + }, +/area/shuttle/escape) +"cAM" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall_s9"; + dir = 2 + }, +/area/shuttle/escape) +"cAN" = ( +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/port) +"cAO" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall_s5"; + dir = 2 + }, +/area/shuttle/escape) +"cAP" = ( +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor3" + }, +/area/shuttle/escape) +"cAQ" = ( +/obj/structure/closet/secure_closet/medical2, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor3" + }, +/area/shuttle/escape) +"cAR" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/port) +"cAS" = ( +/obj/structure/toilet{ + dir = 1 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor3" + }, +/area/shuttle/escape) +"cAT" = ( +/obj/structure/table, +/obj/item/weapon/retractor, +/obj/item/weapon/hemostat, +/obj/item/weapon/scalpel, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor3" + }, +/area/shuttle/escape) +"cAU" = ( +/obj/structure/table/optable, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor3" + }, +/area/shuttle/escape) +"cAV" = ( +/obj/structure/table, +/obj/item/weapon/circular_saw, +/obj/item/weapon/cautery{ + pixel_x = 4 + }, +/obj/item/weapon/surgical_drapes, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor3" + }, +/area/shuttle/escape) +"cAW" = ( +/turf/closed/wall/shuttle, +/area/shuttle/escape) +"cAX" = ( +/obj/machinery/power/tracker, +/obj/structure/cable, +/turf/open/floor/plasteel/airless{ + icon_state = "solarpanel" + }, +/area/solar/port) +"cAY" = ( +/obj/docking_port/stationary{ + area_type = /area/space; + dheight = 9; + dir = 2; + dwidth = 5; + height = 22; + id = "syndicate_se"; + name = "southeast of station"; + turf_type = /turf/open/space; + width = 18 + }, +/turf/open/space, +/area/space) +"cAZ" = ( +/obj/docking_port/stationary{ + area_type = /area/space; + dheight = 9; + dir = 2; + dwidth = 5; + height = 22; + id = "syndicate_s"; + name = "south of station"; + turf_type = /turf/open/space; + width = 18 + }, +/turf/open/space, +/area/space) + +( +1, +1, +1) = {" +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaabaabaacaacaacaacaacaacaacaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaabaabaabaabaabaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaadaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaadaadaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaadaadaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaafaagaagaagaagaagaafaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaiaajaakaalaamaanaanaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaoaajaajaapaajaajaajaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaqaajaajaajaaraajaasaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaataafaafaafaauaafaafaafaavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaawaajaaxaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaayaajaazaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAaafaafaafaafaafaayaajaazaaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaCaajaajaaDaafaayaajaazaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaabaabaabaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaCaajaaFaaGaafaayaajaazaafaafaaHaaIaaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaabaabaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaCaajaajaaLaafaajaajaajaafaajaajaajaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaabaabaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaCaajaajaajaaMaajaajaajaaNaajaajaajaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaCaajaajaajaaOaajaajaajaaPaajaajaaQaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAaafaafaafaafaafaafaaRaajaajaafaafaafaafaafaafaaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaSaaSaaTaaUaaVaafaajaajaajaafaaWaaXaaYaaZabaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaajaajaajaaFaajabbaajaajaajabcaajaaFaajaaFabdaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacabeaacaacaabaabaabaabaabaabaababeaabaabaabaabaabaababfabfabfaacaacaacaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafabgaajaajaajaajabhaajaajaajabiaajaajaajaajaajaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacabeaacaacaacaacaacaacaacaacaacaacaabaabaababeaabaabaabaabaabaabaabaabaababeaabaabaabaabaabaabaabaababfabfaacaacaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafabgaajaajabjabkaafablabmablaafabnaboaajaajaajaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaababeaabaabaabaabaabaabaabaabaabaabaabaabaababeaabaabaabaabaabaabaabaabaabaabaabaabaababeaabaabaabaababpabpabpabpabpabeabpabpabpabpabpabpaabaababfabfaacaacaacaacaacaacaacaacaacaacaabaabaabaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaajaajabqaafaafaafabrabsaajaafaafaafaajaajaajaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaababeaabaabaabaabaabaabaabaabaabaabaabaabaababeaabaabaabaabaabaabaabaabaabaabaabaababpabeabpabpabpabpabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpabpaabaabaababfabfaacaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafabtabuabvaafaaaaafabwabwabwaafaaaaafabxabyabzaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaaEaaEabpabeabpabpabpabpabpabpabpabpabpabpabpabpabpabeabpabpabpabpabpabpabpabpabpabpabpabpabpabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaabaabaababfabfaacaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafabwabwabwaafaaaaatabAabBabCaavaaaaafabwabwabwaafaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpabpaabaababfabfabfaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatabAabBabCaavaaaaaaaaaaaaaaaaaaaaaaatabAabBabCaavaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaaEaaEabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaabaabaababfabfaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaaEaaEabDabEabFabGabGabGabHabHabGabGabGabGabIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpabpaabaabaababfaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaaEaaEabDabJabKabLabLabMabNabOabMabLabLabLabPabGabGabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaabaababfaacaacaacaacaacaacaacaacaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaaEaaEabDabJabRabLabSabLabSabLabSabLabSabLabHabTabUabVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaabaababfaacaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaaEaaEabDabJabRabLabSabLabSabWabSabLabSabLabXabLabLabHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeabeabeabeabeabeabeaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaaEaaEabDabJabRabLabSabLabSabLabSabLabSabLabHabTabYabVaaaabZacaacbaaaaccacdaceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaabaabaacaacaacaacaacaacaacaacaacaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaaEaaEabDabJabKabLabLacfacgachaciabLabLabLabPabGabGacjaaaackaclackaaaacmacnacmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaabaabaabaacaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaaEabDacoacpabXabGabGabHabHabGabGacqabGacrabDabDabDabDackacsackactacmacuacmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpabpaabaabaacaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaaEaaEaaEacvacwacvabDabDabDabDacvacwacvabDabDabDabDacxacyaczacAacBacCacDacEacxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaabaabaacaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaaEaaEacvacFacvabDabDabDabDacvacFacvabDabDabDabDacxacGacFacHacxacGacFacIacxacxacvacvaaaaaaacJacKacKacLacKacKacKacMacKacKacNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaabaabaacaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabacOacPacxacvacwacvacxacvacvacxacvacwacvacxacvacvacxacxacxacQacRacxacxacSacRacxacTacUacvacvacvacLacVacVacVacVacVacVacVacWacXacYacNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpabpaabaabaacaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabacZadaacxadbadcadcaddadcadeadfadgadgadhadiadgadgadjadkadladmadnadoadpadqadradoadoadsadtacFaduadvadwadwadwadwadwadwadwadwadwadwadxaaaaaaaaaaaaaaaaaaabeaaaaaaaaaaaaabpaabaabaabaacaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabacOacPacxadyadzadAadAadBadCadDadEadFadGadHadIadIadJadKadIadLadMadMadNadOadMadPadoadpadQacvadRacLadSadSadSadSadSadSadSadTadTadUadVaaaaaaaaaaaaaaaaaaabeaaaadWadWabpabpaabaabaabaabaabaacaabaacaacaacaacaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabacOadXacxadYadZaeaaebaecaedaeeaefaegacxacxacxacxaehaeiaejaekaejaejaelaejaejaejaemaemacvaaaaaaaenacKacKacLacKacKacKacMacKacKadVaaaaaaaaaaaaaaaaaaaaaabeadWadWaabaabaabaabaabaabaabaabaabaabaacaacaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabacOaeoacxaepadZaeqaeqaeraeqaesaefaetacxacFaeuacxaevaewaexaeyaezaeAaeBaeCaeCaejacxacvacvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadWadWabeadWaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabacOaeoacxaeDadZaeEaeFaeGaeEaeHaefaeIaeJacFaeKacxaeLaeMaeNaeOaePaeQaeBaeRaeSaejaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadWadWaababeaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabacOacOacOacOacOacOaeoacxaeTadZaebaeUaeVaeWaeXaefaeYacxaeZafaacxafbaewafcaeRaeyaeRafdafeafeaejaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadWaabaababeaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabacOaffafgafhafiafiafiafjafkaflafmafmafmafnafoafpafqacxafrafsacxaftafuafvafwafxafyafzafAafeaejaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadWaabaabafBafBafBafBafBafBafBafBafBafBaabaabaabaabaabaabaabaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaabaabacOafCafDacOaeoaeoafEacxafFafGafHafIadoafJafKaeIadoafLafLafLafLafLafMafLaejaejaejaejaejaejaejaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadWadWaabaabafBafNafOafPafQafBafRafSafTafBafBaabaabaabafUafUafUaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaabaabacOafVafWafXafYaeoafZafZagaagaagbagaagcafZagdageagfafLaggaghagiagjagkafLaglagmagnagoagpagqagragragsagsagsagsagsagsagsagsagsagsagsagsagsagsagsagtaaaadWadWaabaabaabafBaguafQagvafQagwagxaguagxagyafBafUafUafUafUagzagAafUafUafUaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaabaabacOacOacOacOagBaeoafZagCagDagDagEagFagGafZagHagIagJafLaggagKagLagMagkafLagNagOagPagQagRagSaaEaaEabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDagTabpabpaabaabaabaabafBagUagVagWagVagXagYagZahaahbafBafUahcahdaheahfahgahdahgafUaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaacaacaacaacaacaabaabaabacOacOacOacOacOacOacOacOacOacOacOacOahhahiahjahkahlahmahnahoahpahpahqahrahsahtagIagJafLahuahvahwahxahyafLahzahAahBagSahCagSaaEaaEabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabDabDahDabpaabaabaabaabaabafBahEahFahGafQafQafQahHaguahIafUafUahJahKahLahMahLahNahOafUafUaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaacaacaacaacaabaabaabacOahPahlahlahlahlahlahQahRahlahlahlahSahTahUahVahWafZahXahYahZaiaaibaicafZaidagIagJafLaieaifaigaihaiiafLagNaijaikailaimagSaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagSagSainagSagSaabagSagSagSafBaioafQafQafQaipafQaguaguaiqafUahgahKairafUafUafUaisahNahgafUaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaadaadaabaabaabaabaabacOaitaiuahUahUahUaivahUahUahUahUahUaiwaitaixaixaixaiyaiyaiyaiyaiyaixaixaixaizaiAaiBaiCaiDaiEaiFaiGaiHafLagNaiIaiJaiKaiLagSaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagSaiMaiNaiOagSaabagSaiPaiQaiRaiSaiTagVaiUagvaiVagZaiWaiXafUaiYahfafUafUaiZafUafUahfajaafUaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaabaabaabaabaabaabaabaabaabaabacOaitagBaeoaeoaeoaeoaeoaeoaeoaeoaeoagBaitaixajbajcaiyajdajeajfaiyajgajhaixajiajjajkajlajmajnajoajpajqafLagNajrajsagSagSagSagSagSagSajtajuajuajuajuajuajuajuajuajvajwabDagSajxaiPajyagSaabagSaiPajzajAajBajCagVajDajEajDagZajFajGafUajHajIafUajJajKajLafUajIajMafUafUaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEajNajNajNaaEajNajNajNajNajOajNajNaaEajNajNaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaabaabaabaabaabaabaabaabaabaabacOaitagBajPajPajPajQajRaeoajSajTajUagBaitaixajVajWaiyaiyajXaiyaiyajYajZaixakaagIakbakcakdakeakfakgakhafLagNajrakiagSakjakkaklakmagSaknakoakoakoakoakoakoakoakoakpakqakragSagSagSaksagSagSagSagSajzafBaktakuafBafBafBafBakvakuajGakwakxakyakzakAakBakCakxakDakzakEafUakFaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEajNaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaaEaaEaaEaabaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaabaabaabaabaabaabaabaabaabaabacOaitagBakGakGakGakGakGakGakGakGakGagBaitaixakHakIakJakKakLakMakNakOakPaixaizagIagJakQakRakSakTakUakVafLakWajrakXagSakYakZalaalbagSaknakoakoakoakoakoakoakoakoakoalcakragSaldalealfalgalhalialjalkallalmalnalnalnaloalpalnalqajGafUalralsaltaluafUalualtalsalvafUafUaabaaEaaEaaEaaEaaEaaEaaEaaEajNaaEalwalxalyaaEalwalxalyaaEalwalxalyaaEajNaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaaEaaEaaEaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaacaacaacaacaacaacaadaadaabaabaabalzalzalzalzalzalzalzacOaitagBakGalAalAalAalAalBalAalAakGagBaitaixalCalDalEalDalFalDalGalHalIalJalKalLalMafLafLafLafMafLafLafLalNalOalNagSalPalQalRagSagSaknakoakoakoakoakoakoakoakoakoalcakragSaiPajzalSaiPalTaiPalUalVallalWaiPalXaiPaiPalYaiPalZamaafUambalsamcalsalsalsamdalsameafUaabaabaaEaaEaaEaaEaaEaaEaaEaaEajNaaEalwamfalyaaEalwamfalyaaEalwamfalyaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaaEaaEaaEaaEaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabalzalzalzalzalzalzalzacOaitagBakGamgamhamhamhamhamhamhakGamiamjamkamlammamnamoampamoamoamoamqamramsamtamuamvamwamwamxamwamwamyamzamAamBamCamDamEamFamGagSaknakoakoakoakoakoakoakoakoakoalcakragSaiPajzalSamHamHamHamHamHamHamHamHamHamHagSagSaiPalZamIafUahJahgamJalsamKalsamLahgahOafUaabaabaaEaaEaaEaaEaaEaaEaaEaaEajOaaEalwamfalyaaEalwamfalyaaEalwamfalyaaEajNaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaacaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaaEaaEaaEaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabacOacOacOacOacOacOacOacOaitagBakGamMamNamNamNamNamNamOakGagBaitaixamPamQamRamSamTamUamVamWamXaixamYamZanaanbaiPaiPajzaiPaiPancaiPaiPalSaiPaiPandajzalSagSaknakoakoakoaneakoakoakoakoanfakqakragSaiPajzalSamHanganhanianjankanlanmannamHanoagSaiPalZamIafUafUanpanqanransantanuanvafUafUaabaabaabaaEaaEaaEaaEaaEaaEaaEajNaaEalwamfalyaaEalwamfalyaaEalwamfalyaaEajNaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaaEaaEaaEaaEaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabacOanwanxanyacOanzanAacOaitagBakGanBanCanDanEanFanEanGakGagBaitaixaixaixaixaixaixaixaixaixaixaixanHagIanIagSalUaiPajzaiPaiPanJaiPaiPalSaiPaiPanJajzalSagSanKajuajuanLajuanMajuanNajuanOanPabDagSaiPajzalSamHanQanlanRanlanlanlanlanSamHanTagSaiPalZamIalVafUafUanUamJalsamLanUafUafUanVanVanVanVanWaaEaaEaaEaaEaaEajNajNaaEalwamfalyaaEalwamfalyaaEalwamfalyaaEajNajNajNajNaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaaEaaEaaEaaEaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabacOanwanXanYacOanZaeoaoaaitagBakGaobaocaodaoeaocaofaofakGagBaitaeoaeoaeoaeoaeoaeoaogaeoaeoaeoaohanHagIanIagSaiPaiQaoiaojaljaokaolaomaonaolaljaooaoiaopagSabDabDaoqaoraoqaosaoqaoraoqabDabDaotagSalUajzalSamHaouaovanRaowaoxanlaoyaozamHamHagSaiPalZamIaiPaiPafUafUajGaoAaoBafUafUafUaoCaoDaoEaoFanWanWanWaaEaaEaaEaaEaaEaaEaaEaoGaaEaaEaaEaoGaaEaaEaaEaoGaaEaaEaaEaaEaaEajOaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaaEaaEaaEaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabacOaoHaoIaoJacOaoKaoLacOaoMahkaoNaoOaoPaoQaoRaoRaoRaoRaoSaoTaitaeoaeoaeoaeoaeoaeoajTaeoaeoaeoacOaoUagIaoVaoqaoqaoWaoqaoqaoXaoXaoXaoXaoYaoXaoXaoqaoqaoZaoqabpabpapaapbapaapcapaapbapaabpabpabpaoqaoqajzalSamHanlanlapdapeapeapeapeapeapfamHamHamHapgamIaiPaphaphapiapjapkaplapmaphaphapnapoappapqaprapsapraptaptapuapvapvapvapvapvapvapvapvapvapvapvapvapvapvapwaptapxaaEajNaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaaEaaEaaEaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaaEapyapyapyapyapyapyapyapyapyapyapyapyapyapyapyapzapAacOapBacOacOaitagBakGapCamNapDapEamNapFapGakGapHapIapJapJapJapJapJapJapJapJapJapJapJapKapLanIaoqapMapNapOaoqapPapQapRapSapTapUaoXapVapWapXapYapYapYapZapYaqaaqbaqcaqdaqeaqfaqgaqhaqiaoqaqjalSamHanlaqkaqlanlanlanlanlanlaqmaqnaqoamHaqpamIaiPaphaqqaqraqsapkaqtaqraquaphaqvaqwaqxaqyanWanWanWaaEaaEaaEaaEaaEaaEaaEaqzaaEaaEaaEaqzaaEaaEaaEaqzaaEaaEaaEaaEaaEajNaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaaEaaEaaEaaEaabaabaabaabaabaabaabaabaabaabaabaabaabaaEaaEaaEaaEapyaqAaqBaqCaqDaqCaqCaqEapyaqFaqGaqHaqIaqJapyaitaoJacOacOacOaqKaitagBakGaqLamNaqMaqNamNamNaqOakGaqPaitapJaqQaqRaqSaqTaqUaqVaqWaqXaqYapJaizagIanIaoqaqZaqdaraapaarbarcarcarcardarearfargaqdarhariariariariariarjarkarlaqdaqdarmarmarmarnaoqaroalSamHanQanlanlanlarparqarpanlanlanlanSamHalZamIaiPapharrarsartaruarvarwarxaphanVaryarzanVanWaaEaaEaaEajNajNajNajOaaEalwarAalyaaEalwarAalyaaEalwarAalyaaEajNajNaaEajNaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaaEaaEaaEaabaabaabaabaabaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEapyarBarCarCarCarCarDarEarFarGarHarIarHarEarJarKarLarMarNarNarNarOaiwakGarPamNarQarRarSarTarUakGarVaoMarWarXarXarYarZasaarZarZarZasbascasdagIanIaoqaseaqdasfaoqasgasharcasiasjaskaslasmasnasoaspasqasqasrasrasrasrassasrastasnasnasnasnasuasvalSamHaswasxasyaszarpasAarpasBasCasDasEamHalZamIaiPaphasFasGasHasIasJasKasLaphasMasNasOasPaaEaaEaaEaaEaaEaaEaaEajNaaEalwarAalyaaEalwarAalyaaEalwarAalyaaEajNaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaacaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaaEaaEaaEaaEaabaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEasQapyasRarCasSarCasSarCasTasUasVasWasXarCasYapyasZataatbatcatcatdaeoateakGatfamNarQatgamNamNathakGatiaitapJatjatkatlatmarZarZatnatoatpatqatragIanIaoqatsattatuaoqatvatwatxatyatzatAarfargaqdaqdatBatCatDatDatDatEatFatGatHatIatJatKatLatMaoqatNalSatOatPatPatPatPatQatRatSatPatTatTatTatOalZamIatUatUaphaphatVatWatXaphaphatUatUasNasOasPaabaabaaEaaEaaEaaEaaEaaEaaEalwarAalyaaEalwarAalyaaEalwarAalyaaEajOaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaacaacaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaaEaaEaaEaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEasQapyatYatZauaauaauaauaaubaucaudaueasXarCaufapyaugaugaugaugaugauhaugaugakGakGauiaujaukaulaumakGakGaunaitapJauoaupauqatmaurausautauuauvapJauwauxauyaoqauzauAauzaoqauBauCaoXarfauDaoXaoXargaqdauEauFauGauEaqdaqdauHaoqaoqaoqauIauJaoqaoqaoqaoqauKauLatOauMauNauOatPauPauQauRauSauTauUauVatOalZamIatUauWauXaphauYauZavaaphavbavcatUasNavdasPaabaabaabaabaaEaaEaaEajNaaEalwarAalyaaEalwarAalyaaEalwarAalyaaEajNaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEasQapyaveavfavfavfavgavgavhapyaviavjavkarHavlapyavmavnavoavpavqavravsavtavuavvavwavwavxavwavyavzavzavzavAavzavzavzavzavzavzavzavzavzavzavzavBavCavDaoqavEavFaqdavGavHavIavJavKavLavMavNavOaqdaqdatBavPavQaqdaqdavRaoqavSavTavUavVavWavXavYaoqavZawaawbawcawdaweawfaweawgaweawhawiawjawkatOalZamIatUawlawmawnawoawpawqawrawsawtatUasNasOasPasPasPasPasPaaEaaEaaEajNaaEalwawualyaaEalwawualyaaEalwawualyaaEajNaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEawvapyapyapyapyapyawwawxawwapyapyawyavjawzarCavkawAawBawCavqavqavqavqavqavqavqavqawDavqawEavqawFavzawGawHawIawJawKawLawMawNawOawPawQawRawSawTawUavCawVapaawWavFaqdawXavHawYauzawZaxaaxbaxcaxcaxcaxdaxeaxfaxdaxcaxgaxhaxiaxjaxkaxlaxmaxnavSavYaoqaxoaxpatOaxqaxraxsatPaxtaxuaxvauSaxwaxxaxyatOalZaxzatUaxAaxBatUaxCaxDaxEatUaxFaxFatUasNasOasPaxGaxHaxIasPasPaaEaaEajOaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEawwaxJaxKawwaxLaxMaxMaxMaxNawwasVavjarCarCaxOaxPaxQavqaxRaxSaxSaxSaxSaxSaxSaxSaxTaxSaxUavqaxVawTaxWaxXaxYaxZaxZaxZaxZayaaybaycaycaycaycawTaydayeayfaygatDayhatDayhayiatDayjaykatDatDatDatDatDatDaylaymaqdaqdaqdaynaoqayoavSaypayqavSayraoqaoqaoqaysatOatOaytatOatOaytayuayvatOaytatOatOatOaywayxatUatUatUayyayzayAayBatUatUatUatUasNayCayDayEayFayGayHayIayJayJayJayJayJayJayJayJayJayJayJayJayJayJayJayJaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaaEaaEaaEaaEaaEaaEaabaabaabaabaabaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEayKasVasTayLasVarCarCayMaubayNaudayOayParCasXawwaxQavqayQayRayRayRayRayRayRayRayRayRaySavqaxVayTaxWaxXayUaycayVayVayWayVayXaycayYayZayZazaazbavCawVazcaqdaqdaqdaqdazdaqdauzazeazfazgaqdazhaqdaziazjasnasnazkazlazmaoqayravSaypaznavSavSaoqazoazpazqazrazsaztazsazuazvazwazxazyaztazsazzazsazAaztazsazBazsazCazDazEazFazGazHazIazIazJazKazLazMazNazOazPasPaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEajOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaaEaaEaaEaaEaaEaabaabaabaabaabaabaabaabaabaabaabaabaabaaEaaEaaEaaEaaEawwazQazRawwazSazTazUazVazWawwasVarCazXarCazYapyazZavqayQayRaaEaaEaaEaabaaEaaEaaEayRaySavqaxVawTaAaaxXaycaycaycaycaAbaycaxXaycaycaAbaAcawTawUavCawVauzawWaAdasnasnaAeasnaAfaAgaAgaAgaAgaAhaAgaAiaAjaAkaAlaoqaoWaoqaoqaAmaAnaAoaApayraAqaoqaAraAsaAtaAuaAvaAvaAvaAvaAvaAwaAxaAvaAyaAzaAvaAAaABaAAaAvaAvaACaADaAEaAFaAGaAHaAIaAJaAJaAJaAKasPasPasPasPasPasPaaEaaEajNajNaaEajNajNajOajNajNaaEajNajNajNajNajNajNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaaEaaEaaEaaEaabaALaALaALaALaAMaAMaAMaALaALaALaabaabaabaabaaEaaEaaEaANapyapyapyapyapyapyapyapyapyapyaAOaAPaAQaAPaARaASaATaAUaAVayRaaEaaEaabaabaabaaEaabayRaySaAWaAXaAYaAZaBaaycaycaBbaBcaBdaBeaBfaycaycaycaBgaBhaBiavCaBjaoqaBkaqdaqdaBlaBmaBnaxiaBoaBpaBqaBraBsaBtaBuaBraBqaBraBvaBwaBxaxiaxkaByaBzaBAaBBaBBaxiaBCaBDaBEaBFaBGaBGaBGaBGaBGaBHaBIaBGaBJaBGaBGaBKaBLaBKaBMaBKaBNaBOaBPaBQaBRaBSaBTasOaBUaBUaBUaBUaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaaEaaEaaEaaEaabaabaabaALaBVaBWaBXaBYaBZaCaaCbaCcaALaabaabaabaaEaaEaaEaaEaaEaCdaCeaCfaCgaChaCiaCjaCkasVaClarCarDaCmarHaCnapyaCoavqaCpayRaaEaaEayRayRayRayRayRayRaySavqaCqavzaCrawTawTayTawTawTavzawTaCsayTawTawTawTavzawUavCaCtaoqaCuapaaCvaCwaCxaoqaoqaoqaoqaoqaoqaoqaoqaoqaoqaoqaoqaoqaoWaoqaoqaoqaoqaoqaoqaoqaoqaoqaCyaBQaCzaCAaCAaCAaCAaCAaCAaCAaCAaCAaCAaCAaCAaCAaCBaCAaCAaCAaCBaCAaCCaBQaCDaCEaCFaCGaBUaCHaCIaBUaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaaEaaEaaEaabaabaabaabaAMaBWaBWaBWaCJaBWaBWaCKaCLaALaALaALaaEaaEaaEaaEaaEaaEaCdaCMapyapyapyapyaCNapyaCOaCParCarCaCQauaaCRaCSaCTaCUaCVayRaaEaaEayRaCWaCXaCXaCXaCXaCYaCZaDaaDbaDcaDdaDdaDdaDdaDdaDeaDdaDfaDdaDdaDdaDdaDgaDhaDiaDjaDkaDlaDmaDmaDnaDoaDpaDqaDqaDqaDqaDqaDqaDqaDqaDraDqaDsaDtaDuaDqaDqaDvaDqaDqaDqaDwaDxaDyaDzaDAaDBaCAaDCaDDaCAaDCaDDaCAaDCaDDaCAaDCaDDaCAaDEaDFaDFaDGaDHaCAaDIaBQaDJaCEaDKaDLaBUaDMaCFaDNaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaaEaaEaaEaabaabaabaabaabaAMaBWaDOaBWaBWaDPaCKaCKaDQaDRaDSaDTaaEaaEaaEaaEaaEaaEaCdaCdaCdaCdaDUapyaDVapyapyarCarCarCaDWaDXaDYawwaxQavqaCpayRaaEaaEayRaDZaEaaEbaEbaEbaEcaEbaEbaEdaEeaEfaEgaEgaEgaEgaEgaEgaEhaEgaEgaEgaEgaEiaEjaEkaElaEgaEgaEgaEgaEgaEhaEgaEgaEgaEgaEgaEmaEfaEgaEgaEgaEgaEgaEgaEhaEgaEgaEgaEgaEgaEgaEfaEgaEnaEoaEpaEqaCAaEraEsaCAaEtaEuaCAaEtaEvaCAaEtaEwaCAaExaDGaDGaDGaEyaCAaCCaEzaEAaEBaECaEDaEEaEFaEGaDNaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaEHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaaEaaEaaEaabaabaabaabaabaabaAMaBWaBWaBWaEIaEJaCKaCKaEKaALaALaALaELaaEaaEaaEaaEaaEaCdaCdaCdaCdaDUawwaEMaENaCgaCiaEOarCarCarCaEPawwaxQavqaCpayRaabaaEayRaDZaEQaERaESaETaEUaEVaEWaEXaEYaEZaFaaFaaFaaFbaFcaFcaFdaFaaFaaFaaFeaFfaFgaEZaFaaFaaFaaFaaFhaFaaFiaFaaFaaFaaFjaFkaFlaEZaFaaFaaFaaFmaFcaFcaFnaFaaFoaFpaFmaFcaFqaFraFsaFtaFuaBQaFvaCAaFwaFxaCAaFyaFxaCAaFzaFxaCAaFAaFxaCAaFBaDGaDGaDGaExaCAaFCaFDaFEaFFaFGaFHaFIaFJaFKaDNaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaaEaaEaaEaabaabaabaabaabaabaabaALaALaFLaFMaBWaBWaCKaCKaFNaALaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEasQapyapyapyapyapyapyarCaFOarCaFPapyaFQaFRaCVayRaabaabayRaDZaEQaFSaugaugayRaFTayRaugaFUaFVaFVaFVaFWaFVaFXaFYaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFZaFVaFVaFVaFVaFVaFYaFYaFVaGaaGbaGaaGcaGaaGdaGaaGcaGcaGeaGfaEqaCAaGgaGhaGiaGjaGkaGlaGmaGnaGoaGpaGhaGqaGraGsaGsaGsaGtaCAaGuaGvaGwaCEaGxasOaBUaBUaBUaDNaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaaEaaEaabaabaabaabaabaabaabaabaabaALaALaALaALaGyaGzaALaALaALaabaabaabaaEaaEaaEaGAaGAaGAaGBaGCaGDaGAaGAaGEaGFaGGaGHapyapyapyapyapyapyaGIavqaCpayRayRayRayRaDZaGJaGKaGLaGMaGNaGOaGNaGPaGQaFVaGRaGSaGTaFVaFVaFVaFVaGUaGTaGTaGTaGTaGRaGVaGWaGRaGTaGTaGTaGTaGTaGTaGTaGTaGTaGTaGXaGYaGTaGZaHaaFVaFVaFVaFVaHbaHcaHdaGcaHeaHcaHfaHgaHhaHiaHjaHkaHlaHmaGhaHnaHmaGhaHoaHnaGhaHmaHpaHqaHpaHnaHmaHpaHmaHnaHlaHraHsaDJaCEaGxasOaBUaHtaHuaDNaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaaEaaEaabaabaabaabaabaabaabaabaabaabaabaabaabaALaALaALaALaabaabaabaabaabaabaaEaaEaGAaHvaHwaHxaHyaHzaHAaHBaHCaHDaHDaHEaHFaHFaHFaHFaHFaHGaGIavqaHHaHIaHIaHIaHIaHJaHKaHLaugaHMavqaHNaHOaHPaHQaHRaGTaGTaGTaGTaGTaGTaGTaHSaHTaHTaHTaHUaGTaGTaGTaHSaHTaHTaHTaHVaHWaHXaHSaHTaHTaHTaHYaHZaHZaHZaHZaHZaHZaHZaIaaIbaIcaIdaGcaIeaIcaHfaHfaGaaIfaIgaIhaIiaIjaIkaIjaIjaIkaIkaIjaIlaIjaImaIkaInaIoaIjaIpaIjaIjaIiaIqaIraIsaCEaItaIuaIvaIwaIxaDNaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaGAaIyaIzaIzaIAaIBaICaIDaIEaIFaIFaIFaIFaIFaIFaIFaIFaugaIGaEbaEbaEbaEbaEbaEbaIHaIIaFSaFVaFVaHRaFVaIJaIKaILaFVaFVaFVaFVaFVaFVaFVaFVaFVaIMaIMaIMaFVaFVaFVaFVaFVaIMaIMaIMaFVaFVaFVaFVaIMaIMaIMaFVaFVaFVaFVaFVaFVaFVaFVaGcaINaIOaIPaIQaIRaISaISaITaIUaIVaIWaEqaCAaIXaIYaIZaJaaJbaJcaJdaJeaJfaJgaJcaJhaJiaJjaJkaJlaJmaJnaJoaJpaJqaCEaJraJsaJtaJuaJvaDNaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaGAaJwaJxaJyaIAaIBaJzaIDaJAaJBaJCaJDaJEaJFaJBaJGaJHaGIaGIaJIaJJaJKaJLaJMaJIaJNaEQaFSaFVaGTaGTaFVaJOaIKaJPaJQaGTaJRaJSaJTaJSaJUaJVaJVabpabpaJWaJWaJWaJWabpaJWabDabDabpabDabpabpabpabpabpabpabDabDabDabDabDabDabpabpaJXaJYaJZaKaaGcaKbaHfaIOaKcaGaaKdaBQaEqaCAaCAaCAaCAaCAaCAaCAaCAaCAaCAaCBaKeaFxaCAaCAaKfaCAaCAaCAaCCaJpaDJaCEaKgaKhaKiaKiaKiaKiaKjaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaGAaKkaIzaKlaIAaIBaKmaKnaKoaJBaJBaJBaJBaJBaKpaIDaKqaKraKraKraKraKraKraKraKraKsaKtaKuaFVaGTaGTaFVaKvaIKavqaFVaGZaKwaFVaFVaFVaJVaJVaJVabpabDabDabDabDabDabpabDabDabDaKxabDabDabDabDabpabpabDabDabDabDabDabDabDaKyaKzaKAaKBaKCaKDaGcaKEaKFaKGaKHaGcaKIaBQaEqaCEaKJaKKaKLaKMaKNaKOaKPaKQaCAaKRaKSaKTaCAaKUaKVaCAaKWaCAaKXaKYaKZaCEaLaaLbaKiaLcaLdaLeaKiaKiaKiaLfaLfaLfaLfaKiaKiaKjaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaGAaLgaLhaLiaLjaLkaLlaLmaLnaLoaLpaLpaLpaLqaJBaLraKqaLsaLtaLuaLvaLwaLxaLyaLzaLAaLBaLCaFVaGTaGTaFVaLDaLEayRaFVaFVaFVaFVabpaJVaJVaJVaJVabpabpabpabpabpabpaLFabpabpabpabpabDabDabDabDabpabpabDabDabDabDabDabDaKyaLGaLHaLIaLJaLKaLKaLKaLKaLKaLLaLMaLLaAraBQaEqaCEaLNaLOaLPaKMaLQaLRaLSaLTaCAaLUaLVaLWaCAaLXaLYaLZaMaaCAaCCaJpaDJaCEaLaaLbaKiaKiaKiaMbaKiaMcaMdaMeaMfaMgaMhaMiaMjaKjaabaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaMkaMkaMkaMkaMkaMkaMkaMkaMkaMkaMkaMkaGAaHBaHBaHBaHBaHBaHBaIDaMlaMmaMnaMoaMpaMqaJBaLraKqaMraMsaMtaMtaMuaMvaMwaMxaMyaMzaMAaFVaGTaMBaFVaMCaMDabpabpabpabpabDabDabDabDabDaJVabpabDabDabDabDabDabpabDabDabDaMEaMFaMGaMHaMGaMGaMGaMHaMIaMIaMIaMJaMIaMKaLHabDaMLaMMaMNaMOaMPaMQaMRaMSaMTaMUaMVaBQaEqaCEaKMaMWaKMaKMaKMaMXaMYaKMaCAaCAaCAaCAaCAaCAaCBaCAaCAaCAaCCaMZaNaaCEaLaaLbaKiaNbaNcaNdaNeaNdaNdaNdaNfaNgaNhaNiaNjaKjaabaabaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaMkaNlaNmaNnaNoaNpaNqaNraNsaNtaNuaNvaNwaIDaNxaNyaNzaNAaNBaNCaNDaNEaNFaNGaNFaNHaJBaNIaKqaMtaNJaNKaNLaNMaNNaMtaLzaNOaNPaNQaNRaGTaNSaFVaNTaNUabDabpabpabpabDabDabDabDabDabDabpabDabDaJWabDabDabpabDabDaKyaNVaLHabDabDabDabpabpaotabpabDabDabDabDabDabDabpaLKaNWaNXaNYaNZaNZaOaaObaOcaOdaOeaOfaOgaOhaOiaOjaOkaOkaOkaOlaOmaOnaOoaOpaOqaOraOsaOtaOuaOvaOwaOxaOyaOzaOAaCEaLaaLbaKiaOBaNdaNdaKiaOCaODaOEaNdaOFaOGaNiaOHaKjaabaabaabaabaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaMkaNoaNoaOIaNoaOJaOKaOLaOMaONaOKaOOaOPaIDaOQaORaOSaORaOTaKnaOUaOVaJBaOWaJBaNHaJBaLraKqaOXaOYaOZaPaaPbaNNaPcaKraPdaPeaNQaFVaGTaGTaFVabDaPfabDaKyaMFaMGaMHaMIaMIaMIaMJaMIaMGaMIaMJaMIaMIaMIaMHaMIaMIaMKaPgabDaPhaPhaPhaPhaPhaPhaPhaPiaPiaPjaPjaPjaPjaPiaPiaPkaPlaPmaPnaPoaLKaPpaPqaLLaPraBQaEqaCEaPsaPtaKMaLQaLQaPuaPvaPwaLQaPxaPyaPzaPAaPBaPBaPBaPCaPxaCCaJpaPDaCEaLaaLbaKiaPEaPFaPGaKiaPHaPIaPJaPKaPLaPMaPNaPOaKjaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaPPaPPaPPaPPaPPaMkaPQaPRaNnaNoaPSaPTaPUaPVaPWaPXaPYaPZaIDaQaaQaaQaaQaaQaaIDaQbaQcaQdaQeaQfaQgaQhaLraQiaQjaQkaQiaQiaQiaQiaQiaQlaQmaPeaNQaFVaGTaGTaFVabDaPfabDaQnaLHabpabpabpabDabDabDabDabDabDabDabDabDabDabpabDabDabDabpabDaPhaQoaQpaQpaQqaQraQsaPiaQtaQuaQvaQwaQxaQyaPiaQzaQAaQAaQAaQAaLKaQBaQBaLLaQCaBQaEqaCEaQDaQEaQFaQGaQHaQIaQJaQKaLQaQLaPyaQMaQNaQNaQNaPBaPCaPxaQOaJpaQPaCEaLaaLbaKiaQQaQRaQSaQTaQUaQSaQVaQWaQXaQYaQZaRaaKjaRbaRbaRbaRbaRbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaPPaPPaPPaPPaPPaPPaMkaRcaRdaReaNoaNoaNoaNoaNoaNoaNoaRfaRgaRhaNoaRiaRjaRjaRjaRkaRlaRmaRnaRoaRpaRqaRraRsaIFaQiaRtaRuaRvaRwaRxaRyaRzaRAaRBaRCaRDaFVaFVaGTaFVabDaREabDaREabDabDabpabpabpabDabDabDaRFaRFaRFaRFaRFaRFaRFaRFaRFaRFaRGabDaPhaRHaRHaRHaRIaRIaRIaPiaRJaRKaRLaRMaRNaROaRPaQzaRQaRRaRSaRTaLKabDabDaCEaRUaBQaRVaCEaRWaRXaKMaPwaLQaLQaRYaRZaSaaPxaPyaSbaScaPBaPBaPBaPCaSdaSeaJpaPDaCEaLaaLbaKiaSfaSgaShaSiaSjaSkaSlaSmaSnaSoaSpaSqaKjaSraSsaStaSuaSuaSvaaaaaaaaaaSwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaPPaPPaPPaaEaaEaMkaMkaSxaSyaSyaSzaSAaNoaSBaSCaSDaNoaSEaSFaSGaNoaSHaSIaSJaSKaSLaSMaSNaSOaSPaSQaQfaSRaSSaSTaSUaSVaSWaSXaSYaSZaTaaTbaTcaTdaPeaTeaTfaFVaGTaFVabDaPfabDaPfabDabDabDabpabpabpaJWabDabpabDabDabDabDabpabDabDabDabDabpabDaPhaTgaTgaTgaRIaRIaThaPiaTiaTjaTkaTlaTmaTnaToaTpaTqaTraTqaTsaLKabDabDaCEaTtaTuaEqaCEaTvaTwaKMaPwaTxaTyaTxaTzaTxaPxaPyaQMaTAaTBaTBaTCaTDaTEaTFaJpaPDaTGaLaaLbaKiaKiaKiaKiaKiaKiaKiaKiaKiaKiaTHaTIaKiaRbaTJaSsaTKaTLaTMaTNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaPPaPPaaEaaEaaEaTOaTPaSyaSyaSyaSyaSyaTQaTRaTSaTTaTUaTTaTSaTVaNoaTWaTXaTYaTXaTZaUaaUbaUcaUdaUcaNAaUdaUeaUfaUgaUhaUiaUjaQlaQlaQlaUkaTcaTdaPeaTeaUlaFVaGTaFVabpaPfabDaPfabDabDabDabpabpaPhaPhaPhaPhaPhaPhaPhaPhaPhaPhaPhaPhaPhaPhaPhaPhaPhaPhaPhaUmaUmaPhaPiaUnaUoaUpaUqaUraUsaPiaUtaRSaUuaRQaQAaLKabpabpaCEaUvaBQaUwaUxaUxaUxaUxaUyaTxaUzaUAaUBaUCaPxaUDaPzaUEaPBaPBaUFaUGaUHaUIaIraUJaCEaLaasOasOasOasOasOasOasOasOasOaUKaULaUMaUNaUOaUPaSsaSsaUQaSuaSuaURaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaPPaPPaPPaaEaaEaaEaUSaUTaUUaUVaUWaUXaUYaPWaUZaVaaVbaPWaVcaSyaVdaNoaNoaNoaNoaNoaNoaNoaVeaVfaVgaVhaVhaViaVjaVkaVlaVmaSWaVnaVoaVpaVqaVraVsaVtaVuaVvaFVaFVaHSaFVaLFaVwabpaVwabpabpaPhaPhaPhaPhaVxaVyaVzaVyaVyaVyaVyaVAaVBaVyaVyaVyaVzaVCaVDaVEaVFaVGaVHaVIaVJaPiaPiaVKaVLaVMaVNaPiaPiaQAaQAaVOaQAaQAaLKaotaotaCEaAraBQaEqaVPaVQaVRaVSaVTaTxaVUaVVaUBaUBaPxaVWaVXaVYaVZaVZaWaaWbaPxaWcaJpaWdaWeaWfaWeaWgaWeaWeaWeaWeaWeaWeaWeaWhaWiaUMaWjaWkaWlaRbaRbaRbaRbaRbabpabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaPPaPPaPPaWmaaEaaEaUSaUTaWnaWoaWpaSyaWqaNoaNoaNoaNoaWraWsaSyaWtaWuaWvaWwaNoaWxaWyaNoaIDaWzaWzaWAaWzaWzaWzaWzaWBaWCaWDaWEaWFaWGaWHaTbaTcaTdaPeaNQaFVaWIaJRaWJabpaREabDaREabDabDaWKaWLaWKaWMaVyaWNaWOaWPaWQaWRaWRaWQaWRaWRaWRaWRaWRaWSaWTaWUaWTaWVaWWaWXaWYaWZaXaaXbaXcaXdaXeaXfaPhaLKaLKaLKaLKaLKaLKaXgaXgaFVaAraBQaEqaUxaXhaXiaXjaXkaXlaXmaXnaUBaUBaPxaXoaPzaUEaPBaPBaXpaXqaPxaXraXsaXtaXuaXvaXwaWgaXxaXyaXzaXAaWeaXBaXCaWhaXDaXEaWjaXFaXGaXHabpabpabpaXIaotabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaPPaPPaaEaaEaaEaaEaUSaXJaWnaXKaXLaUVaXMaNoaXNaXOaXPaPWaXQaXRaXSaXTaXUaTSaXVaXWaXXaXYaXZaYaaYaaYaaYaaYaaYaaYbaYcaYdaWDaYeaQlaQlaYfaUkaYgaTdaPeaYhaFVaGTaJRaWJabDaPfabDaPfabDabDaPhaYiaPhaYjaVyaYkaYlaYmaYnaYmaYmaYnaYmaYmaYmaYoaYpaYqaWTaWTaYraYsaYtaYuaYvaYvaYwaYxaYyaYzaYAaYBaYCaYDaYEaYFaYGaYHaYIaHXaHaaFVaYJaYKaYLaUxaYMaYNaYOaYPaTxaYQaYRaYSaYSaYTaYUaPzaUEaPBaPBaPBaYVaPxaYWaYXaYYaYZaZaaZbaZcaZdaZeaZbaZdaZfaZgaZhaZiaZjaZkaZlaZmaZnaZoaaaaaaaaaaXIabpabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaPPaPPaaEaaEaaEaaEaZpaZqaZraUTaZsaUTaUTaZtaZuaZvaZvaZwaZxaZyaZzaZAaZBaUTaZCaUTaZDaZEaZFaRwaRwaRwaZGaRwaRwaZHaZIaZJaWDaZKaRwaZLaZMaZNaRAaRBaRCaZOaFVaGTaJRaWJabDaPfabDaPfaRFabpaPhaPhaPhaVyaVyaZPaZQaZRaZSaZSaZSaZSaZRaZSaZSaZRaYkaZTaZUaWTaZVaZWaWWaZXaZYaZZbaababbacbadbaebafbagaYDbahbaibajaFVbakbalbamaFVbanbaobapbaqbarbasbatbauaTxbavbawaUBbaxaPxbaybazbaAbaBbaBbaBbaCaPxbaDaJpbaEbaFbaGbaHbaIbaJbaKbaLbaMbaHbaNbaObaPbaQbaRbaSaXFbaTaZoaaaaaaaaaaXIabpaotaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaPPaPPaPPaaEbaUaaEaUSaUTbaVaSyaSyaSybaWaNobaXbaYbaZaNobbaaUXbbbbbcbbdaUXbbebbfbbgbbhbbiaVoaVoaVoaVoaVoaVoaVobbjbbkaSWaSXbblbbmaTaaTbbbnbboaPeaNQaFVbbpbbqaFVabDaPfabDaPfaRFabDadWadWbbrbbsbbtbbubbvaZSbbwbbwbbwaZSbbwbbwbbwaZSaYkbbxaWTaWTaWTaWTbbyaWTaWTaWTbbzbbAbbBbbCbbDbbEbbFaYDbbGbbHbbIaFVbbJbbKbbKbbLbbMbbNbbOaUxaUxbbPaUxaUxaTxaTxaTxbbQaTxaPxaPxbbRaPxbbSbbTaPxaPxaPxaCCaJpbbUbbVbbVaWgaWgbbWaWeaWeaWeaWeaWeaWeaWhbbXbbYbaSbbZbcaaZoaZoaZoabpaXIabpabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaPPaPPaPPaaEbcbaaEaUSbccbcdbcebcfbcgbchaNoaNoaNoaNoaNobciaSybcjbckbclbcmaNobcnbcoaNobcpbcqbcrbcsbctbcubcvbcvbcwbcxaUibcyaQlaQlaQlaUkaQibczaLBaLCaFVaGRaGTaFVabDaREabDaREaRFabDaaaadWbcAaVybcBbcCbcDaZSbbwaZSaZSaZSaZSaZSbbwbcEaYkbcFbcGaRIaRIbcHbcIbcJbcKaWTaWTbcLaWWbcMbcNbcObcPaYDbcQaFVaFVaFVbcRbcSaFVaFVbcTbcUbcVbcWbcXbcYbcZbdabdbbdcaTxbddbdebdfbdgbdhbdibdebdebdjbdkaTxaCCaJpbaEbdlaJpbdmbdnbdobdpbdqbdrbdsbdtbduaWhbdvbdwbaSaULbdxbdybdzaZoabDaXIabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaPPaPPaPPaaEaaEaUSbdAbdBbdCbdDbdEbdFaNobdGbdHaXPaPWbdIaSybdJbdKbdKbdKbdKbdKbdKbdKbdKbdKbdLbdLbdMbdMbdMbdMbdNbdObdPbdQbdRbdSbdTbdUbdVbdWbdXbdYaFVaGRaGTaFVabDaPfabDaPfaRFabDaaaadWbcAaVybcBbcCbcDaZSbbwbdZbeabebaYpaZSbbwaZRaYkbcFbcGbecbedbeebefbadbegbehaWTbeibejbekbelbembenbeobepbeqberbesbetbeubevbewbexaBDbeybezbeAbeBbeCbeDbeDbeEbeFbeGbeGbeGbeGbeHbeGbeGbeGbeGbeGbeIbeJaJpbaEbeKbeLbeMbeNbeObePbePbeQbeRbeSbePaWhbeTbeUbeVbeWbeXbeYbeZaZoabDaXIabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaPPaPPaPPaPPaaEaTObfaaSybfbbfcbfdaTSbfebffaTSaTSbfgaTTaTSbfhbdKbfibfibfjbfkbflbfmbfmbdKbfnbfobfpbfqbfrbdMbfsbftbfubfvbfwbfxbfxbfybfzbfAbfBaMAaFVaGTaHSaFVabpaVwabpaVwbfCabpadWbfDaPhbfEbfFbfGbfHaZRaZSaZSaWMbfIaYkaZSaZSaZSaYkbcFbcGaRIbfJbfKbfLbfMbacbfNbfObfPbfQbfRbfSbfTbfUbfVbfWbfXbfYbfZbgabfYbgbbfWbgcbgdbgebezbeAbeDbgfbggbghbeDbgibdebdebdebgjbgkbdebdebdebglbgmaTxbgnaMZbgobgpbgqbdmbgrbgsbePbgtbePbeSbgubgvbgwbgxbgybgzbgAbgBbgCbgDaZoabpaXIabDabDaaaaaaaaaaSwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaPPaPPaPPaPPaMkaMkbgEbgFbgGbgHbgIaNobaXbaYbaZaNobgJbgKbgLbdKbgMbgNbgObgNbgNbgNbgNbgPbgQbgRbgSbgTbgUbgVbgWbgXbgYbgZbhabhbbhbbhcbhdbheaRCaZOaFVaGTaJRaWJabDaPfabDaVwaRFabDaaaadWbcAaVybcBbcCbcDaZSbbwaZSbhfbhgbhhaZSbbwaZSaYkbcFbcGaRIbhibhjaWWaWWbhkbhlaWTbhmbhnbhobhpbhqbhrbhsbhtbhubhvbhwbhxbhybhzbhAbhBaBQbgebezbeAbhCbhDbeAbhCbhEaTxbhFbhGbhHbhIbhJbhKbhLbeGbhMbhNbhObhPaIrbgobeKbhQaWgbhRbhSbePbePbhTbhUbeSbhVaWhbhWbhXbhYbhZbiabibbicaZoabDaXIabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaPPaPPaPPaPPaMkaMkaMkaMkaMkaMkaNoaNoaNoaNoaNobidaSybiebdKbifbgNbigbihbiibijbikbilbimbinbiobipbiqbiraUgbisbitaQibiubivbiuaUkaQibfAaPeaNQaFVaGTaJRaWJabDaREabDaREaRFabDaaaadWbcAaVybcBbcCbcDaZSbbwaZSaZSaZSaZSaZSbbwaZSaYkbcFbcGaRIaRIbiwbixbiybizaWTaWTbiAbiBbiCbiDbiEbiFaPhbiGaWTaWTbiHbiIbiJaWTaWTbiKaBQbgebeDbeDbezbiLbezbezbiMaTxaTxaTxbiNbiNbiOaTxaTxbdebiPbiQaTxbiRaYXbiSbiTbiUbiVbiWbhSbePbiXbiYbiZbjabjbaWhbjcbjdbjebjfaULbgCbjgaZoabDaXIabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaPPaPPaPPbjhbjhbjhbjibjjbjkbjlbjmbjnbjoaNoaWsaSybjpbdKbjqbgNbjrbjsbjsbjsbjsbjtbjubjvbjwbjxbjybjzbjAbjBbjCbjDaRwbjEaRwbjFbjGbjHaPeaNQaFVaGTaJRaWJabDaPfabDaPfaRFabDadWadWbbrbjIbjJbjKbcDaZSbbwbbwbbwaZSbbwbbwbjLaZSaYkbbxaWTaWTaWTaWTbjMaWTaWTaWTbjNbjObiBbjPbjQbjRbjSaWTbjTaWTbjUbjVbjWbjXbjYbjZbkaaBQbgebeDbkbbkcbkdbkebkebkebkebkfbkgbkhbkibkjbkkaTxbklbkmbknaTxbkoaKYbkpbbVbbVaWgaWgbkqaWeaWeaWeaWeaWeaWeaWhbkrbksbktbkubkvbkwbkxaZoabpaXIabpabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbjhbjhbjhbjhbkybkzbkAbkBaUTbkCbkDbkEbkFaUTbkGbdKbkHbgNbkIbkJbkKbkLbkMbkNbkObkPbkQbkRbkSbkTbkUbdObkVbkWbkXbkYbkZblaaTcaTdaPeblbaFVblcbbqaFVabDaPfabDaPfaRFabpaPhaPhaPhaVyaVyaZPbfHaZRaZSaZSaZRaZSaZSaZSaZSaZRaYkbldaZUaWTaZVbleblfblgblhblibljbadblkbllblmblnbloaWTblpaWTblqblraWWblsbltbjZbluaTubgebeDblvblwbgfbeDbeDbeDbeDblxbeDbeDbeDbeDbeDblybeDbeDbeDblzblAblBblCblDbaHbaHblEblFblGblHbaHbaHblIbaObaPblJblKbaSaULblLblMblNaZoabDaXIabpabpaotaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbjhbjhbjhbjhblOblPblQblRblSaTRblTaNtaTSaTSblUbdKbgNbgNbgNbgNbgNbgNblVbdKblWblXblYblZbmabmbbmcaYdaWDbmdaQlaQlaQlaUkaYgaTdaPeaNQaFVbmeaGTaFVabDaPfabDaPfabDabDaPhbmfaPhbmgaVyaYkbmhaWObmibmjaWOaWObmjaWOaWObmjbhhbmkaWTaWTaYrbmlbmmbmnbmobmpbmpbmpbmqbmrbmsbmtbmuaPhbmvaWTbmwbmxbmybmybmzbjZbkaaBQbgebeDbmAbmAbkdbmBbeDbeDbeDbeDbmCbmDbmDbmDbmDbmDbmEbkbbkbbeDblAbmFbaEbaFaXAaXAbmGbmHbmIbmIbmIbmJbmKbmLbmMbmNbmObmPbmQbmRaZoaZoaZoabDaXIabDabDabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbjhbjhbjhbjhbmSaMkaMkaMkaMkbmTbmUbmVaNoaSyaSyaSybdKbmWbmXbmYbmZbnabmZbnbbdKbdLbdLbdLbdLbdLbdLbncaWCaSWbndaVobneaVqaVraVsaVtbnfbngaFVaGTaGTaFVabDaREabDaREabDabDaWKbnhaWKaWMaVybnibnjbnkbnlbnmbnlbnlbnmbnlbnlbnmbnnbnoaWTbnpaWTaWVbnqbnrbnsbntbnubnvbnwbnxaPhaPhaPhaPhbmvaWTaWTbjZbjZbjZaWTaWTbnyaBQbgebeDbeDbeDbgfbeDbeDbnzbnAbnBbeDbnzbnCbnDbeDbeDbnEbnFbnCbnBblAbmFbnGaWebnHaXBaWgbnIbnJbnKaXAaWeaXAbnLaRbbnMaULbaSbnNbnOaZoaaaaaaabpaXIabDabDabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbjhbjhbjhbjhbjhbjhbjhbjhaMkbnPbnQbnRaNoaNobnSaNoaMkaMkbnTbnTbnTbnTbnTbnTbnTbnUbnVbnWbnXbnYaQlbnZaWCaWDaWEboabobaWHbocaTcbodboebofaFVaGTaHSaFVaLFaVwabpaVwabpabpaPhaPhaPhaPhaVxaVybogbohbohboibohbojboibohbohboibokbohbolbombonboobopboqboraWTbosaWTbotaWTaPhaotabpabpabpabpabpabDabDabpabpaCEbouaBQbgebeDbkcbkbbgfbeDbovbowbowbowbowbowbowbowboxbeDbnEbnCbnCbnDboybozboAaWeaWeaWeaWeaWeaWeaWeaWeaWeaWeboBaRbaUMaULbaSboCboDaZoadWadWabDaRFabDabDabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbjhbjhbjhbjhbjhbjhbjhaMkboEboFboGaNoaSyaSyaSyboHboIbnTboJboKboLboMboNbnTboOboPboQaVoboPboRboSbisaUiboTaQlaQlaYfaUkaTcaTdaPeaNQaFVaGTaJRaWJabpaPfabDaPfabDabDaaaadWadWaPhaPhaPhaPhaPhaPhaPhaPhaPhaPhaPhaPhaPhaPhaPhaPhaWTaWTboUboVboWboXaWTaRIboYboZboZbpaabDabDaotabpabpabDabDabDabDabpaCEbpbaBQbgebeDbpcbnAbkdbkebpdbpebpfaYOaYOaYObpgbphbpibmDbpjbpkbplbnBblAaJpaPDbpmabDabDabDabDabDabDabDbpnasObpoaRbbppbpqbaSbprbpsaZoaaaaaaabDaRFabDabDabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbjhbjhbjhbjhbjhbjhaMkaMkaMkaMkaMkaSybptaTPbpuboIbnTbpvbpwbpxbpxbpybpzbpAbpBbpCbpDbpEbpFbpGbpHaWDbpIaRwbpJaZMaZNaRAaRBaRCaZOaFVbpKaJRaWJabDaPfabDaPfabDabDabDabpabpabpabDabDabpabDabDabDabDabpabDabDabDabDabpabDaPhbpLbpMbpNbpObpPbpQaWTbpRbpSbpTbpUbpVabDabDabpabDabDabDabDabDabDaotaCEbpWaBQbgebeDbmAbmAbgfbeDbpXbpYaYOaYObpZaYOaYObpYbqabeDbqbbmAbmAbeDblAaJpaPDbpmabDbqcbqcbqcbqcbqcbqcbqcasObpoaWhbqdaRbbqeaRbaRbaRbaWhaWhabpaRFabpaotabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbjhbjhbjhbjhbjhaNkaNkaMkaMkaMkaMkaMkaMkbnTbqfbqgbqhbqibqjbqkbqlbqmbhbbqnbqobqpbqqbqrbqsaSXbqtbquaTabqvaTcaTdbqwbqxbqybqzaJRaWJabDaMCaMDaREabDabDabpabpabpabDabDabDaRFaRFaRFaRFaRFaRFaRFaRFaRFaRFaRFabDaPhbqAbqBbqCbqDbqEbqFaWTbqGbqHboZboZbqIabDaotaotabDabDabDabDabDabDabDaCEbqJbqKbgebeDbeDbeDbgfbqLaUxaUxaUxbqMaUxbqMaUxaUxaUxbqNbqbbeDbeDbeDbqOaYXbqPbpmabDbqcbqQbqRbqRbqRbqSbqTbqUbqVbqWbqXbqYbqZbrabrbbrcbrdaWhabDaRFabDabDabDabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbjhbjhaNkaNkaNkaNkaNkaNkaNkaNkaNkbnTbrebrfbrgbrhbribrjbrkbrlbrmaQibrnaQiaQibroaQiaQiaQiaQiaQiaQiaQlaPdaPebrpaFVaFVbbqaFVabDaNTbrqbrrabDabpbrsabpabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDaPhbrtbrubrvbrwbrubrxaPhaPhaPhbbwbbwabDabDabDabDabDabDabDabDabDabDabDaCEbrybrzbrAbrBbrCbrBbrDbrEbrBbrBbrBbrBbrFbrGbrBbrBbrBbrEbrHbrBbrBbrBbrIaJpbrJbrKbpmbqcbrLbrMbrNbrMbrObqcbrPbpoaWhbrQbrRbrSbrTbrUbrVbrWbrXabDaRFabDabDabDabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbnTbrYbrZbsabsbbscbnTaQlbsdbseaQibsfbsgbshbsibsjbskbskbslbskbsmbshaNOaPeaTebsnaFVaGTaFVabDabDaNTbsobspabpabpabDabDabDabDabDabDabDaJWabDabDabDabDabDabDabDabDabDaPhbsqaWWbrubsraWWbssaPhabDabDabDabDabDabDabDabDabDabDabDabDabDaJVaJVbstbpbbsubsvaJpaXsbswbsxaJpaJpaJpaJpaJpbsybszaJpaJpaJpaJpbsAaJpaJpaJpbszbsBbsCbsDbsEbsFbsEbrMbsGbrMbsHbqcbsIbsJbsKbsLbsMbsNbsObsPbrRbsQbrXabpaRFabDabDabDaotabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaKjaKjaKjaKjaKjaQiaQibsRbsSbsTbsUbsVbsWbsXbsYbsZbtabtabtabtabtbbtcbtdaPeaTebteaFVaGTaFVaotabpabpbtfbtgbspabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDaPhbthbtibtjbtkbtlbtmaPhabDabDabDabDabDabDabDabDabDabDabDabDabDaJVaJUbstbtnbaobapbtobtobtpbtqbtobtobtrbtobtobtsbttbtobtubtvbtobtwbtpbtobtobtxaIrbtybtzbpmbqcbtAbsEbtBbsEbtCbqcasObtDaWhbrQbsMbtEbtFbsPbrRbtGbrXabDaRFabpabpabpabpabpabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaQibtHbtIbtJbtKaQibtLbtMbtNbtObtPbtQbtRbtQbtQbshbshaNObtSbtTaFVaFVbtUbtVbtVbtWabpaVwbtXbtYaMIaMIaMJaMIaMGaMIaMJaMIaMIaMIaMJaMIaMGaMIaMJbtZaMDabDaPhbbrbuabuabuabuaaPhaPhabDabDabDabDbubabDabDabDabDabDabDabDaJVaJVaJUbstbpbaBQbucbudbudbudbuebudbudbudbudbufbudbugbudbudbudbudbudbudbudbudbuhaMZbuibpmabDbqcbujbukbulbumbunbuobupbuqburbusbutbuubuvbuwbrRbuxbrXabDaRFabDabDabpabpaotabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaQibuybuzbuAbuyaQibsfbuBbuCbuDbsjbsjbuEbuFbuGbuHbuIbuJbuKbuLbuMbuNbuObuPbuQbtWabpbuRabpabDabDabDabDabDabpabDabDabDabDabDabDabDabpabDabDaNTbrqaMDabpabDabDabpabpabDabDabpabDabDabDabDabDabDabDabDabDabDabDabDaJVaFVbuSaCEbpbaBQbuTbudbuUbuVbuWbuXbudbuYbuZbvabvbbvcbvdbvebudbvfbvgbvhbvgbudbviaJpbvjbpmabDbqcbqcbqcbqcbqcbqcbqcbvkasOaWhaWhaWhaWhaWhaWhaWhaWhaWhabDaRFabDabDabpabDabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaQiaQiaQiaQiaQiaQibsfbsjbvlbvmbvnbvobvpbvqbvnbvrbvsbvtaRCbvubvvbvwbvxbvxbvybvzaMEbvAabpabDabDabDabDabDabpaotabDabDabDabDabDabDabpabDabDabDaNTbtYaMHaMIaMIaMGaMHaMIaMIaMGaMJaMIaMIaMIaMJaMIbtZaMDbvBbvBbvBbvBaFVaYDbvCaCEbvDaYKbvEbudbvFbvGbvHbvIbudbvJbvKbvLbvMbvNbvabuYbudbvObvPbudbvQbudbvRaKYbvSbpmabDabDabDabDabDabDabDbpnbvkasObvTbvUbvVbvVbvVbvVbvVbvUabpabpaRFabDabDabpabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbvXbvYbvZbwabshbwbbwcbwdbwebuGbuGbwfbwgbsjbwhbwibjHaPebwjbwkbwlbwmbwnbwobwpbwqbwrabpabDaJWaJWaJWabDabpabpabDabDaJWaJWabDabpabpabDabDabDabDabDabpaotabpabpabpabDabDabpabDabDabDabDabDabDaNTbtYbwsbwtbwubwvaFVaFVbuSaCEbtnaTubwwbudbwxbwybuebudbudbudbudbudbudbudbudbudbudbudbwzbudbudbudbwAaJpbwBbvTbvTbvTbvTbvTbvTbvTbvTbvTbwCbvTbvTbvUbvVbvVbvVbvVbwDbvUabpaRFaRFabDabDabpabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbwEbwFbwFbwGbshbwHbsWbwIbwJbwKbwLbwMbwLbwLbshbshbwNaPebwOaFVbwPaFVaFVaFVaFVaFVaFVaFVbwQbwQbwQaFVaFVaFVaFVbwQbwQbwQaFVaFVaFVaFVaFVbwQbwQbwQaFVaFVaFVaFVbwQbwQbwQaFVaFVaFVaFVaFVaFVbwRbwRbwRbwRbwSbwTbwUbwVaFVbwWbwXaCEbpbaBQbwwbudbwYbwZbxabwZbxbbxcbxdbxebxfbxgbxhbxibwZbxjbwZbxkbxlbudbuhaJpbxmbxnbxobxpbxqbxrbxsbxtbxubxubxvbxubxwbvUbvVbvVbvVbvVbvVbvUabDaRFabDabpabpaotabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbvWbvWbvWbxxbvWbshbxybsWbxzbxAbtPbxBbxCbxCbxCbxDbxEbxFaPeaNQaFVaGTaGTaGTaGTaGTaGTaGTbbqbwXbwXbwXbxGbmebmebbqbwXbwXbwXbxGaGRbxHaGTbbqbwXbwXbwXbxGaGTaGTbbqbwXbwXbwXbxGaGTaGTaGTaGTbxIbxJbxKbxJbxJbxLbxMbxNbxOaFVbxPaGTaCEbtnbaoaIhbxQbxRbxSbxTbxUbxSbxVbxUbxSbxUbxUbxSbxSbxUbxUbxUbxWbxXbxYbxZbyabybbvTbycbydbyebyfbygbyhbyibyjbykbxubylbymbvVbvVbvVbvVbvVbvUabDaRFabDabpabDabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbynbwFbvWbwFbyobshbsfbypbshbxAbsjbxBbxBbyqbxBbsjbshbyrbysbytaFVbyubyvbyuaFVaFVaFVaFVbywbyxaWIaGTaGTaGTaGTaGTaGTaGTaGTaGTaGTaGTaGTaGTaGTaGTaGTaGTaGTaGTbyybyzaGTaGTaGTaGTbyAbalbyBaFVbvBbvBbvBbyCbxJbyDbyEbxJbxIaGTaGTaCEbpbaOfbyFbyGbyHbyIbyJbyKbyIbyJbyKbyIbyLbyKbyIbyMbyNbyObyPbyQbyRbySbyTbyUbyVbyWbyXbyYbyZbzabzbbzcbzcbzdbxubzebzfbvUbvVbvVbvVbvVbvVbvUabDaRFabDabpabDabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbzgbzhbzibzjbzkbshbzlbshbshbzmbshbshbshbshbshbshbshbznbzobzpaFVaFVaFVaFVaFVbzqbzqaFVaFVaFVaFVbzraFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVbzsaFVaFVaFVbzqbzqbvBbvBbztbzubzvbvBaFVaFVaFVaCEbzwbzxbzybudbzzbzAbzBbzCbzAbzDbzCbzEbzBbzCbzFbzGbwZbzHbwZbzIbzJbudbzKbzLbzMbzNbxubxubxubzObzPbzcbzcbzQbxubzRbzSbvUbvVbvVbvVbvVbvVbvUabDaRFabDabDabDabpabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbzTbzUbzVbzWbzXbzYbzZbAabAabAbbAcbAdbAebAfbAgbAhbAibAjbAkbAlbAmbAnbAobAobApbAqbAqbArbAsbAobAobAobAobAtbAubAobAobAobAvbAwbAxbAybAzbAobAobAvbAobAtbAmbAAbABbACbADbAobAtbAEbAFbAobAobAGbAqbAqbAHbAobAIbAJbAKbALbAMbANbAobAObAPbzobAQbudbARbwxbudbASbwxbudbATbwxbudbAUbwxbudbAVbAWbAXbAYbAXbudbAZbsxbBabvTbBbbxubxubxubBcbBdbBebBfbxubxubBgbymbvVbvVbvVbvVbvVbvUabDaRFabDabDabDabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbBhbBibvWbBjbBkbBlbBmbBmbBmbBmbBnbBobBpbBqbBrbBrbBsbBtbBubBvbBwbBvbBvbBvbBvbBvbBxbBybBvbBvbBvbBvbBvbBvbBwbBvbBvbBvbBzbBvbBAbBBbBCbBDbBEbBzbBvbBvbBwbBFbBvbBGbBvbBvbBvbBHbBIbBDbBDbBDbBDbBDbBJbBDbBKbBLbBvbBvbBFbBGbBvbBGbBvbBMbBNbudbBObBPbudbBQbBPbudbBRbBPbudbBSbBPbudbAXbAWbAXbAYbBTbudbBUbmFbBVbBWbBXbBYbBZbBZbCabCbbBZbCcbCdbxubBgbvUbvVbvVbvVbvVbvVbvUabDaRFabDabpabDabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbvWbvWbvWbvWbCebCfbvWbvWbvWbwFbAcbCgbChbCibCjbCkbAcbClbCmbCnbCnbCnbCnbCnbCobCnbCpbCnbCnbCqbCnbCrbCsbCsbCsbCsbCtbCubCvbCwbCxbCybCzbCAbCBbCCbCDbCDbCDbCEbCDbCFbCDbCDbCGbCDbCHbCDbCDbCDbCDbCDbCIbCJbCKbCLbCMbCMbCNbCKbCMbCKbCMbCObCPbudbCQbCRbudbCQbCSbudbCQbCTbudbCQbCUbudbCVbCWbCVbAYbCXbudbCYbCZbDabvTbvTbvTbvTbvTbvTbvTbvTbvTbvTbDbbBgbvUbvVbvVbvVbvVbwDbvUabDaRFabDabpabpabpabDabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbwFbDcbDdbvWbDebvWbwFbAcbDfbDgbDhbCjbDibDjbDkbDlbDmbDnbDobDjbDpbDjbDjbDqbDjbDjbDjbDrbDrbDsbDsbDrbDrbDrbDrbDrbDrbDtbDubDvbDwbDxbDwbDwbDwbDwbDybDwbDzbDAbDBbDBbDBbDBbDBbDBbDBbDBbDBbDCbDDbDEbDFbDGbDGbDHbDIbDGbDIbDJbDDbDCbDKbDKbDKbDKbDKbDKbDKbDKbDKbDKbDKbDKbDKbDKbDLbudbDMbDNbDNbDObDPbDQbDNbDRbDSbDTbDUbDNbDVbDWbDXbDNbDYbDZbvUbvVbvVbvVbvVbvVbvUabpaRFabDabDaotabpaotabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbEabEbbEcbvWbEdbvWbwFbAcbEebEfbEgbEgbEhbEibEjbEkbElbElbElbEmbEnbDjbEobEpbEqbErbDjbEsbEtbEubEvbEwbExbEybEzbEAbDrbEBbECbEDbDwbEEbEFbEGbEHbEIbEJbDwbEKbELbDBbEMbENbEObEPbEQbERbEQbDBbESbETbEUbEVbEWbEWbEXbEYbEWbEYbEWbEZbFabDKbFbbFcbFdbDKbFebFfbFgbFhbFibFjbFkbFlbFmbFnbFobFpbDNbFqbFrbFsbFtbFubDRbFvbDRbFwbDNbFxbFybFzbDNbvTbvTbvTbvVbvVbvVbvVbvVbvTabDaRFabDabDabDabDabDabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbvWbvWbvWbvWbDebvWbwFbAcbFAbFBbFCbCjbFDbDjbFEbFFbFGbFGbFGbFHbFIbDjbFJbFKbFLbFMbDjbFNbFObFPbFQbFRbExbFSbFTbFUbDrbFVbFWbFXbDwbFYbFZbGabFZbGbbGcbDwbGdbGebDBbGfbGgbGhbGibEQbEQbGjbDBbEWbEWbGkbGlbEWbEWbGmbGnbGobGpbGqbGrbGsbGtbGubGvbGwbGxbGybGzbGAbGBbGCbGDbGEbGDbGFbGGbGHbELbDNbGIbGJbGKbFtbDRbDRbGLbGMbDRbGNbFxbFxbGObDNaabaabbvTbvTbvTbvTbvTbvTbvTabDaRFabDabDabDabDabDabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbvWbvWbwFbAcbGPbGQbAcbGRbGSbDjbGTbGUbGTbGVbGVbGWbGVbDjbGXbFKbFLbGYbDjbGZbHabHbbHcbFRbExbHdbHebHfbDrbHgbFWbHhbHibHjbFZbFZbFZbFZbHkbDwbHlbHmbDBbHnbHobGhbHpbEQbEQbEQbDBbHqbGobHrbHsbHsbHsbHtbHubHvbHvbHwbEYbHxbDKbHybHzbHAbDKbHBbHCbHDbFhbHEbGDbHFbGDbHGbDKbHHbELbDNbHIbGJbGKbHJbHKbDRbHLbHMbHNbDNbDNbDNbDNbDNaaEaabaabaabaabaabaabaaEabpabpaRFabDabDabDabDabDabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbwFbHObDcbHPbDjbHQbHRbHSbHTbHUbHVbHWbHXbHYbHZbIabIbbFKbFLbIcbDjbIdbIebIdbIfbIgbIgbIdbIdbIdbDrbHgbFWbFXbIhbIibFZbFZbFZbFZbFZbIjbHlbIkbDBbDBbDBbIlbDBbDBbDBbDBbDBbImbEWbInbIobIpbIqbIqbIrbIpbIsbItbIubIvbIwbIxbGDbIybDKbFebHCbHDbFhbIzbIAbIBbICbIDbDKbIEbELbDNbIFbIGbIHbIIbIJbIKbIJbIJbILbILbIMbINbIObDNaaEaaEaabaabaabaabaaEaaEbIPaRFaRFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbIQbIRbAbbHPbDjbISbITbITbITbIUbIVbIWbIWbIWbIWbIXbIYbIZbJabJbbDjbJcbJdbJebJfbJgbJhbJibJhbJjbJkbJlbFWbFXbDwbJmbJnbFZbFZbJobJpbDwbHlbJqbDBbJrbJsbJtbJubJvbJwbJxbJybEXbEWbInbJzbJAbJBbEWbJCbJDbJEbItbJFbJGbDKbJHbGDbJIbDKbFebJJbJKbJLbJMbJNbJObJPbJQbDKbJRbELbDNbJSbGJbGKbJTbJUbDRbJUbJUbJVbDRbJWbDRbDRbJXaaEaaEaaEaabaabaaEaaEaaEabpaotaotabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbJYbAbbJZbKabHPbDjbKbbKcbKdbHWbKebKfbKgbKhbKibKjbKkbKlbKmbKnbKobDjbKpbKqbKrbKsbKtbKubKvbJcbKwbKxbKybFWbKzbDwbKAbKBbKCbKDbKEbKFbKGbHlbHmbDBbKHbHobGgbKIbKJbKKbKLbJybEXbEWbInbJzbEWbEWbEWbEYbEWbKMbItbJFbKNbDCbDCbDCbDCbDCbDCbDCbKObDKbDKbKPbDKbDKbDKbDKbKQbELbDNbKRbGJbGKbKSbGJbGJbGJbGJbDRbDRbKRbKRbDRbJXaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabKTbKUbKVaabaabaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbvWbCfbvWbvWbKWbKXbDjbDjbDjbDjbKYbDjbDjbDjbDjbDjbDjbDjbDjbKZbLabKZbDjbIdbIdbIdbIdbIdbDsbLbbDsbDrbDrbLcbFWbLdbDwbDxbDwbDwbDwbDwbDwbDwbLebLfbDBbLgbGgbGgbLhbLibLjbJxbJybGmbLkbLlbDDbDJbDJbLmbDEbDJbDDbLnbLobLpbLqbDCbLrbLsbLsbLtbDCbLubLvbLwbLxbLybLzbLAbDKbHHbELbDNbLBbGJbGKbLCbLDbDRbLEbLEbDRbLFbFqbFqbLGbJXaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLHbLIbLJaabaabaabaabaabaabaacaacaacaacaacaacaacaadaadaabaabaabaabaabaabaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbLKbLLbLMbvWbKWbKXbLNbLObwEbvWbwFbwFbwFbLPbwEbLQbLRbLSbvWbLTbLUbLVbLWbLXbLYbLZbLYbMabMbbMcbMbbMdbMebLcbFWbMfbMgbMhbMibMjbMkbMlbMmbMjbHlbELbDBbMnbGgbGgbGgbMobMpbJxbJybEXbEWbMqbMrbMsbMtbMubMvbMwbDJbMxbJFbEWbMybMzbMAbMBbMCbMDbMEbMFbGvbMGbGvbGvbMHbMIbDKbMJbELbDNbMKbGJbMLbMMbMNbMNbMNbMNbMObLFbFqbMPbLGbJXaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMQbMRbMSbKVbMTbMTbMTbMTbMTaabaabaabaadaadaadaadaadaadaabaabaabaaEbMUaabaabaabaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbMVbwFbKWbMWbKWbKXbMXbwFbwFbvWbMYbMZbMZbNabMZbMZbMZbMZbNbbNcbNdbNebNfbNgbNhbNcbNcbNibNjbNkbNlbNmbNnbNobNpbNqbNrbNsbNtbNubNvbNwbNxbMjbHlbELbNybGgbGgbGgbGgbMobMpbJxbJybEXbEWbNzbDJbNAbNBbNCbNDbNEbDJbMxbNFbEWbMybNGbNHbNIbNJbNKbNLbNMbNNbNObNPbGDbGDbNQbDKbMJbELbDNbNRbGJbNSbNTbNUbDRbNUbDRbDRbLFbNVbNWbLGbJXaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNXbNYbLIbNZbOabMTbObbOcbOdbMTaabaabaabaabaabaabaabaabaabaabaabaaEbOeaaEaaEaabaabaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbOfbOgbOhbOibOjbOkbwFbwFbOlbvWbOmbOnbOobOobOobOobOobOpbOpbOpbOqbOrbOsbOpbOtbOtbOubOvbOwbOubOtbOtbOtbOxbFWbLdbMgbOybOzbOAbOBbOCbODbMjbHlbELbDBbOEbGgbOFbOGbOHbOIbOJbOKbOLbOMbONbDCbOObOPbOQbORbOSbDCbMxbJFbEWbOTbDCbOUbNIbEWbMybOVbOWbOXbNObGDbGDbGDbGDbOYbMJbELbDNbOZbFqbLGbPabPbbPbbPcbDRbDRbDRbIFbIFbDRbJXaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabKVbPdbPebPfbPgbPhbPibPjbMTaabaabaabaabaabaabaabaabaabaabbPkbPkaaEbPlaaEaabaabaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbvWbvWbvWbvWbvWbKWbKXbPmbPnbPobvWbOmbwFbOobPpbPqbPrbOpbPsbPtbPubPvbPwbPxbOpbPybPzbPAbPBbPCbPDbPEbPFbPGbPHbFWbLdbMgbPIbPJbMjbMjbMjbMjbMjbPKbPLbPMbPNbPObPObPObPPbPQbPRbDCbPSbPTbPUbDCbPVbPWbPXbPYbPZbDCbDCbQabQbbDCbDCbQcbQdbQebQfbOVbQgbQhbQibQjbQkbQlbQmbDKbMJbELbDNbLFbNWbLGbDRbQnbQobQpbFqbQqbQrbDRbDRbQsbDNaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaSwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabKVbQtbQubQvbMTbQwbQxbQybQzayJaaEaaEaaEaaEbPkaaEaaEaaEaaEaaEaaEbQAbQBaaEaabaabaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbQCbQDbzhbQEbQFbQGbQHbQFbQFbQFbQFbQIbwFbOobQJbQKbQLbOpbQMbQNbQObQPbQQbQRbOpbQSbQTbQUbQVbQWbQXbQYbQZbOtbLcbFWbRabMgbMJbPJbMjbRbbRcbRdbMjbRebELbDBbRfbRgbGgbGgbMobRhbDBbRibRjbRkbRlbDCbDCbRmbRnbDEbDCbDCbRobRpbRqbRrbDCbDCbRsbRtbOVbOVbRubRvbRwbDKbDKbDKbDKbDKbMJbELbDNbDNbDNbDNbRxbDNbDNbDNbDNbDNbDNbDNbDNbDNbDNaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMTbMTbMTbMTbRybMTbRzbRAbRBbRCbRDbREaaEbPkaaEaaEaabaabaabaabaabaaEaaEaaEaaEaabaabaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaabaabbvWbQCbRFbzUbRGbRHbRIbRJbOgbOgbOgbOgbRKbwFbOobRLbRMbRLbOpbRNbRObRPbRQbRRbRSbOpbRTbQTbRUbRVbRWbRXbRYbRZbSabSbbFWbLdbMgbScbSdbSebSfbSgbShbMjbRebELbSibSjbSkbSlbSlbSmbSnbSobSpbSqbSrbSsbStbSubSvbSwbSxbSybSzbSAbSBbSCbSDbSEbSFbSGbSHbSIbSJbSKbSLbSDbSMbSNbSObSPbSQbScbSRbSRbSRbSSbSRbSRbSRbSRbGHbSTbSUbSVbSVbSVbSVbSVbSWbSWbSWbSWbSWbSWbSWbSWbSWbSWbSWbSWbSWbSWbSWbSXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMTbMTbSYbSZbMTbTabMTbMTbMTbMTbMTayJbTbaaEaaEaabaabaabaabaabaabaabaabaabaabaabaabaabaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaabaabbvWbvWbvWbvWbvWbvWbvWbvWbwFbwFbwFbwFbTcbOpbOpbTdbTebTdbOpbTfbTgbThbTibTjbTkbOpbTlbQTbRUbTmbTnbTobRYbTpbTqbLcbFWbLdbMgbELbPJbMjbTrbTsbTtbMjbTubOCbTvbTwbTxbTybTzbTAbTBbTCbTDbTEbTFbTGbTHbTIbTJbTKbRqbTLbTMbTNbTObTPbSwbTQbTRbSwbSrbSwbSrbTSbSlbSlbSlbTTbTUbELbTVbTWbTWbTWbTWbTXbTWbTWbTWbTWbTYbTZbMjaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabUabUbbQubPibMTbUcbUdbUebUfbMTaabaabaabaabaabaabaabaadaadaadaadaadaabaabaabaabaabaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaabaabaabbvWbUgbUhbUibUjbUkbUlbvWbvWbvWbvWbvWbTcbOpbUmbUnbUobUpbUqbUqbUqbUrbUsbUqbUtbOpbUubQTbUvbUwbUxbUybUzbUAbSabUBbUCbUDbMgbHmbPJbMjbMjbUEbMjbMjbPJbELbUFbUFbUFbUFbUGbUFbUFbUFbUHbUIbUJbUHbUKbUHbULbUMbUNbUObUPbUQbURbUObUNbUSbUTbUUbUVbUWbRkbUXbUYbSlbUZbVabVabVabVabVabVabVabVabVabVabVabVabVabMJbVbbMjaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVcbVdbVebVfbVgbVhbMTbVibVjbMTaabaabaabaabaabaadaadaadaacaacaacaadaadaadaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaabaabaabaabbvWbwFbwFbVkbwFbwFbwFbwFbwFbwFbwFbvWbTcbOpbVlbUqbUqbVmbUqbUqbUqbVnbVobVpbVqbVrbVsbVtbVtbVtbVtbVtbVubVvbPGbVwbFWbVxbMgbVybVzbVAbVAbVBbVCbVAbVDbELbUHbVEbVFbVGbVHbVIbVJbUHbVKbVLbVMbVNbVObUHbSObVPbVQbVRbSObSObVSbVTbVUbVVbSObSObVWbSlbVXbVYbSlbSlbVZbWabWbbWcbWdbVabWebWfbWgbWhbWibWjbWkbVabMJbVbbMjaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWlbOabOabWmbMTbWnbMTbMTbMTbMTaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabbvWbWobwFbwFbWpbwEbPobwFbwFbwFbwFbWqbTcbOpbOpbOpbOpbOpbOpbOpbOpbOpbOpbOpbOpbOpbWrbWsbWtbWubWvbWwbWxbWybOtbWzbFWbWAbWBbWCbPLbPLbPLbPLbWDbPLbPLbPLbWEbWFbWGbWHbWIbWJbWKbWLbWMbWNbWObWPbWQbUHbWRbWSbWTbWUbWVbSObWWbWUbWXbWYbWZbSObXabXbbRkbSlbSlbSlbXcbXdbXebXfbXgbXhbXibXjbXkbXlbXmbXnbXobVabMJbVbbMjaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadWbXpbMTbMTbMTbKVbMTaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabbvWbXqbwFbXrbvWbvWbvWbvWbXsbXsbXsbvWbXtbXubMZbMZbMZbXubXubXvbXwbXxbXybXzbXybXAbXwbXwbXBbXwbXwbXCbXDbXEbOtbLcbFWbLdbXFbXFbXFbXFbXFbELbPJbUHbUHbUHbUHbXGbXHbXHbXHbXIbXJbXKbXHbXLbXMbXHbXNbUHbXObSlbXPbXQbXRbVPbXSbXQbXPbXTbXUbSObXVbXWbXXbXYbXZbYabYbbVabYcbYdbYebYfbYgbYhbYibYjbYkbYlbYmbYnbYobYpbYqbYrbYrbYrbYragragrbYsagrbYsbYsbYsbYtbYsbYsbYsagrbYsbYsbYsbYsagragragragraaEaaEbYubYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabbYvaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabbvWbYwbwFbYxbvWbYybYzbvWbYAbwFbwFbvWbTcbYBbYBbXwbXwbXwbXwbYCbXwbYDbYEbYFbYGbYHbYIbYJbYKbYLbXwbMbbYMbYNbMebLcbFWbLdbXFbYObYPbYPbXFbELbPJbUHbYQbYRbYSbYTbYUbYVbYVbYVbYWbYXbYYbYZbZabZbbZcbYXbZdbTSbVYbXQbXRbVPbZebXQbSlbXTbZfbZgbZgbZhbZibZhbZgbZjbZgbVabVabVabVabZkbZlbZmbZnbZobZpbZqbZrbVabZsbZtbMjaabaabaabaabaaEaaEajOaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEajOaaEaaEaaEaaEaaEaaEbYubYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabbvWbVkbwFbwFbWqbwFbwFbZubwFbwFbwFbvWbTcbZvbZwbZxbZybZzbZAbZBbZAbZCbZDbZEbZFbZFbZFbZFbZGbZHbZIbLWbZJbZKbZLbZMbZNbZObZPbZQbZRbZSbXFbZTbZUbUHbZVbXHbZWbXHbXHbXHbXHbZXbZYbZZcaabXHcabbXLcacbZZcadbUXbUYbXQbXRbVPbZecaecafcagcahcaicajcakcalcamcanbZgcaobVacapcaqcarcascatcaucavbWibWibWibWibVabMJcawbMjaabaabaabaaEaaEaaEajNaaEcaxcaycazaaEcaxcaycazaaEcaxcaycazaaEajNaaEaaEaaEaaEaaEaaEaaEbYubYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaaEaaEbvWbvWbvWbvWbvWbwFbwFbvWcaAcaAcaAbvWbTcbZvbZwbZxbZybZycaBcaCcaDcaEbZFbZFbZFcaFcaGcaHcaIcaJcaKcaLcaMcaNbNnbNocaOcaPbXFcaQcaRcaScaTbOCcaUbUHcaVcaWcaXcaYcaZcbabXHcbbcbcbUHcbdcbecbfcbgcbhbUHcbicbjcbkcblcbmbSOcbncbocbpbXTbSlcbqcbrcbrcbscbrcbtbZgcbubVacbvcbwcbxcbycbzbXfcbAcbBcbCcbDcbEbVabMJcawbMjaabaabaabaaEaaEaaEajNaaEcaxcbFcazaaEcaxcbFcazaaEcaxcbFcazaaEajNaaEaaEaaEaaEaaEaaEaaEbYubYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabcbGcbHcbHcbHcbGaabaabaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEcbIcbJcbJcbKcbKcbKcbKcbKbTcbZvbZwbZxbZycbLbZAcbMbZAcbNbZDbZEbZFbZFbZFcbOcbPcbQcbRbMbbMccbSbMebLccbTbMfbXFbXFbXFbXFbXFbELbPJbUHbUHbUHbUHbUHbUHbUHcbUbUHbUHbUHbUHbUHbUHcbVbUHbUHcbWcbXbSObSObSObSOcbYcbZccaccbcccccdcceccfccgcchccibZgccjbVacckcckcckcckcclccmcbAccnbXeccoccpbVaccqcawbMjaabaabaabaaEaaEaaEajNaaEcaxcbFcazaaEcaxcbFcazaaEcaxcbFcazaaEajNaaEaaEaaEaaEaaEaaEaaEbYubYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabcbHcbHccrccsccrcbHcbHaabcbHcbHcbHcbHaaEaaEaaEaaEcctaaEaaEaaEaaEcctcbIcbKcbKcbKccuccvcbKccwccxbYBbYBbXwbXwbXwbXwccybXwcczccAccAccAccBccCccDccEccFbXwbMbbMcbMbbMebLcbFWbLdbMgccGccHccIbHmccJbZUbELbELbELbELbELbELccKbELbELbELbELbSPcbXccLccMccNccLccOccPcbXccQccRbSOccSccTccUccVccWccXccYccZcdacbrcdbbZgcdcbVacddcdecdfcbycdgcdhcdicdjcdkcdgcdlcdmcdncdobMjaabaabaabaabaaEaaEajNaaEcaxcbFcazaaEcaxcbFcazaaEcaxcbFcazaaEajNaaEaaEaaEaaEaaEaaEaaEbYubYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabcbHcbHccrccrccrccrccrcbHcbHcbHcdpcdqcdrcdscdscdscdscdscdscdscdscdscdscdscdtcducdtcdvcdwcdxcdycdzbOgbOgbOgbOgbOgbOgcdAbXwcdBcdCcdDcdDbXwbXwbXwcdEccybXBbMbbMcbMbbMebUBcdFcdGcdHcdIcdJcdJcdJcdKcdLcdMcdMcdMcdNcdMcdMcdOcdMcdMcdMcdMcdPcdQcdRcdScdTcdUcdVcdUcdWcdUcdUbSOcdXbSlbSlbSlcdYccdcdZcbrceacbrcebbZgcecbVacedceecefcascegcehceicascejcekcelbVacembHlcencencencenceoaaEaaEajNaaEcaxcbFcazaaEcaxcbFcazaaEcaxcbFcazaaEajNajNajNajNaaEaaEaaEaaEbYubYubYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabcbHcbHccrccrccrccrccrccrccrcbHcbHcepceqcbHaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEcercercbKcescetcbKcbKceuceuceuceuceuceuceucevbMebMebMebMebMebMecewcexceycezcexcexceAceBceCceDceEceFbMgbMgbMgceGceGceGceHceGceGceGceIceGceGceGceGceGceGceGbVbcbXccLccMcdUccLcdUcdUcbXceJceKbSOceLbXYceMceNceObZgcePceQceRceSceTbZgbZgbVabVabVabVabVabVabVabVabVabVabVabVabVacembHlceUceVceWceXceoceoceoaaEaaEaaEceYaaEaaEaaEceYaaEaaEaaEceYaaEaaEaaEaaEaaEajOaaEaaEaaEaaEbYubYubYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabcbHcbHccrccrceZcfaccrceZcfaccrccrcbHcfbcbHcbHaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEcercfccfdcfecffcfgcfhcficfjcfkcflcfmcfncfobLYcfpcfqcfrbLYbLYbLYbLYbZKbZJbLYbLYcfscftbMebLcbFWbLdbMgcfucfvceGcfwcfxcfyceGcfzcfAcfBcfCcfAceGcfAcfDcfEceGbVbcbXccLcfFcdUccLcdUcfGcbXcfHcfIbSObSObSObOYbSObSObZgbZgbZgcfJbZgbZgbZgcfKcfLcfMcfNcfOcfPbTWbTWbTWbTWbTWbTWbTWbTWcfQcfRcfScfTcfUcfVcfWcfXcfWcfYcfZcfZcfZcfZcfZcfZcfZcfZcfZcfZcfZcgacgbcgbcgcaaEajNaaEaaEaaEaaEbYubYubYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabcbHcbHccrccrccrcgdcgecgfcggcghccrccrcgicgjcgkcbHaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEcglcercgmcgncgocgpcgqcgrbMbbMbbMbcgscgtcgucgvbMbcgwcgxcgycgzcgAcgBcgCcgDbNlbNlbNlcgEbMbbMecgFbFWcgGbMgbMgbMgceGcgHcgIcgJceGcgKcgLcgMcgNcfAcgOcfAcfEcfEceGbVbcbXccLcgPcgQccLcdUcgRcbXcbXcbXcbXbELcgSbELbELbELcgTbELbELbRebELbELbELbELbRebELbELbELcgUcgVcgWcgXcgYcgYcgYcgYcgYcgZchacenchbchcchdceoceoceoaaEaaEaaEcheaaEaaEaaEcheaaEaaEaaEcheaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEbYubYubYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaacaacaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabcbGcbHccrccrceZchfchgcgecgfcggchhchfchfchfchfchicbGaaEaaEaaEaaEcctaaEaaEaaEaaEcctaaEaaEcerchjcgnchkchlcbKcgrchmchnchochpchqchrchsbMbchtceuchuceuchvceuceuchwchxceuceuceuceubMechybFWchzbMgchAchBceGchCcfAchDceGchEchFchGchHchIceGcfAchJcfEceGbVbcbXcbXcbXcbXcbXcbXcbXcbXchKccJbTWbTWchLbTWbTWbTWbTWbTWbTWchLbTWbTWbTWbTWchMchNchNchNchNchOchPchQchRchRchRchRchRchRchRcencencencenceoaaEaaEajNaaEcaxchScazaaEcaxchScazaaEcaxchScazaaEajNajNajOaaEaaEaaEaaEaaEbYubYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaacaacaacaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabcbHccrccrccrcgichTchTchUcgfchVchTchTchTchTchTchWcbHaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEcerchXchYchYchZcbKcgrbMbciacibchpchqcgucicbMbcidceuciecifcigcihciicijbMbceucikcilcimbMecinbUCciocipciqcirceGchEciscitciucivciwcixciycizceGceGceGceGceGciAciBbTWbTWbTWbTWbTWbTWbTWchLchMbELciCciCciCciCciCciCciCciCciCciCciCbMjciDbMjchNciEciFciGciHciIciJchRciKciLciMciNciOciPciPchRaaEaaEaaEaaEaaEajNaaEcaxchScazaaEcaxchScazaaEcaxchScazaaEajNaaEaaEaaEaaEaaEaaEbYubYubYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaacaacaacaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabcbHciQccrccrccrcgfcgfciRciScgfcgfcgfcgfcgfcgfcgfciTayJayJayJayJayJayJayJayJayJayJayJayJciUciVciWciWciXcbKciYciZcjacjacjacjbcjccjdbNlcjecjfcjgcjhcjicjjciicjkbLYcjlcjmbLYcjncjocjpbFWciobMgcjqcjrceGchCcjscjtcjucjvcjwcjxcfAcjyceGcjzcjAcjBceGcjCcjDbELbHmcjEcjFcjGbELbELbELbELcjHciCcjIcjIcjIcjJcjKcjLcjMcjMcjMciCcjNbELcjOchNcjPcjQcjRciEcjScjTcjUcjVcjWcjXcjXciOciPciPchRaaEaaEaaEaaEaaEajNaaEcaxchScazaaEcaxchScazaaEcaxchScazaaEajOaaEaaEaaEaaEaaEaaEbYubYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabcbHccrccrccrceZcjYcjYcjZcgfckacjYcjYcjYcjYcjYcjYcbHaaEaaEaaEaaEaaEaaEaaEaaEckbckbckbckbcercbKcbKcbKcbKcbKceuceucgucguchrcguceuckcbMbcidceuckdckeckfckgciickhcaMckickjckkcklbMeckmbFWcioceGceGceGceGceGceGceGceGceGcknckockpckqceGckrceGcksciCciCcktckuciCciCciCciCciCciCciCciCciCciCckvckwckxckyckzckyckAckBckCciCcjHbSPckDchNciEckEckFckGckGckHckIckJckIckKcjXciOciPciPchRaaEaaEaaEaaEaaEajNaaEcaxchScazaaEcaxchScazaaEcaxchScazaaEajNaaEaaEaaEaaEaaEaaEbYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabcbGcbHccrccrcgicgjcgkcgecgfcggckLcgjcgjcgjcgjckMcbGaaEaaEaaEaaEcctaaEaaEaaEckbckNckNckOckNckNckPckQckQckQckPckRbMbckSckTckUckVckWbMbcidceuchuckXchuceuceuckYckZceuceuclaceubMeclbbFWcaPceGclccldcleclfceGcfAcfAclgclhcfBcfAclicljcfAcfAcfAciCclkcllckyclmclncloclpclpclpckyckyclmckyckyclqckyckyclrckyckyclscltciCcluclucluchRchRchNchNchNchNchNchRchRchRchRchRchRchRchRchRaaEaaEaaEaaEaaEajNaaEcaxclvcazaaEcaxclvcazaaEcaxclvcazaaEajNaaEaaEaaEaaEaaEbYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabcbHcbHccrccrccrcgdcgecgfcggcghccrccrceZchfchgcbHaabaaEaaEaaEaaEaaEaaEaaEckbclwclxclxclyclzclAclzclzclzclBclCclCclDclEclFclEclGclEclHclIclJclKclLclMclNclObMcceuclPclQclRbMebLcbFWclSceGclTcgIcivclUclVclWcivcivclXclYclZcmacmbcmccmccmcciCcmdcmecmfcmfcmfcmfcmfcmfcmfcmfcmfcmfcmfcmfcmgcmfcmfcmhcmfcmicmhcmjcmkcmlcmmcmmcmnaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEajOaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEbYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabcbHcbHccrccrcgicmoccrcgicmoccrccrcbHcbHcbHcbHaabaabaabaaEaaEaaEaaEaaEckbcmpcmpcmpcmqcmrcmrcmsclxclwckPbMbbMbcmtcaMbNkcmubNkbNlbNlcmvcmwcmxbNlbNlbNjbNlcgEceuclQclQclRbMebLcbFWbLdckpcfAcfAcmycjtcmzcjtcjtcjtcmAcmBcfAcmCcmDcmccmEcmFciCcmGcmHckyckyckyckyckyckyckyckycmIcmJcmKcmLcmMcmLcmLcmLcmLcmNcmLcmLcmOcmPcmmcmmcmnaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEajNajNajOaaEajNajNajNajNajNajNajNajNaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabcbHcbHccrccrccrccrccrccrccrcbHcbHaabaabaabaabaabaabaabaabaabbvWbvWckbckbckbckbcmQckbckbckbckbckbckbcmRchucmSchvcmRbMebMebMebMebMebMecmtbMbbMbbMccmTcmUceuclPcmVclRbMecmWbFWcmXcmYcmZcnacnbcnacnccnacnacnacndcnacnacnecmccmccnfcngciCcnhcnicmIcnjcnjcnjcnjcnkcnjcnjcnlcnmcnncnocnlcnjcnjcnjcnjcnpcnjcnqcnrcmPcmmcnsciCaaEaaEaaEaaEaaEaaEayJaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEbYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabcbHcbHccrccrccrccrccrcbHcbHaabaabaabaabaabaabaabaabaabaabbvWcntcnucnucnubvWcnvcnwcnxcnycnycnzcnAcnBcnCcnDcnEcnFcnGcnHcnIcnIcnIcnwcnJcnKcnKcnLcnKcnKcnMcnMcnMcnMcnMbLccnNcnOcnPcfAcmccnQcmccnRcmccmccmccnScnTcmccmccmccmccnUcnVciCckycmHcnWcnXcnYcnYcnYcnYcnYcnYcnYcnWcnrcnYcnYcnYcnYcnYcnYcnZcnYcoacnrcmPcmmcmmciCaaEciCciCciCciCciCaaEcobaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEbYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabcbHcbHccrcocccrcbHcbHaabaabaabaabaabaabaabaabaabaabaabbvWcodcoecoecoebvWbwFcnwcofcogcnIcohcoicojcokcolcomconcoocopcnIcnIcoqcnwcorcnKcoscotcoucnKcovcowcoxcoxcnMbHgcoycozcoAcmZcmZcoBcmZcoAcoCcfAcfAcoDcmbcfAcoEcmbcmccmEcmFciCckycmHcnWcoFcnYcoGcoHcoIcoJcoJcnYcnWcnrcnYcoKcoLcoMcoNcoOcoPcnYcoQcoRcnjcoScoTcoUcoVcoUcoWcoXcoYciCaaEajOaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabcbGcbHcbHcbHcbGaabaabaabaabaabaabaabaabaabaabaabaabbvWcoZcpacpbcoebZubwFcnwcnIcnIcnIcpccpdcpecpfcpgcphcpicpjcpkcnycnycplcnwcorcnKcpmcpncpocppcppcpqcprcpscptcpucpvbLdceGcgHcfAcpwcpxceGcpycfAcfAcpzcpAcpBcpCcmDcmccmccmcciCcpDcmHcnWckyckycpEcpFcpGcpGcpHclmcpIcnrcpJcpKckyckyckycpLcpMcpJckycnrckycpNcmmcmnaaEcmncpOcpPcoYciCaaEajOaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaabbvWbvWbvWbvWbvWbvWbvWcpQcpRcoecoebvWbwFcnwcpScpScpScpScpScpTcpfcpgcphcpUcpScpScpScpScpScnwcorcnKcpVcotcpWcpXcpYcpZcqacqbcnMbHgbFWcozcqccqdcqecqeclfceGcqfcfAcqgclhcqhcfAcqgcqicfAcfAcfAciCcqjcmHcnWcqkcqlcpHckyckyckycpEcqmcqncnrcmncqocqpckycqqckycqrcnYcqscqtcqucqvcqwcqxcqycqxcqzcoYcoYciCaaEajNaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabbvWbvWbvWbvWbVkcqAbVkbwFbwFbvWcqBcnucnucnubvWbwFcnwcnxcnycnycqCcqDcpecpfcpgcphcpicqEcqFcnIcnIcnIcnwcorcnKcqGcqHcpocqIcnKcqJcqKcqLcnMcqMcqNcqOceGceGceGceGceGceGceGceGceGceHceGceGciCciCciCciCciCciCckycmHcnWcmHckycpEcqmcqmcqmcpHcqPcqQcqRcmncqScqTckyckyckycqUcnYcqVcnrcmPcmmcmmciCaaEciCciCciCciCciCcqWcqXaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabbvWcqYcqZbvWbwFbwFbwFbwFbwFbvWbvWbvWbvWbvWbvWbwFcnwcofcogcnIcracoicrbcpfcrccphcrdcoocrecnIcnIcoqcnwcrfcrgcrhcricrjcrkcnKcqKcqKcrlcnMcrmcrncrocrpcrqcrqcrqcrrcrscrtcrucrvcrwcrxcrycrzcrAcrBcrCcrDcrEcrFcnpckxcmHcnYcrGcrGcrHcrGcrGcnYcrIckycmncrJcrKckyckycrLcrMcnYcqVcnrcmPcmmcnsciCaaEaaEaaEaaEaaEaaEaaEajNaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabbvWbVkcrNcrObwFbwFbVkcqAcrPcrQcrRcrSbvWbwFbwFbwFcnwcnIcnIcnIcrTcrUcpecrVcrWcphcpicpjcrXcnycnycplcnwbKWcnKcrYcrYcrYcrZcnKcqKcsacsbcsccsdcsecsfcsgcsgcsgcsgcsgcsgcsgcsgcshcsicsjcskcslcsmcsncsocspcsqcsncsrcsscmHcnYcnYcnYcnYcnYcnYcnYcstcsncsucsvcswcsxcsycsycszcnYcsAcnrcmPcmmcsBciCaaEciCciCciCciCciCaaEajNaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabbvWbvWbvWbvWbwFbwFbVkcsCbwFbwFcsDbwFbvWbwFcnwcnwcnwcnwcnwcnwcnwcnwcpecrVcsEcsFcsGcpScpScpScpScpScnwbKWcnKcsHcsHcsHcsHcnKcqKcqKcqKcnMcsIcsJcsKcsLcsMcsMcsMcsMcsMcsMcsMcsLcsNcsOcsPciCcsQcsRcsScsTcnYcsUcmecmfcsVcnYcsWcsXcsXcsYcsZcnYctacsUcnYcmncmncpJcmncmncnYcnYctbctccmLctdctectfctgctfcthctictjciCaaEajNaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabbvWbVkctkctlbwFbwFbVkcsCbwFctmctnctobvWbwFcnwcnIcnIctpcnIcnwctqctrctscttctuctvcpictwctxcnIcnIcnIcnwbKWcnKctycsHctzcsHcnKctActBctCcnMctDctEctFcsMaabaaEaaEaaEaaEaaEaabcsMcsNctGctHctHctIctJctKctLcnYctMcsrctNctNctOctNctNctNctNctNctOctNctPckyckyckyckyckyckyckyctQctRctSctTctUcmmcmnaaEcmnctVctjctjciCaaEcqXaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabbvWctWctXbvWbwFbwFbwFbwFbwFbVkbVkbVkbvWbwFcnwcnIcnIcnIcnIcnwctYctZcuacubcuccubcrdcoocudcnIcnIcoqcnwbKWcnKcnKcnKcnKcnKcnKcnMcnMcnMbYBcuecrncsKcsMaabaabaaEaaEaaEaaEaaEcsMcufcugcuhcuicujcukculcumcnYckycmecunckycqscqucqucqucuocqucqucqucqucqucqucqucqucqucqucqucupcuqcurcuscutcuucuvcuwcuvcuxctjctjciCaaEajNaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabbvWbvWbvWbvWbwFbwFbwFbwFbwFcuybOnbwFbZubwFcnwcuzcnIcuAcuBcuCcuDcuEcuFcuGcpfcuGcpicpjcuHcnycnycplcnwbKWbwFbwFcuIbwFbwFbwFcuJbwFcuKcuLcuMcuNcsKcuOcsMcsMcsMcsMcsMcsMcsMcsLcufcugcuPcuQckyckyckycuRcuScmfcnickyckycuTcuUcmLcmLcuVcmKcmLcmLcmKcmLcmLcmLcmKcmLcmLcmLcmKcqRckycuWcmmcmmciCaaEciCciCciCciCciCaaEcobaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabbvWcuXcuYcuZbwFbwFbwFbwFcsCcvacvbcvcbvWbwFcnwcvdcvecvfcnIcnIcvgcvhcvicokcvjcpfcvkcpScpScpScpScpScnwbJZbOgbOgcvlbOgbOgbOgcvmcvncvocsLcvpcvqcvrcvscvtcvucvvcvwcvxcvycvzcvAcvBcvCcvDcvEcvFcvGcvFcvHcnYcvIcvJcvKcvLcvMcvNcvOcvLcvMcvPcvQcvLcvRcvNcvScvLcvRcvNcvTcvLcvRcvUcvUcvVcmmcmmciCaaEaaEaaEaaEaaEaaEaaEajNaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabbvWbvWbvWbvWbvWbvWbvWbZvbZvbvWbvWbvWbvWbwFcnwcnIcvWcnIcnIcvXcvYcvZcwacpfcuacpfcwbcwccwdcwdcwdcwdcnwbwFcsLcsLcsLcsLcsLcsLcsLcsLcsLcwecwfcrncwgcwgcugcwgcwgcwgcwhcugcwicwicwjcwkciCcmncmnciCciCciCciCcmmcmmcwlcwmcwncmmcwocwpcwqcwrcwlcwscwtcmmcwlcwucwtcmmcwlcwvcwtcmmcmmcmmcmmcmmciCaaEajNajOcobajNajNcqXajNaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaaEaaEaaEaaEaaEcwwcwxcwxcwxcwxbwFcnwcnIcnIcnIcnIcnwcwycwzcwAcpfcuacpfcwBcwCcwdcwdcwdcwDcnwbwFcsLcwEcwFcwGcwHcwIcwJcwKcwLcwMcwNcwOcwPcwQcwQcwQcwQcwQcwRcwQcwQcwQcwScwTcsLabDabDabDabDabDciCcwUcwVcwWcmmcwXcwUcwWcmmcwYcwZcwWcmmcxacwUcwWcmmcxbcwUcwWcmmcxccxdcmmcwUcmmcmmciCaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaaEaaEaaEcwwcwwcwwcxecxfcxgcxhbwFcnwcnIcnIcxicnIcnwcxjcxkcxlcxmcxncpfcxocxpcwdcwdcwdcwdcnwbIQcxqcxrcxscxtcxucxucxscxscxvcxvcxvcxwcxxcwgcugcwgcwgcwgcxycugcwicwicugcxzcsLabDabDabDabDabDciCciCciCcxAcmncxBciCcxCcxDcxEciCcxAcmncxBciCcxAcmncxBciCcxAcmncxBciCciCciCciCcxFciCciCabDabDabDabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaaEcxGcxGcxGcxHcxIcxJcxIcxKcxLcxMcxNcxOcnwcnwcnwcnwcnwcnwcnwcnwcnwcnwcnwcxPcnwcnwcnwcnwcnwcnwcnwbDccsLcxQcxRcxScxRcxRcxTcxRcxRcxRcxRcxRcxRcxRcxRcxRcxTcxUcxVcxRcxRcxScxRcwfcsLabDabDabDabDabDadWadWabpcxWabpcxXabpcxYabpcxZabpcxWabpcxXabpcxYabpcxZabpcxWabpcxZabpabpabpciCcyacybciCabDabpabpabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEcxGaaEaaEaaEcwwcwwcwwcyccydcyecwxcyfbAabAabAabAabAabAabAabAabAabAabAabAabAabAabAabAabAabAabAabAbcsLcsLcygcsLcsLcsLcsLcyhcygcyhcyhcyhcyhcyhcygcyicsLcsLcsLcsLcyjcsLcsLcsLcsLabDabDabDabDabDaRFabpcykcxAcmncxBcykcxCcxDcxEcykcxAcmncxBcykcxAcmncxBcykcxAcmncxBcykabDabDcxFcylcymciCabDabDabpbIPabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaaEaaEaaEaaEajNajNajNajOajNaaEcxGaaEaaEaaEaaEaaEcwwcwxcwxcwxcwxcynbwFbwFbvWbvWbvWbvWbvWcyocypbwFcyqcyrcysbwFcypbPnbLQbvWbvWbvWbvWcytcyucyvabDabDabDcytcyucyvabpabpabpcytcyucyvabDabDabDcytcyucyvaaaaaaabDabpaotabpabpabpabpabpcykcywcyxcyycykcyzcyAcyBcykcyCcyDcyEcykcyFcyGcyHcykcyIcyJcyKcykabDabDciCciCciCciCabDabDabpbIPabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEcxGaaEaaEaaEaaEaaEaaEaaEajOaaEbvWbvWbvWbvWbvWaaaaaaaaabvWbvWbvWbZvbZvbZvbZvbZvbvWbvWbvWbvWaaaaaacyLcyMcygcyNabDabDabDcyMcygcyNabpabpabpcyMcygcyNabDabDabDcyMcygcyNaaaaaaabDabDabpaotaotabpaRFabpcykcyOcyPcyQcykcyRcyScyTcykcyUcyVcyWcykcyXcyYcyZcykczaczbczccykabDabDabpabDabDabDabDabDczdczeabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaaEaaEaaEajNaaEczfczfczfczfczfaaEcxGaaEczfczfczfczfczfaaEajNaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczgczhczhcziczjcziczkabDabDczlczmczlabDabDabDczlcznczlabDabDczgczoczpczoczkaaaabDabDabpabDabpabDaotabpcykcyOcyOcyOcykcyRcyRcyRcykcyUcyUcyUcykcyXcyXcyXcykczaczaczacykabDabDabpabDabDabDabDabDabpbIPabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaadaadaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaaEaaEaaEaaEajOaaEczqczrczrczrczrczscxGcxHcztcztcztcztczuaaEajNaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczvczwczxczyczzczAczBczkabDczlczCczlabDabDabDczlczCczlabDabDczDczEczFczGczDaaaabDabDaotabDabDabDaXIabpcykcykcykcykcykcykcykcykcykcykcykcykcykcykcykcykcykcykcykcykcykabDabDabpabDabDabDabDabDabpczeabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaadaadaadaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaaEaaEaaEaaEaaEaaEajNaaEczHczHczHczHczHaaEcxGaaEczHczHczHczHczHaaEajNaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczgczoczIczJczzczzczzczBczKczoczLczCczMczNczNczNczLczCczMczoczoczxczOczFczGczBczkabDabDabDabDabDabDczPabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpczPabpabpabpabpabpabpbIPabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaadaadaadaacaacaacaacaacaacaacaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEajNaaEaaEaaEaaEaaEaaEaaEcxGaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczvczwczDczQczzczzczzczRczSczTczUczCczVczVczVczVczVczCczWczXczYcziczEczFczGczBczKczkabDabDabDabDabDczPaRFabpaotczPabpaRFczPczPaRFabpaRFabpczZczPczPaRFczPaRFaRFaotaRFczPabpaRFabpaRFczeczZczebIPbIPbIPabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaadaadaacaacaacaacaacaacaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEajNaaEczfczfczfczfczfaaEcxGaaEczfczfczfczfczfaaEajNaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczBczoczKczoczoczoczocAaczCczCczCczCczCczCczCczCczCczCczCczCczCcAbczFczFczFczicAcczDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEajNaaEczqczrczrczrczrczscxGcxHcztcztcztcztczuaaEajNaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczicAdcAecAfcAgcAhcAicAjczCcAkcAlcAlcAlcAlczCcAlcAlcAlcAlcAmczCczicAnczFczFcAbczFcziaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEajOaaEczHczHczHczHczHaaEcxGaaEczHczHczHczHczHaaEajNaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczicAecAecAocApcAqcArcAsczCcAkcAtcAtcAtcAtczCcAtcAtcAtcAtcAmczCcAuczocziczoczocziczxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEajNaaEaaEaaEaaEaaEaaEaaEcxGaaEaaEaaEaaEaaEaaEaaEajOaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczicAvcAecAwcAxcAycAzcAAczCcAkczVczVczVczVczCczVczVczVczVcAmczCczicABczCczCcACczCcziaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaacaacaacaacaacaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEajNaaEczfczfczfczfczfaaEcxGaaEczfczfczfczfczfaaEajNaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczBczoczhczoczoczoczoczJczCczCczCczCczCczCczCczCczCczCczCczCczCcADczCczCczCczNcAEczDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabbYvaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEczqczrczrczrczrczscxGcxHcztcztcztcztczuaaEajNaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczvczwczDcAFczCczCczCcAGczCcAHczWcAecAIcAlcAlcAlcAJcAecAKczTczYcziczCczCcALczBczhcAMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEczHczHczHczHczHaaEcANaaEczHczHczHczHczHaaEajNaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAOczoczIczhcAGczhcAGczIczhczoczoczoczoczNczNczNczoczoczoczoczoczxcAPczCcAQczBcAMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEajNaaEaaEaaEaaEaaEaaEaaEcARaaEaaEaaEaaEaaEaaEaaEajNaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczvczwczxcASczDcASczBcAMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczDcATcAUcAVczDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEajNajNajOajNajNaaEajNaaEcARaaEaaEajNajOajNajNajNajNaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAOczKczKczicAWczicAMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAOczocziczocAMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEajNaaEcAXaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaEbYuaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEajNaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYubYubYuaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEajNajNajOajNajNaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYubYuaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYuaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEbYubYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYuaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEbYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYubYubYubYubYuaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEbYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYubYubYubYubYubYubYubYubYubYuaaEaaEbYubYubYubYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYubYubYubYubYubYubYubYubYubYubYubYubYubYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYubYubYubYubYuaaabYubYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYubYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSwaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} diff --git a/_maps/map_files/AsteroidStation/z5.dmm b/_maps/map_files/AsteroidStation/z5.dmm new file mode 100644 index 00000000000..0e4c39ce479 --- /dev/null +++ b/_maps/map_files/AsteroidStation/z5.dmm @@ -0,0 +1,271 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/open/space, +/area/space) +"b" = ( +/turf/closed/mineral/random/high_chance, +/area/mine/explored) +"c" = ( +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) + +( +1, +1, +1) = {" +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaabbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbaaaaaaaaaaaabbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcbbaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbabbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbaaaaabbaaaaaaaaaaaabbbbbbbbbccbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbbbbbbbbbbbbbbbbbbbbbaaaaaaaabbbbbbbbbbbccbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccccbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbccbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbcbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaabbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbaaaaaaaabbbabbbbbbbbbbbbbbbccbbbbbbbbbbbbbbbbbbbbbbaaaaaabbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbaaaaaaaaaaaaaabbbbbbbbbccccbbbbbbbbbbbbbbbaaaaaaaaaaaaaaabbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbcbaaaaaaaaaaaaaaaaaaaaabbcaccbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaacccbbbbbbbbbbbccaaaaaaaaaaaabbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbaaaaaaaaaaaaabbbbbbbbbbbbcaaaaaabbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbaaaaaaaabaaaaaabbbbbbbbbccaaaaabbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbaaaaaaaabbaaaaaaaabbbbbbbaaaaaacbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbcaaaaaaaaabbbaaaaaaacbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbaaaaaaaaaaaaaaaaaaaccbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} From 35a868b33c2dfa4cd43802e5b4920fa585acfd0d Mon Sep 17 00:00:00 2001 From: Robustin Date: Thu, 21 Apr 2016 12:00:01 -0400 Subject: [PATCH 080/265] All memes must die --- code/modules/power/cable.dm | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 0b6631a9fda..8b935ebcc7d 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -28,7 +28,7 @@ By design, d1 is the smallest direction and d2 is the highest on_blueprints = TRUE var/datum/powernet/powernet name = "power cable" - desc = "A flexible, superconducting cable for heavy-duty power transfer." + desc = "A flexible, superconducting insulated cable for heavy-duty power transfer." icon = 'icons/obj/power_cond/power_cond_red.dmi' icon_state = "0-1" var/d1 = 0 // cable direction 1 (see above) @@ -151,10 +151,6 @@ By design, d1 is the smallest direction and d2 is the highest user << "The cable is not powered." shock(user, 5, 0.2) - else - if (W.flags & CONDUCT) - shock(user, 50, 0.7) - src.add_fingerprint(user) // shock the user with probability prb @@ -469,7 +465,7 @@ var/global/list/datum/stack_recipe/cable_coil_recipes = list ( \ amount = MAXCOIL merge_type = /obj/item/stack/cable_coil // This is here to let its children merge between themselves item_color = "red" - desc = "A coil of power cable." + desc = "A coil of insulated power cable." throwforce = 0 w_class = 2 throw_speed = 3 From 3a67251ebf99b514e6a67c8cce3b71de3fb4006b Mon Sep 17 00:00:00 2001 From: oranges Date: Tue, 19 Apr 2016 22:59:42 +0000 Subject: [PATCH 081/265] Time filter added to changelog tool You can now use -t to determine how many weeks back the generated html changelog should go. The default is set to 4 Long form of the argument is supported as --time-period --- tools/ss13_genchangelog.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tools/ss13_genchangelog.py b/tools/ss13_genchangelog.py index ed76aa9c6c6..2238e2925e5 100644 --- a/tools/ss13_genchangelog.py +++ b/tools/ss13_genchangelog.py @@ -27,7 +27,7 @@ THE SOFTWARE. from __future__ import print_function import yaml, os, glob, sys, re, time, argparse -from datetime import datetime, date +from datetime import datetime, date, timedelta from time import time today = date.today() @@ -36,6 +36,7 @@ dateformat = "%d %B %Y" opt = argparse.ArgumentParser() opt.add_argument('-d', '--dry-run', dest='dryRun', default=False, action='store_true', help='Only parse changelogs and, if needed, the targetFile. (A .dry_changelog.yml will be output for debugging purposes.)') +opt.add_argument('-t', '--time-period', dest='timePeriod', default=4, type=int, help='Define how many weeks back the changelog should display') opt.add_argument('targetFile', help='The HTML changelog we wish to update.') opt.add_argument('ymlDir', help='The directory of YAML changelogs we will use.') @@ -172,8 +173,11 @@ with open(args.targetFile.replace('.htm', '.dry.htm') if args.dryRun else args.t with open(os.path.join(targetDir, 'templates', 'header.html'), 'r') as h: for line in h: changelog.write(line) - + + weekstoshow = timedelta(weeks=args.timePeriod) for _date in reversed(sorted(all_changelog_entries.keys())): + if not (today - _date < weekstoshow): + continue entry_htm = '\n' entry_htm += '\t\t\t

{date}

\n'.format(date=_date.strftime(dateformat)) write_entry = False From 263f0c7f9cd035749d0f5ced7d2a1c2166d23376 Mon Sep 17 00:00:00 2001 From: PKPenguin321 Date: Thu, 21 Apr 2016 17:12:23 -0700 Subject: [PATCH 082/265] gives krav maga gloves to the warden --- code/modules/jobs/job_types/security.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/jobs/job_types/security.dm b/code/modules/jobs/job_types/security.dm index e62a8e155a2..7e0bab091c3 100644 --- a/code/modules/jobs/job_types/security.dm +++ b/code/modules/jobs/job_types/security.dm @@ -98,7 +98,7 @@ Warden uniform = /obj/item/clothing/under/rank/warden shoes = /obj/item/clothing/shoes/jackboots suit = /obj/item/clothing/suit/armor/vest/warden - gloves = /obj/item/clothing/gloves/color/black + gloves = /obj/item/clothing/gloves/color/black/krav_maga/sec head = /obj/item/clothing/head/warden glasses = /obj/item/clothing/glasses/hud/security/sunglasses r_pocket = /obj/item/device/assembly/flash/handheld From 4c401a1272e8db41858da3f38cb5d67f702f52b7 Mon Sep 17 00:00:00 2001 From: Robustin Date: Thu, 21 Apr 2016 21:57:06 -0400 Subject: [PATCH 083/265] MERRRRGGEEEE --- icons/obj/items.dmi | Bin 67423 -> 66671 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index c77ab806de19c4248778dba99447460cefe51ee8..47a8876a403d12795f219e00c148fe7b6c5db65b 100644 GIT binary patch delta 28911 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 Date: Thu, 21 Apr 2016 20:28:27 -0500 Subject: [PATCH 084/265] new z-levels --- _maps/asteroidstation.dm | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/_maps/asteroidstation.dm b/_maps/asteroidstation.dm index d0805e0648f..35d0ddd6dda 100644 --- a/_maps/asteroidstation.dm +++ b/_maps/asteroidstation.dm @@ -1,7 +1,18 @@ /* -The /tg/ codebase currently requires you to have 7 z-levels of the same size dimensions. +The /tg/ codebase currently requires you to have 9 z-levels of the same size dimensions. z-level order is important, the order you put them in inside this file will determine what z level number they are assigned ingame. Names of z-level do not matter, but order does greatly, for instances such as checking alive status of revheads on z1 + +current as of 4/21/2016 +z1 = station +z2 = centcomm +z3 = derelict telecomms satellite +z4 = derelict station +z5 = mostly empty space +z6 = empty space +z7 = empty space +z8 = empty space +z9 = empty space */ #if !defined(MAP_FILE) @@ -17,12 +28,14 @@ Names of z-level do not matter, but order does greatly, for instances such as ch #include "map_files\AsteroidStation\z5.dmm" #include "map_files\generic\z6.dmm" #include "map_files\generic\z7.dmm" + #include "map_files\generic\z8.dmm" + #include "map_files\generic\z9.dmm" #define MAP_PATH "map_files/AsteroidStation" #define MAP_FILE "AsteroidStation.dmm" #define MAP_NAME "AsteroidStation" - #define MAP_TRANSITION_CONFIG list(MAIN_STATION = CROSSLINKED, CENTCOMM = SELFLOOPING, ABANDONED_SATELLITE = CROSSLINKED, DERELICT = CROSSLINKED, MINING = CROSSLINKED, EMPTY_AREA_1 = CROSSLINKED, EMPTY_AREA_2 = CROSSLINKED) + #define MAP_TRANSITION_CONFIG list(MAIN_STATION = CROSSLINKED, CENTCOMM = SELFLOOPING, ABANDONED_SATELLITE = CROSSLINKED, DERELICT = CROSSLINKED, MINING = CROSSLINKED, EMPTY_AREA_1 = CROSSLINKED, EMPTY_AREA_2 = CROSSLINKED, EMPTY_AREA_3 = CROSSLINKED, EMPTY_AREA_4 = CROSSLINKED) #elif !defined(MAP_OVERRIDE) From 7d9bc3b1c6ba271978bfe43dcac025ca1fc81202 Mon Sep 17 00:00:00 2001 From: Robustin Date: Thu, 21 Apr 2016 22:27:49 -0400 Subject: [PATCH 085/265] Color and formatting improvements --- code/game/gamemodes/cult/ritual.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 87ece6f4d04..2ade607d222 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -206,7 +206,7 @@ This file contains the arcane tome files as well as innate cultist emergency com text += "Talisman of Stunning
Without this talisman, the cult would have no way of easily acquiring targets to convert. Commonly called \"stunpapers\", this \ talisman functions differently from others. Rather than simply reading the words, the target must be attacked directly with the talisman. The talisman will then knock down the target for a long \ - duration in addition to inhibiting their speech. Robotic lifeforms will suffer the effects of a heavy electromagnetic pulse instead." + duration in addition to inhibiting their speech. Robotic lifeforms will suffer the effects of a heavy electromagnetic pulse instead.

" text += "Talisman of Armaments
The Talisman of Arming will equip the user with armored robes, a backpack, an eldritch longsword, an empowered bola, and a pair of boots. Any items that cannot \ be equipped will not be summoned.

" @@ -275,7 +275,7 @@ This file contains the arcane tome files as well as innate cultist emergency com var/obj/machinery/shield/N = new(B) N.name = "Rune-Scriber's Shield" N.desc = "A potent shield summoned by cultists to protect them while they prepare the final ritual" - N.color = "red" + N.icon_state = "shield-red" N.health = 60 shields |= N if(!do_after(user, 400, target = get_turf(user))) From 58a5baff6cc77c3458d329b7c82ee798957eb33b Mon Sep 17 00:00:00 2001 From: Lularian Date: Fri, 22 Apr 2016 05:10:08 -0500 Subject: [PATCH 086/265] sprites --- icons/obj/smooth_structures/sandbags.dmi | Bin 1318 -> 887 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/smooth_structures/sandbags.dmi b/icons/obj/smooth_structures/sandbags.dmi index 139235cedf94e00bd1bde0bc189a713630d705b7..2bb3723044e217997503d61013590ac10b9519e2 100644 GIT binary patch delta 670 zcmV;P0%8583ik$(BpVV?OjJd{z`&b(OVp}#!<%HKhgJXo|HE%q$B{h5e*#`fL_t(& zf$f?>a>6hSMaiQ3y5$1IC-CS5gxvp3wG*b0=&P13575DyVWWv3j{PHj6AlM^41PZQ z2Amr(jDgw${fh$+XHRoW-f*HYwgzr@*}1{(uR=L3a3Gr4ls!%KsRZtIIFNH}Ho-YH zaIeFdAhzw(NZ)Fp-vd1We^Na#>4*U@L`NNu>oD#T@m(&M;a-POnDku)^nWI-!0dpi zGq%QboVBvzKveJOOMM3b=)tCW8_=Rt9%r)YbRS8l2v~p19u$w0zIXs2UHC4?T=g0n z3-Fu8$FnE!uftN`FwjunFi>Cep9GwJeSL%R`nRkFrm`iKvrS&Bf5Ye-N00sFHm}uT z^o=fHKe^3oZ+V@E2YzywR|8`QoIn?3d94m(`=kqQtJ}POm)F(G=CwfmE-QiSN==|o z<9rHu{(Ut+2!MuXy*Ut`e=YUWddz@8%Q52tz^+3xu336SJ{67J{;YJ~0nm9E$)1wk{i2--mPvePTAQzK`or@QK;D z`aWdepij(3u^(Jl0{_s1^4aT}1D!j$^x0o1<%R2RK=rvp2&Pl@xkCu1(>B06ovIIm zLWE@n@5)@kGa@AX3A>kl)qc>6&+u=~Lqu=_zJu=~MZ z;KTf&463wmQocQ~)(=YKHibigigFH- ze4GWaPHYZh(3C?AzHR0ZmI`o~IRu(AcmXc~0jo_}_;9PV!2rbxI8Yr!yZmqrvvZff zT)u$d)EDX%fE5xr0Z5aPrvbW47Sa+`T0w}|xx#@nJgCGkIDhw2mc%tElRgY?KrWY7 z@#v*2X`{;+n3ZS~Q_}VEV*8e%Yn^Gi( zIO%IOM~UIXpPgwVI}%ILluN<54F!ugt65PN84f|~NscRj5UX8w#gHjeAwx;9FI1GB zfbeNvzt~v;su%HUK(qgqlhiLTjs6#cyBsOg{V!XdbALbJuKzs`xa)sE0GV>X+N%5C z)!@XY?EBxXQ@ZqnG_-cCkR1LV0sFHOof_v5>rANpYkg7HnF zQ`vpEf>pML4TB`HNLHJ${vF1M$H?>t;JWU+MStnul(_Xc+3rmiNMH+SYO9lcl)2@3 zd~p(H#iCq<$}webpGv}-vh_G`b$TdsX-gGlVQf6kTb&D+GB;Ggc!HTE zHhdJ008=C>M_bC*3)qx_#qlv^UeGe`rJngp%6aYwELQP2VMDUy-x-62I?C7+!!f-2 z&41&|UuFI@;9C!V*jo?!?X3qNfNwqMw*RjOpR6o+#ZjdPTk|t(CQpo%9&F8*!ykL} zU~9fqCdgK9p4`&Fi?2i5$uzg|)Ee=Xo2 Xr^e7h5wj;j00000NkvXXu0mjfHW?)6 From cf886fc84d596f26838a5fb01510ba7431cec078 Mon Sep 17 00:00:00 2001 From: Jack Edge Date: Fri, 22 Apr 2016 12:22:58 +0100 Subject: [PATCH 087/265] New Processor Overload event An exospheric bubble has occured, making the telecommunications processors overload and shut down (and very occasionally, also explode). But hey, at least telecommunications is still functional? You just gotta shout REALLY LOUDLY to make yourself heard over the static. :cl: coiax rscadd: Centcom regret to inform you that new instabilities with nearby gas giants are causing exospheric bubbles to affect the telecommunications processors. Please contact your supervisor for further instructions. /:cl: --- code/modules/events/processor_overload.dm | 38 +++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 code/modules/events/processor_overload.dm diff --git a/code/modules/events/processor_overload.dm b/code/modules/events/processor_overload.dm new file mode 100644 index 00000000000..bae9f03d574 --- /dev/null +++ b/code/modules/events/processor_overload.dm @@ -0,0 +1,38 @@ +/datum/round_event_control/processor_overload + name = "Processor Overload" + typepath = /datum/round_event/processor_overload + weight = 15 + +/datum/round_event/processor_overload + announceWhen = 1 + +/datum/round_event/processor_overload/announce() + var/alert = pick( "Exospheric bubble inbound. Processor overload is likely. Please contact you*%xp25)`6cq-BZZT", \ + "Exospheric bubble inbound. Processor overload is likel*1eta;c5;'1v¬-BZZZT", \ + "Exospheric bubble inbound. Processor ov#MCi46:5.;@63-BZZZZT", \ + "Exospheric bubble inbo'Fz\\k55_@-BZZZZZT", \ + "Exospheri:%£ QCbyj^j" + A << "[alert]" + A << "
" + + // Announce most of the time, but leave a little gap so people don't know + // whether it's, say, a tesla zapping tcomms, or some selective + // modification of the tcomms bus + if(prob(80)) + priority_announce(alert) + + +/datum/round_event/processor_overload/start() + for(var/obj/machinery/telecomms/T in telecomms_list) + if(istype(T, /obj/machinery/telecomms/processor)) + var/obj/machinery/telecomms/processor/P = T + // Wow, it overloaded so much that it EXPLODED!? + if(prob(10)) + P.ex_act(2) + else + P.emp_act(1) From 02110a84b84664fedee04da3e2162a09237bf992 Mon Sep 17 00:00:00 2001 From: Jack Edge Date: Fri, 22 Apr 2016 12:41:37 +0100 Subject: [PATCH 088/265] Added processor_overload.dm to tgstation.dme --- tgstation.dme | 1 + 1 file changed, 1 insertion(+) diff --git a/tgstation.dme b/tgstation.dme index a2a4a626d32..5a9e50093d4 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1020,6 +1020,7 @@ #include "code\modules\events\operative.dm" #include "code\modules\events\portal_storm.dm" #include "code\modules\events\prison_break.dm" +#include "code\modules\events\processor_overload.dm" #include "code\modules\events\radiation_storm.dm" #include "code\modules\events\shuttle_loan.dm" #include "code\modules\events\spacevine.dm" From 54c825416d361abc0f97636f7ad2370981b48bb9 Mon Sep 17 00:00:00 2001 From: Lularian Date: Fri, 22 Apr 2016 08:25:08 -0500 Subject: [PATCH 089/265] changes some TC prices --- code/modules/uplink/uplink_item.dm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/code/modules/uplink/uplink_item.dm b/code/modules/uplink/uplink_item.dm index 1baccb2e549..b243e48e9e4 100644 --- a/code/modules/uplink/uplink_item.dm +++ b/code/modules/uplink/uplink_item.dm @@ -139,7 +139,7 @@ var/list/uplink_items = list() // Global list so we only initialize this once. desc = "A small, easily concealable handgun that uses 10mm auto rounds in 8-round magazines and is compatible \ with suppressors." item = /obj/item/weapon/gun/projectile/automatic/pistol - cost = 9 + cost = 5 /datum/uplink_item/dangerous/revolver name = "Syndicate Revolver" @@ -790,7 +790,7 @@ var/list/uplink_items = list() // Global list so we only initialize this once. for rapid healing, a medical HUD for quick identification of injured personnel, \ and other supplies helpful for a field medic." item = /obj/item/weapon/storage/firstaid/tactical - cost = 9 + cost = 4 include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/gang) /datum/uplink_item/device_tools/thermal @@ -839,7 +839,7 @@ var/list/uplink_items = list() // Global list so we only initialize this once. during gravitational generator failures. These reverse-engineered knockoffs of Nanotrasen's \ 'Advanced Magboots' slow you down in simulated-gravity environments much like the standard issue variety." item = /obj/item/clothing/shoes/magboots/syndie - cost = 3 + cost = 2 include_modes = list(/datum/game_mode/nuclear) /datum/uplink_item/device_tools/c4 @@ -862,7 +862,7 @@ var/list/uplink_items = list() // Global list so we only initialize this once. load on the grid, causing a stationwide blackout. The sink is large and cannot be stored in most \ traditional bags and boxes." item = /obj/item/device/powersink - cost = 10 + cost = 6 /datum/uplink_item/device_tools/singularity_beacon name = "Power Beacon" @@ -901,7 +901,7 @@ var/list/uplink_items = list() // Global list so we only initialize this once. of humanoids. It has two settings: intensity, which controls the power of the radiation, \ and wavelength, which controls how long the radiation delay is." item = /obj/item/device/rad_laser - cost = 5 + cost = 3 /datum/uplink_item/device_tools/assault_pod name = "Assault Pod Targetting Device" From 06f34b16342f4b2469ac59befb28aa5a6eb2b3de Mon Sep 17 00:00:00 2001 From: Jack Edge Date: Fri, 22 Apr 2016 14:29:00 +0100 Subject: [PATCH 090/265] Removed processor explosion chance --- code/modules/events/processor_overload.dm | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/code/modules/events/processor_overload.dm b/code/modules/events/processor_overload.dm index bae9f03d574..200bb87c10c 100644 --- a/code/modules/events/processor_overload.dm +++ b/code/modules/events/processor_overload.dm @@ -31,8 +31,6 @@ for(var/obj/machinery/telecomms/T in telecomms_list) if(istype(T, /obj/machinery/telecomms/processor)) var/obj/machinery/telecomms/processor/P = T - // Wow, it overloaded so much that it EXPLODED!? - if(prob(10)) - P.ex_act(2) - else - P.emp_act(1) + // Apparently machines very occasionally blowing up due to + // overload is "boring" and "not fun". So just EMP for now. + P.emp_act(1) From c5506d19af1fdaafb9e2077301defad8092f2871 Mon Sep 17 00:00:00 2001 From: TechnoAlchemist Date: Fri, 22 Apr 2016 19:06:41 -0700 Subject: [PATCH 091/265] Adds craftable bracers, adds watchers dropping bones. --- code/modules/clothing/gloves/miscellaneous.dm | 19 +++++++++++++++++- code/modules/crafting/recipes.dm | 8 ++++++++ .../simple_animal/hostile/mining_mobs.dm | 2 +- icons/mob/hands.dmi | Bin 8239 -> 8608 bytes icons/obj/clothing/gloves.dmi | Bin 11753 -> 12197 bytes 5 files changed, 27 insertions(+), 2 deletions(-) diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index 894c8b8d3ae..1a261f16d4a 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -35,4 +35,21 @@ min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT heat_protection = HANDS max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT - burn_state = FIRE_PROOF \ No newline at end of file + burn_state = FIRE_PROOF + +/obj/item/clothing/gloves/bracer + name = "bone bracers" + desc = "For when you're expecting to get slapped on the wrist. Offers modest protection to your arms." + icon_state = "bracers" + item_state = "bracers" + item_color = null //So they don't wash. + transfer_prints = TRUE + strip_delay = 40 + put_on_delay = 20 + body_parts_covered = ARMS + cold_protection = ARMS + min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT + max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT + burn_state = FIRE_PROOF + armor = list(melee = 60, bullet = 35, laser = 35, energy = 20, bomb = 35, bio = 35, rad = 35) //Not like anything ever hits the arms anyways. + diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index 2f0f739bf0d..a2b1e4a81e7 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -363,6 +363,14 @@ name = "Bone Talisman" result = /obj/item/clothing/tie/talisman time = 20 + reqs = list(/obj/item/stack/sheet/bone = 2, + /obj/item/stack/sheet/sinew = 1) + category = CAT_MISC + +/datum/table_recipe/bracers + name = "Bone Bracers" + result = /obj/item/clothing/gloves/bracer + time = 20 reqs = list(/obj/item/stack/sheet/bone = 2, /obj/item/stack/sheet/sinew = 1) category = CAT_MISC \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm index 0d41abe1c86..d914bc5943b 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm @@ -635,7 +635,7 @@ stat_attack = 1 robust_searching = 1 loot = list() - butcher_results = list(/obj/item/weapon/ore/diamond = 2, /obj/item/stack/sheet/sinew = 1) + butcher_results = list(/obj/item/weapon/ore/diamond = 2, /obj/item/stack/sheet/sinew = 1, obj/item/stack/sheet/bone = 1) //Goliath diff --git a/icons/mob/hands.dmi b/icons/mob/hands.dmi index f8a6c510b68f54dbaee7423e7bda8798763692f8..6a7d0032c7f989a367ee4aa594348d453243cc26 100644 GIT binary patch literal 8608 zcmc(Fc~n!$ws+K4+X-wH5fNxxg=P{VA~J+Hpv(va2vdm43_?H%Gr^VyTTvqO3^ES^ zBC~)H6akrKNPbHNj&)(;` zxtad4!)Ffz0DxnL26~nNz@GcN>E{E&l9&gDCc=w-VOF+*daeP^k3IbYJrTYDKuC7V z7|6Ht%F+GbzH04H7?9^A;f=q)S$*x8|N1xkhZv(hmwE z?LK*|XT;GClWYQ_$w-?v{e?&f3k$slb2(Hq6F2$Dnc|srO95IfITku%1frR0l=FTV zfk3<#CDTi)W#V6EZY

" + var/area/A = get_area(src) + var/t = "AI Liquid Dispenser ([format_text(A.name)])
" - if(src.locked && (!(istype(user, /mob/living/silicon) || IsAdminGhost(user)))) + if(locked && (!(issilicon(user) || IsAdminGhost(user)))) t += "(Swipe ID card to unlock control panel.)
" else - t += text("Dispenser [] - []?
\n", src.disabled?"deactivated":"activated", src, src.disabled?"Enable":"Disable") - t += text("Uses Left: [uses]. Activate the dispenser?
\n") - + t += "Dispenser [disabled?"deactivated":"activated"] - [disabled?"Enable":"Disable"]?
\n" + t += "Uses Left: [uses]. Activate the dispenser?
\n" user << browse(t, "window=computer;size=575x450") onclose(user, "computer") - return /obj/machinery/ai_slipper/Topic(href, href_list) if(..()) diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 1f64778f662..5e03d4b9dc3 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -89,7 +89,8 @@ popup.set_content(dat) popup.open() - return +/obj/machinery/autolathe/deconstruction() + materials.retrieve_all() /obj/machinery/autolathe/attackby(obj/item/O, mob/user, params) if (busy) @@ -105,12 +106,15 @@ if(panel_open) if(istype(O, /obj/item/weapon/crowbar)) - materials.retrieve_all() default_deconstruction_crowbar(O) return 1 else if(is_wire_tool(O)) wires.interact(user) return 1 + + if(user.a_intent == "harm") //so we can hit the machine + return ..() + if(stat) return 1 @@ -124,7 +128,7 @@ files.AddDesign2Known(D.blueprint) busy = 0 - return + return 1 var/material_amount = materials.get_item_material_amount(O) if(!material_amount) @@ -153,6 +157,7 @@ qdel(O) busy = 0 src.updateUsrDialog() + return 1 /obj/machinery/autolathe/Topic(href, href_list) if(..()) diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm index 1a62efe579e..3cf587ceb9f 100644 --- a/code/game/machinery/buttons.dm +++ b/code/game/machinery/buttons.dm @@ -25,7 +25,7 @@ panel_open = 1 update_icon() - + if(!built && !device && device_type) device = new device_type(src) @@ -56,9 +56,6 @@ icon_state = skin /obj/machinery/button/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/device/detective_scanner)) - return - if(istype(W, /obj/item/weapon/screwdriver)) if(panel_open || allowed(user)) default_deconstruction_screwdriver(user, "button-open", "[skin]",W) @@ -101,7 +98,10 @@ update_icon() return - return src.attack_hand(user) + if(user.a_intent != "harm" && !(W.flags & NOBLUDGEON)) + return src.attack_hand(user) + else + return ..() /obj/machinery/button/emag_act(mob/user) req_access = list() diff --git a/code/game/machinery/camera/camera_assembly.dm b/code/game/machinery/camera/camera_assembly.dm index 970c174a025..63296827e2c 100644 --- a/code/game/machinery/camera/camera_assembly.dm +++ b/code/game/machinery/camera/camera_assembly.dm @@ -120,7 +120,7 @@ upgrades -= U return - ..() + return ..() /obj/machinery/camera_assembly/proc/weld(obj/item/weapon/weldingtool/WT, mob/living/user) if(busy) diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm index 13ed9276e25..51cebe67da7 100644 --- a/code/game/machinery/cell_charger.dm +++ b/code/game/machinery/cell_charger.dm @@ -33,10 +33,13 @@ user << "Current charge: [round(charging.percent(), 1)]%" /obj/machinery/cell_charger/attackby(obj/item/weapon/W, mob/user, params) - if(stat & BROKEN) - return - - if(istype(W, /obj/item/weapon/stock_parts/cell) && anchored) + if(istype(W, /obj/item/weapon/stock_parts/cell)) + if(stat & BROKEN) + user << "[src] is broken!" + return + if(!anchored) + user << "[src] isn't attached to the ground!" + return if(charging) user << "There is already a cell in the charger!" return @@ -63,6 +66,9 @@ anchored = !anchored user << "You [anchored ? "attach" : "detach"] the cell charger [anchored ? "to" : "from"] the ground" playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) + else + return ..() + /obj/machinery/cell_charger/proc/removecell() charging.updateicon() diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index a6d8287c1db..3efd30fa8b8 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -249,22 +249,23 @@ if(exchange_parts(user, W)) return - default_deconstruction_crowbar(W) + if(default_deconstruction_crowbar(W)) + return - if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) - if (!src.check_access(W)) + if (W.GetID()) + if (!check_access(W)) user << "Access Denied." return - if ((!src.locked) || (isnull(src.occupant))) + if (!locked || !occupant) return - if ((src.occupant.health < -20) && (src.occupant.stat != 2)) - user << "Access Refused." + if (occupant.health < -20 && occupant.stat != DEAD) + user << "Access Refused. Patient status still unstable." return else - src.locked = 0 + locked = 0 user << "System unlocked." else - ..() + return ..() /obj/machinery/clonepod/emag_act(mob/user) if (isnull(src.occupant)) diff --git a/code/game/machinery/computer/aifixer.dm b/code/game/machinery/computer/aifixer.dm index 0ea426b4aee..69c53cf517b 100644 --- a/code/game/machinery/computer/aifixer.dm +++ b/code/game/machinery/computer/aifixer.dm @@ -14,9 +14,8 @@ user << "The screws on [name]'s screen won't budge." else user << "The screws on [name]'s screen won't budge and it emits a warning beep." - return else - ..() + return ..() /obj/machinery/computer/aifixer/attack_hand(mob/user) if(..()) diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index d976f97f7fd..df02f37b5cb 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -65,7 +65,7 @@ var/time_last_changed_position = 0 idcard.loc = src modify = idcard else - ..() + return ..() //Check if you can't open a new position for a certain job /obj/machinery/computer/card/proc/job_blacklisted(jobtitle) diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index 0d3b220a533..7bd87b7a574 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -74,18 +74,17 @@ return null /obj/machinery/computer/cloning/attackby(obj/item/W, mob/user, params) - if (istype(W, /obj/item/weapon/disk/data)) //INSERT SOME DISKETTES + if(istype(W, /obj/item/weapon/disk/data)) //INSERT SOME DISKETTES if (!src.diskette) if(!user.drop_item()) - return ..() + return W.loc = src src.diskette = W user << "You insert [W]." src.updateUsrDialog() return else - ..() - return + return ..() /obj/machinery/computer/cloning/attack_hand(mob/user) if(..()) diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 7f9d50fd667..e2a77542cee 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -325,8 +325,7 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12 if(istype(I, /obj/item/weapon/card/id)) attack_hand(user) else - ..() - return + return ..() /obj/machinery/computer/communications/emag_act(mob/user) if(!emagged) diff --git a/code/game/machinery/computer/dna_console.dm b/code/game/machinery/computer/dna_console.dm index c887b428be7..e2a29dfe536 100644 --- a/code/game/machinery/computer/dna_console.dm +++ b/code/game/machinery/computer/dna_console.dm @@ -49,8 +49,7 @@ src.updateUsrDialog() return else - ..() - return + return ..() /obj/machinery/computer/scan_consolenew/New() ..() diff --git a/code/game/machinery/computer/law.dm b/code/game/machinery/computer/law.dm index 58f61a090cd..292fc7163b6 100644 --- a/code/game/machinery/computer/law.dm +++ b/code/game/machinery/computer/law.dm @@ -23,7 +23,7 @@ return M.install(current.laws, user) else - ..() + return ..() /obj/machinery/computer/upload/proc/can_upload_to(mob/living/silicon/S) if(S.stat == DEAD || S.syndicate) diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index 2f9bfbbe42d..b3e94a26be5 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -28,7 +28,7 @@ scan = O user << "You insert [O]." else - ..() + return ..() /obj/machinery/computer/med_data/attack_hand(mob/user) if(..()) diff --git a/code/game/machinery/computer/message.dm b/code/game/machinery/computer/message.dm index a67091a4cad..cab29214d2e 100644 --- a/code/game/machinery/computer/message.dm +++ b/code/game/machinery/computer/message.dm @@ -34,8 +34,8 @@ if(istype(O, /obj/item/weapon/screwdriver) && emagged) //Stops people from just unscrewing the monitor and putting it back to get the console working again. user << "It is too hot to mess with!" - return - ..() + else + return ..() /obj/machinery/computer/message_monitor/emag_act(mob/user) if(!emagged) diff --git a/code/game/machinery/computer/prisoner.dm b/code/game/machinery/computer/prisoner.dm index f4dc2ace5de..ab5a89b97e9 100644 --- a/code/game/machinery/computer/prisoner.dm +++ b/code/game/machinery/computer/prisoner.dm @@ -23,7 +23,7 @@ dat += "
Unlock Console" else if(screen == 1) dat += "

Prisoner ID Management

" - if(istype(inserted_id)) + if(inserted_id) dat += text("[inserted_id]
") dat += text("Collected Points: [inserted_id.points]. Reset.
") dat += text("Card goal: [inserted_id.goal]. Set
") @@ -77,7 +77,8 @@ /obj/machinery/computer/prisoner/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/weapon/card/id)) return attack_hand(user) - ..() + else + return ..() /obj/machinery/computer/prisoner/process() if(!..()) @@ -92,7 +93,7 @@ usr.set_machine(src) if(href_list["id"]) - if(href_list["id"] =="insert" && !istype(inserted_id)) + if(href_list["id"] =="insert" && !inserted_id) var/obj/item/weapon/card/id/prisoner/I = usr.get_active_hand() if(istype(I)) if(!usr.drop_item()) @@ -100,7 +101,7 @@ I.loc = src inserted_id = I else usr << "No valid ID." - else if(istype(inserted_id)) + else if(inserted_id) switch(href_list["id"]) if("eject") inserted_id.loc = get_turf(src) diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 194c9b71f69..a1bf31d718e 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -25,14 +25,17 @@ /obj/machinery/computer/secure_data/attackby(obj/item/O, mob/user, params) - if(istype(O, /obj/item/weapon/card/id) && !scan) - if(!user.drop_item()) - return - O.loc = src - scan = O - user << "You insert [O]." + if(istype(O, /obj/item/weapon/card/id)) + if(!scan) + if(!user.drop_item()) + return + O.loc = src + scan = O + user << "You insert [O]." + else + user << "There's already an ID card in the console." else - ..() + return ..() //Someone needs to break down the dat += into chunks instead of long ass lines. /obj/machinery/computer/secure_data/attack_hand(mob/user) diff --git a/code/game/machinery/computer/telecrystalconsoles.dm b/code/game/machinery/computer/telecrystalconsoles.dm index f778b374959..67d4aebd8db 100644 --- a/code/game/machinery/computer/telecrystalconsoles.dm +++ b/code/game/machinery/computer/telecrystalconsoles.dm @@ -29,21 +29,20 @@ var/list/possible_uplinker_IDs = list("Alfa","Bravo","Charlie","Delta","Echo","F name = "[name] [rand(1,999)]" /obj/machinery/computer/telecrystals/uplinker/attackby(obj/item/O, mob/user, params) - if(istype(O, /obj/item)) - if(uplinkholder) - user << "The [src] already has an uplink in it." + if(uplinkholder) + user << "The [src] already has an uplink in it." + return + if(O.hidden_uplink) + var/obj/item/I = user.get_active_hand() + if(!user.drop_item()) return - if(O.hidden_uplink) - var/obj/item/I = user.get_active_hand() - if(!user.drop_item()) - return - uplinkholder = I - I.loc = src - I.add_fingerprint(user) - update_icon() - updateUsrDialog() - else - user << "The [O] doesn't appear to be an uplink..." + uplinkholder = I + I.loc = src + I.add_fingerprint(user) + update_icon() + updateUsrDialog() + else + user << "The [O] doesn't appear to be an uplink..." /obj/machinery/computer/telecrystals/uplinker/update_icon() ..() diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index b042ffea4ed..10ecad63863 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -21,14 +21,22 @@ var/debris_type -/obj/structure/barricade/proc/take_damage(damage, leave_debris=1, message) +/obj/structure/barricade/proc/take_damage(damage, damage_type = BRUTE, sound_effect = 1) + switch(damage_type) + if(BRUTE) + if(sound_effect) + if(damage) + playsound(loc, 'sound/weapons/smash.ogg', 50, 1) + else + playsound(loc, 'sound/weapons/tap.ogg', 50, 1) + if(BURN) + if(sound_effect) + playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) + else + damage = 0 health -= damage if(health <= 0) - if(message) - visible_message(message) - else - visible_message("\The [src] is smashed apart!") - if(leave_debris && debris_type) + if(debris_type) new debris_type(get_turf(src), 3) qdel(src) @@ -43,7 +51,7 @@ take_damage(M.melee_damage_upper) /obj/structure/barricade/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/weapon/weldingtool) && user.a_intent == "help" && material == METAL) + if(istype(I, /obj/item/weapon/weldingtool) && user.a_intent != "harm" && material == METAL) var/obj/item/weapon/weldingtool/WT = I if(health < maxhealth) if(WT.remove_fuel(0,user)) @@ -51,31 +59,28 @@ playsound(loc, 'sound/items/Welder.ogg', 40, 1) if(do_after(user, 40/I.toolspeed, target = src)) health = Clamp(health + 20, 0, maxhealth) - return - else - user.changeNext_move(CLICK_CD_MELEE) - visible_message("[user] hits [src] with [I]!", "You hit [src] with [I]!") - take_damage(I.force) - user.do_attack_animation(src) + return ..() -/obj/structure/barricade/bullet_act(var/obj/item/projectile/P) - if(P) - ..() - take_damage(P.damage*ranged_damage_modifier) - visible_message("\The [src] is hit by [P]!") + +/obj/structure/barricade/attacked_by(obj/item/I, mob/living/user) + ..() + take_damage(I.force) + +/obj/structure/barricade/bullet_act(obj/item/projectile/P) + . = ..() + visible_message("\The [src] is hit by [P]!") + take_damage(P.damage*ranged_damage_modifier) /obj/structure/barricade/ex_act(severity, target) switch(severity) if(1) - visible_message("\The [src] is blown apart!") qdel(src) if(2) - take_damage(25, message = "\The [src] is blown apart!") + take_damage(25, BRUTE, 0) /obj/structure/barricade/blob_act() - take_damage(25, leave_debris = 0, message = "The blob eats through \the [src]!") - + take_damage(25, BRUTE, 0) /obj/structure/barricade/CanPass(atom/movable/mover, turf/target, height=0)//So bullets will fly over and stuff. if(height==0) @@ -104,6 +109,7 @@ icon = 'icons/obj/structures.dmi' icon_state = "woodenbarricade" material = WOOD + debris_type = /obj/item/stack/sheet/mineral/wood /obj/structure/barricade/sandbags diff --git a/code/game/machinery/dna_scanner.dm b/code/game/machinery/dna_scanner.dm index 2651ed274ed..ed656b1a1df 100644 --- a/code/game/machinery/dna_scanner.dm +++ b/code/game/machinery/dna_scanner.dm @@ -159,9 +159,10 @@ return var/mob/M = G.affecting - M.loc = loc - user.stop_pulling() + M.forceMove(loc) qdel(G) + return + return ..() /obj/machinery/dna_scannernew/attack_hand(mob/user) if(..(user,1,0)) //don't set the machine, since there's no dialog diff --git a/code/game/machinery/doppler_array.dm b/code/game/machinery/doppler_array.dm index 5d3d10f28fc..ee6302f4fef 100644 --- a/code/game/machinery/doppler_array.dm +++ b/code/game/machinery/doppler_array.dm @@ -34,7 +34,7 @@ var/list/doppler_arrays = list() user << "You unfasten [src]." playsound(loc, 'sound/items/Ratchet.ogg', 50, 1) else - ..() + return ..() /obj/machinery/doppler_array/verb/rotate() set name = "Rotate Tachyon-doppler Dish" diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index 0f8ab19d8df..016b330c7d2 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -48,6 +48,7 @@ //Don't want to render prison breaks impossible /obj/machinery/flasher/attackby(obj/item/weapon/W, mob/user, params) + add_fingerprint(user) if (istype(W, /obj/item/weapon/wirecutters)) if (bulb) user.visible_message("[user] begins to disconnect [src]'s flashbulb.", "You begin to disconnect [src]'s flashbulb...") @@ -82,8 +83,8 @@ qdel(src) else user << "Remove a flashbulb from [src] first!" - - add_fingerprint(user) + else + return ..() //Let the AI trigger them directly. /obj/machinery/flasher/attack_ai() @@ -159,7 +160,7 @@ remove_from_proximity_list(src, range) else - ..() + return ..() /obj/item/wallframe/flasher diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm index 20c5308fe67..36034138b6f 100644 --- a/code/game/machinery/igniter.dm +++ b/code/game/machinery/igniter.dm @@ -79,8 +79,6 @@ // src.sd_SetLuminosity(0) /obj/machinery/sparker/attackby(obj/item/weapon/W, mob/user, params) - if(istype(W, /obj/item/device/detective_scanner)) - return if (istype(W, /obj/item/weapon/screwdriver)) add_fingerprint(user) src.disable = !src.disable @@ -93,6 +91,8 @@ icon_state = "[base_state]" else icon_state = "[base_state]-p" + else + return ..() /obj/machinery/sparker/attack_ai() if (anchored) diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm index 824d7e4fd5e..147c97324b7 100644 --- a/code/game/machinery/navbeacon.dm +++ b/code/game/machinery/navbeacon.dm @@ -97,7 +97,8 @@ updateDialog() else user << "You must open the cover first!" - return + else + return ..() /obj/machinery/navbeacon/attack_ai(mob/user) interact(user, 1) diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm index 64be7f512b5..713e8580cff 100644 --- a/code/game/machinery/pipe/pipe_dispenser.dm +++ b/code/game/machinery/pipe/pipe_dispenser.dm @@ -175,7 +175,7 @@ Nah return C.add_fingerprint(usr) - C.update() + C.update_icon() wait = 1 spawn(15) wait = 0 diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index 768f3cb6792..d015bb1a975 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -301,7 +301,7 @@ invisibility = 0 qdel(cover) //deletes the cover, and the turret instance itself becomes its own cover. - else if(istype(I, /obj/item/weapon/card/id)||istype(I, /obj/item/device/pda)) + else if(I.GetID()) //Behavior lock/unlock mangement if(allowed(user)) locked = !locked @@ -313,41 +313,12 @@ M.buffer = src user << "You add [src] to multitool buffer." else - //if the turret was attacked with the intention of harming it: - user.changeNext_move(CLICK_CD_MELEE) - take_damage(I.force * 0.5) - if(I.force * 0.5 > 1) //if the force of impact dealt at least 1 damage, the turret gets pissed off - if(!attacked && !emagged) - attacked = 1 - spawn() - sleep(60) - attacked = 0 - ..() + return ..() -/obj/machinery/porta_turret/attack_animal(mob/living/simple_animal/M) - M.changeNext_move(CLICK_CD_MELEE) - M.do_attack_animation(src) - if(M.melee_damage_upper == 0 || (M.melee_damage_type != BRUTE && M.melee_damage_type != BURN)) - return - if(!(stat & BROKEN)) - visible_message("[M] [M.attacktext] [src]!") - add_logs(M, src, "attacked") - take_damage(M.melee_damage_upper) - else - M << "That object is useless to you." - return - -/obj/machinery/porta_turret/attack_alien(mob/living/carbon/alien/humanoid/M) - M.changeNext_move(CLICK_CD_MELEE) - M.do_attack_animation(src) - if(!(stat & BROKEN)) - playsound(src.loc, 'sound/weapons/slash.ogg', 25, 1, -1) - visible_message("[M] has slashed at [src]!") - add_logs(M, src, "attacked") - take_damage(15) - else - M << "\green That object is useless to you." - return +/obj/machinery/porta_turret/attacked_by(obj/item/I, mob/user) + if(I.force) + user.visible_message("[user] has hit [src] with [I]!", "You hit [src] with [I]!") + take_damage(I.force * 0.5, I.damtype) /obj/machinery/porta_turret/emag_act(mob/user) @@ -361,37 +332,20 @@ sleep(60) //6 seconds for the traitor to gtfo of the area before the turret decides to ruin his shit on = 1 //turns it back on. The cover popUp() popDown() are automatically called in process(), no need to define it here -/obj/machinery/porta_turret/bullet_act(obj/item/projectile/Proj) - if(on) - if(!attacked && !emagged) - attacked = 1 - spawn() - sleep(60) - attacked = 0 - - var/damage_dealt = 0 - if((Proj.damage_type == BRUTE || Proj.damage_type == BURN)) - damage_dealt = Proj.damage - - ..() - - if(damage_dealt) - if(prob(45)) - spark_system.start() - take_damage(damage_dealt) - - if(lasercolor == "b" && disabled == 0) - if(istype(Proj, /obj/item/projectile/beam/lasertag/redtag)) - disabled = 1 - qdel(Proj) - sleep(100) - disabled = 0 - if(lasercolor == "r" && disabled == 0) - if(istype(Proj, /obj/item/projectile/beam/lasertag/bluetag)) - disabled = 1 - qdel(Proj) - sleep(100) - disabled = 0 +/obj/machinery/porta_turret/bullet_act(obj/item/projectile/P) + . = ..() + take_damage(P.damage, P.damage_type, 0) + if(!disabled) + if(lasercolor == "b") + if(istype(P, /obj/item/projectile/beam/lasertag/redtag)) + disabled = 1 + spawn(100) + disabled = 0 + else if(lasercolor == "r") + if(istype(P, /obj/item/projectile/beam/lasertag/bluetag)) + disabled = 1 + spawn(100) + disabled = 0 /obj/machinery/porta_turret/emp_act(severity) @@ -417,10 +371,30 @@ qdel(src) -/obj/machinery/porta_turret/proc/take_damage(damage) - health -= damage - if(health <= 0) - die() +/obj/machinery/porta_turret/take_damage(damage, damage_type = BRUTE, sound_effect = 1) + switch(damage_type) + if(BRUTE) + if(sound_effect) + if(damage) + playsound(loc, 'sound/weapons/smash.ogg', 50, 1) + else + playsound(loc, 'sound/weapons/tap.ogg', 50, 1) + if(BURN) + if(sound_effect) + playsound(loc, 'sound/items/Welder.ogg', 40, 1) + else + return + if(!(stat & BROKEN)) + if(damage > 1) //if the force of impact dealt at least 1 damage, the turret gets pissed off + if(prob(30)) + spark_system.start() + if(on && !attacked && !emagged) + attacked = 1 + spawn(60) + attacked = 0 + health -= damage + if(health <= 0) + die() /obj/machinery/porta_turret/proc/die() //called when the turret dies, ie, health <= 0 health = 0 @@ -606,7 +580,7 @@ if(!(faction in target.faction)) return 0 return 1 - + /obj/machinery/porta_turret/proc/target(atom/movable/target) if(disabled) return diff --git a/code/game/machinery/porta_turret/portable_turret_construct.dm b/code/game/machinery/porta_turret/portable_turret_construct.dm index 9cc8e06148e..4e92cf434d9 100644 --- a/code/game/machinery/porta_turret/portable_turret_construct.dm +++ b/code/game/machinery/porta_turret/portable_turret_construct.dm @@ -73,7 +73,7 @@ playsound(loc, pick('sound/items/Welder.ogg', 'sound/items/Welder2.ogg'), 50, 1) user << "You start to remove the turret's interior metal armor..." if(do_after(user, 20/I.toolspeed, target = src)) - if(!WT.isOn() || !WT.remove_fuel(5, user)) + if(!WT.isOn() || !WT.remove_fuel(5, user)) return build_step = PTURRET_BOLTED user << "You remove the turret's interior metal armor." @@ -136,7 +136,7 @@ if(PTURRET_START_EXTERNAL_ARMOUR) if(istype(I, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/WT = I - if(!WT.isOn()) + if(!WT.isOn()) return if(WT.get_fuel() < 5) user << "You need more fuel to complete this task!" @@ -174,7 +174,7 @@ finish_name = t return - ..() + return ..() /obj/machinery/porta_turret_construct/attack_hand(mob/user) diff --git a/code/game/machinery/porta_turret/portable_turret_cover.dm b/code/game/machinery/porta_turret/portable_turret_cover.dm index d96b9dce955..a65694405a7 100644 --- a/code/game/machinery/porta_turret/portable_turret_cover.dm +++ b/code/game/machinery/porta_turret/portable_turret_cover.dm @@ -35,7 +35,7 @@ /obj/machinery/porta_turret_cover/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/weapon/wrench) && !parent_turret.on) - if(parent_turret.raised) + if(parent_turret.raised) return if(!parent_turret.anchored) @@ -50,7 +50,7 @@ parent_turret.invisibility = 0 qdel(src) - else if(istype(I, /obj/item/weapon/card/id)||istype(I, /obj/item/device/pda)) + else if(I.GetID()) if(parent_turret.allowed(user)) parent_turret.locked = !parent_turret.locked user << "Controls are now [parent_turret.locked ? "locked" : "unlocked"]." @@ -62,17 +62,10 @@ M.buffer = parent_turret user << "You add [parent_turret] to multitool buffer." else - user.changeNext_move(CLICK_CD_MELEE) - parent_turret.health -= I.force * 0.5 - if(parent_turret.health <= 0) - parent_turret.die() - if(I.force * 0.5 > 2) - if(!parent_turret.attacked && !parent_turret.emagged) - parent_turret.attacked = 1 - spawn() - sleep(30) - parent_turret.attacked = 0 - ..() + return ..() + +/obj/machinery/porta_turret_cover/attacked_by(obj/item/I, mob/user) + parent_turret.attacked_by(I, user) /obj/machinery/porta_turret_cover/can_be_overridden() . = 0 @@ -83,5 +76,5 @@ visible_message("[parent_turret] hums oddly...") parent_turret.emagged = 1 parent_turret.on = 0 - sleep(40) - parent_turret.on = 1 + spawn(40) + parent_turret.on = 1 diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index f1d43782606..ae9a16c729d 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -79,7 +79,9 @@ if(default_pry_open(P)) return - default_deconstruction_crowbar(P) + if(default_deconstruction_crowbar(P)) + return + return ..() /obj/machinery/recharge_station/attack_hand(mob/user) if(..(user,1,set_machine = 0)) diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index 9ce80ec1848..542975781f3 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -62,10 +62,9 @@ var/const/SAFETY_COOLDOWN = 100 if(default_unfasten_wrench(user, I)) return - default_deconstruction_crowbar(I) - ..() - add_fingerprint(user) - return + if(default_deconstruction_crowbar(I)) + return + return ..() /obj/machinery/recycler/emag_act(mob/user) if(!emagged) diff --git a/code/game/machinery/robot_fabricator.dm b/code/game/machinery/robot_fabricator.dm index c0571ef5a20..eed9fd73a1f 100644 --- a/code/game/machinery/robot_fabricator.dm +++ b/code/game/machinery/robot_fabricator.dm @@ -33,6 +33,8 @@ updateDialog() else user << "\The [src] is full." + else + return ..() /obj/machinery/robotic_fabricator/power_change() if (powered()) diff --git a/code/game/machinery/slotmachine.dm b/code/game/machinery/slotmachine.dm index b5a6944e7d2..6322b95731d 100644 --- a/code/game/machinery/slotmachine.dm +++ b/code/game/machinery/slotmachine.dm @@ -49,6 +49,11 @@ coinvalues["[cointype]"] = C.value qdel(C) +/obj/machinery/computer/slot_machine/Destroy() + if(balance) + give_coins(balance) + return ..() + /obj/machinery/computer/slot_machine/process() . = ..() //Sanity checks. if(!.) @@ -91,11 +96,8 @@ user << "You insert a [C.cmineral] coin into [src]'s slot!" balance += C.value qdel(C) - - return - - else if(!balance) //to prevent coins from magically disappearing - ..() + else + return ..() /obj/machinery/computer/slot_machine/emag_act() if(!emagged) diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index abb4b814cc3..b164bc08c20 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -164,7 +164,7 @@ else if(exchange_parts(user, I) || default_deconstruction_crowbar(I)) return else - ..() + return ..() /obj/machinery/space_heater/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \ datum/tgui/master_ui = null, datum/ui_state/state = physical_state) diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index 85b03b73365..0ec0692b688 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -275,7 +275,7 @@ if(!user.drop_item()) return mask = I - else if(istype(I, /obj/item)) + else if(storage) user << "The auxiliary storage compartment is full!" return @@ -285,6 +285,8 @@ I.loc = src visible_message("[user] inserts [I] into [src]", "You load [I] into [src].") + update_icon() + return if(panel_open && is_wire_tool(I)) wires.interact(user) @@ -295,8 +297,7 @@ dump_contents() return - update_icon() - return + return ..() /obj/machinery/suit_storage_unit/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \ datum/tgui/master_ui = null, datum/ui_state/state = notcontained_state) diff --git a/code/game/machinery/syndicatebeacon.dm b/code/game/machinery/syndicatebeacon.dm index d8fce89f1ea..c0658a1fdc5 100644 --- a/code/game/machinery/syndicatebeacon.dm +++ b/code/game/machinery/syndicatebeacon.dm @@ -172,9 +172,8 @@ anchored = 1 user << "You screw the beacon to the floor and attach the cable." return - ..() - return - + else + return ..() /obj/machinery/power/singularity_beacon/Destroy() if(active) diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index a625b89489d..4f21655ab08 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -121,7 +121,7 @@ qdel(src) return else - ..() + return ..() /obj/machinery/syndicatebomb/attack_hand(mob/user) interact(user) diff --git a/code/game/machinery/telecomms/computers/logbrowser.dm b/code/game/machinery/telecomms/computers/logbrowser.dm index 6fe32ddae80..0485e45950e 100644 --- a/code/game/machinery/telecomms/computers/logbrowser.dm +++ b/code/game/machinery/telecomms/computers/logbrowser.dm @@ -221,6 +221,5 @@ return /obj/machinery/computer/telecomms/server/attackby() - ..() - src.updateUsrDialog() - return \ No newline at end of file + . = ..() + updateUsrDialog() diff --git a/code/game/machinery/telecomms/computers/telemonitor.dm b/code/game/machinery/telecomms/computers/telemonitor.dm index f76a0ca641b..f7ed78a1315 100644 --- a/code/game/machinery/telecomms/computers/telemonitor.dm +++ b/code/game/machinery/telecomms/computers/telemonitor.dm @@ -123,6 +123,5 @@ return /obj/machinery/computer/telecomms/monitor/attackby() - ..() - src.updateUsrDialog() - return \ No newline at end of file + . = ..() + updateUsrDialog() \ No newline at end of file diff --git a/code/game/machinery/telecomms/machine_interactions.dm b/code/game/machinery/telecomms/machine_interactions.dm index 64bcd14a150..fcc819ba72a 100644 --- a/code/game/machinery/telecomms/machine_interactions.dm +++ b/code/game/machinery/telecomms/machine_interactions.dm @@ -21,17 +21,19 @@ icon_open = "[initial(icon_state)]_o_off" if(default_deconstruction_screwdriver(user, icon_open, icon_closed, P)) - updateUsrDialog() return - if(exchange_parts(user, P)) + else if(exchange_parts(user, P)) return // Using a multitool lets you access the receiver's interface - if(istype(P, /obj/item/device/multitool)) + else if(istype(P, /obj/item/device/multitool)) attack_hand(user) - default_deconstruction_crowbar(P) + else if(default_deconstruction_crowbar(P)) + return + else + return ..() /obj/machinery/telecomms/attack_ai(mob/user) diff --git a/code/game/mecha/equipment/mecha_equipment.dm b/code/game/mecha/equipment/mecha_equipment.dm index 7422197d310..7971b6966ea 100644 --- a/code/game/mecha/equipment/mecha_equipment.dm +++ b/code/game/mecha/equipment/mecha_equipment.dm @@ -16,10 +16,6 @@ reliability = 1000 var/salvageable = 1 -/obj/item/mecha_parts/mecha_equipment/New() - ..() - return - /obj/item/mecha_parts/mecha_equipment/proc/update_chassis_page() if(chassis) send_byjax(chassis.occupant,"exosuit.browser","eq_list",chassis.get_equipment_list()) @@ -82,8 +78,8 @@ /obj/item/mecha_parts/mecha_equipment/proc/start_cooldown() set_ready_state(0) chassis.use_power(energy_drain) - sleep(equip_cooldown) - set_ready_state(1) + spawn(equip_cooldown) + set_ready_state(1) /obj/item/mecha_parts/mecha_equipment/proc/do_after_cooldown(atom/target) if(!chassis) diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index 4aafd8e23eb..c793887e424 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -62,8 +62,8 @@ /obj/item/mecha_parts/mecha_equipment/weapon/energy/start_cooldown() set_ready_state(0) chassis.use_power(energy_drain*get_shot_amount()) - sleep(equip_cooldown) - set_ready_state(1) + spawn(equip_cooldown) + set_ready_state(1) /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser equip_cooldown = 8 diff --git a/code/game/mecha/mech_bay.dm b/code/game/mecha/mech_bay.dm index 6a329d7dc02..0263310d9b0 100644 --- a/code/game/mecha/mech_bay.dm +++ b/code/game/mecha/mech_bay.dm @@ -73,7 +73,9 @@ if(exchange_parts(user, I)) return - default_deconstruction_crowbar(I) + if(default_deconstruction_crowbar(I)) + return + return ..() /obj/machinery/computer/mech_bay_power_console name = "mech bay power control console" diff --git a/code/game/mecha/mecha_parts.dm b/code/game/mecha/mecha_parts.dm index 3a61c4f108b..c14ddd5470c 100644 --- a/code/game/mecha/mecha_parts.dm +++ b/code/game/mecha/mecha_parts.dm @@ -17,8 +17,7 @@ /obj/item/mecha_parts/chassis/attackby(obj/item/W, mob/user, params) if(!construct || !construct.action(W, user)) - ..() - return + return ..() /obj/item/mecha_parts/chassis/attack_hand() return diff --git a/code/game/mecha/mecha_topic.dm b/code/game/mecha/mecha_topic.dm index 73fabdec133..a04693ce20f 100644 --- a/code/game/mecha/mecha_topic.dm +++ b/code/game/mecha/mecha_topic.dm @@ -130,7 +130,8 @@ . += {"
Equipment
" diff --git a/code/game/mecha/mecha_wreckage.dm b/code/game/mecha/mecha_wreckage.dm index 96504721e0c..f60b14f7202 100644 --- a/code/game/mecha/mecha_wreckage.dm +++ b/code/game/mecha/mecha_wreckage.dm @@ -34,7 +34,7 @@ else return - if(istype(I, /obj/item/weapon/wirecutters)) + else if(istype(I, /obj/item/weapon/wirecutters)) if(salvage_num <= 0) user << "You don't see anything that can be cut with [I]!" return @@ -47,7 +47,7 @@ else user << "You fail to salvage anything valuable from [src]!" - if(istype(I, /obj/item/weapon/crowbar)) + else if(istype(I, /obj/item/weapon/crowbar)) if(crowbar_salvage && crowbar_salvage.len) var/obj/S = pick(crowbar_salvage) if(S) @@ -59,7 +59,7 @@ user << "You don't see anything that can be pried with [I]!" else - ..() + return ..() /obj/structure/mecha_wreckage/gygax diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index 1dfd4add2f0..548ade544e2 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -18,9 +18,10 @@ /obj/effect/decal/cleanable/proc/replace_decal(obj/effect/decal/cleanable/C) qdel(C) -/obj/effect/decal/cleanable/attackby(obj/item/weapon/W, mob/user,) +/obj/effect/decal/cleanable/attackby(obj/item/weapon/W, mob/user, params) if(istype(W, /obj/item/weapon/reagent_containers/glass) || istype(W, /obj/item/weapon/reagent_containers/food/drinks)) if(src.reagents && W.reagents) + . = 1 //so the containers don't splash their content on the src while scooping. if(!src.reagents.total_volume) user << "[src] isn't thick enough to scoop up!" return @@ -33,7 +34,8 @@ qdel(src) return if(W.is_hot()) //todo: make heating a reagent holder proc - if(istype(W, /obj/item/clothing/mask/cigarette)) return + if(istype(W, /obj/item/clothing/mask/cigarette)) + return else var/hotness = W.is_hot() var/added_heat = (hotness / 100) diff --git a/code/game/objects/effects/effect_system/effects_foam.dm b/code/game/objects/effects/effect_system/effects_foam.dm index 435a07bdbc8..4441b6fe219 100644 --- a/code/game/objects/effects/effect_system/effects_foam.dm +++ b/code/game/objects/effects/effect_system/effects_foam.dm @@ -226,17 +226,15 @@ /obj/structure/foamedmetal/attack_animal(mob/living/simple_animal/user) user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src) + playsound(src.loc, 'sound/weapons/tap.ogg', 100, 1) if(user.environment_smash >= 1) user.do_attack_animation(src) user << "You smash apart the foam wall." qdel(src) - return - /obj/structure/foamedmetal/attack_hulk(mob/living/carbon/human/user) ..(user, 1) - user.changeNext_move(CLICK_CD_MELEE) - user.do_attack_animation(src) + playsound(src.loc, 'sound/weapons/tap.ogg', 100, 1) if(prob(75 - metal*25)) user.visible_message("[user] smashes through the foamed metal!", \ "You smash through the metal foam wall!") @@ -246,6 +244,7 @@ /obj/structure/foamedmetal/attack_alien(mob/living/carbon/alien/humanoid/user) user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src) + playsound(src.loc, 'sound/weapons/tap.ogg', 100, 1) if(prob(75 - metal*25)) user.visible_message("[user] smashes through the foamed metal!", \ "You smash through the metal foam wall!") @@ -254,6 +253,7 @@ /obj/structure/foamedmetal/attack_slime(mob/living/simple_animal/slime/user) user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src) + playsound(src.loc, 'sound/weapons/tap.ogg', 100, 1) if(!user.is_adult) attack_hand(user) return @@ -266,12 +266,11 @@ user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src) user << "You hit the metal foam but bounce off it!" + playsound(src.loc, 'sound/weapons/tap.ogg', 100, 1) -/obj/structure/foamedmetal/attackby(obj/item/I, mob/user, params) - user.changeNext_move(CLICK_CD_MELEE) - user.do_attack_animation(src) - +/obj/structure/foamedmetal/attacked_by(obj/item/I, mob/living/user) + playsound(src.loc, 'sound/weapons/tap.ogg', 100, 1) //the item attack sound is muffled by the foam. if(prob(I.force*20 - metal*25)) user.visible_message("[user] smashes through the foamed metal!", \ "You smash through the foamed metal with \the [I]!") @@ -279,7 +278,6 @@ else user << "You hit the metal foam to no effect!" - /obj/structure/foamedmetal/CanPass(atom/movable/mover, turf/target, height=1.5) return !density diff --git a/code/game/objects/effects/glowshroom.dm b/code/game/objects/effects/glowshroom.dm index 2496b1eb842..47dabfaf579 100644 --- a/code/game/objects/effects/glowshroom.dm +++ b/code/game/objects/effects/glowshroom.dm @@ -117,10 +117,11 @@ obj/effect/glowshroom/glowcap floor = 1 return 1 -/obj/effect/glowshroom/attackby(obj/item/weapon/W, mob/user, params) +/obj/effect/glowshroom/attacked_by(obj/item/I, mob/user) ..() - endurance -= W.force - CheckEndurance() + if(I.damtype != STAMINA) + endurance -= I.force + CheckEndurance() /obj/effect/glowshroom/ex_act(severity, target) switch(severity) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index f634e1eca8b..c879b65c341 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -80,18 +80,6 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s var/embedded_unsafe_removal_pain_multiplier = EMBEDDED_UNSAFE_REMOVAL_PAIN_MULTIPLIER //The coefficient of multiplication for the damage removing this without surgery causes (this*w_class) var/embedded_unsafe_removal_time = EMBEDDED_UNSAFE_REMOVAL_TIME //A time in ticks, multiplied by the w_class. - var/list/can_be_placed_into = list( - /obj/structure/table, - /obj/structure/rack, - /obj/structure/closet, - /obj/item/weapon/storage, - /obj/structure/safe, - /obj/machinery/disposal, - /obj/machinery/r_n_d/destructive_analyzer, - /obj/machinery/r_n_d/experimentor, - /obj/machinery/autolathe - ) - var/flags_cover = 0 //for flags such as GLASSESCOVERSEYES var/heat = 0 var/sharpness = IS_BLUNT @@ -120,7 +108,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s ) /obj/item/proc/check_allowed_items(atom/target, not_inside, target_self) - if(((src in target) && !target_self) || ((!istype(target.loc, /turf)) && (!istype(target, /turf)) && (not_inside)) || is_type_in_list(target, can_be_placed_into)) + if(((src in target) && !target_self) || (!istype(target.loc, /turf) && !istype(target, /turf) && not_inside)) return 0 else return 1 @@ -353,7 +341,6 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s else if(S.can_be_inserted(src)) S.handle_item_insertion(src) - return // afterattack() and attack() prototypes moved to _onclick/item_attack.dm for consistency diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 169ba35943d..1e22c43a028 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -113,15 +113,16 @@ overlays += image('icons/obj/crayons.dmi',crayon.colourName) /obj/item/weapon/storage/crayons/attackby(obj/item/W, mob/user, params) - if(istype(W,/obj/item/toy/crayon)) - switch(W:colourName) + if(istype(W, /obj/item/toy/crayon)) + var/obj/item/toy/crayon/C = W + switch(C.colourName) if("mime") usr << "This crayon is too sad to be contained in this box." return if("rainbow") usr << "This crayon is too powerful to be contained in this box." return - ..() + return ..() //Spraycan stuff diff --git a/code/game/objects/items/devices/camera_bug.dm b/code/game/objects/items/devices/camera_bug.dm index 24c0776d2b1..4e9ecaf30e3 100644 --- a/code/game/objects/items/devices/camera_bug.dm +++ b/code/game/objects/items/devices/camera_bug.dm @@ -15,6 +15,7 @@ throw_speed = 4 throw_range = 20 origin_tech = "syndicate=3;engineering=1" + flags = NOBLUDGEON var/obj/machinery/camera/current = null diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm index 386de841e52..0bb1e20fe62 100644 --- a/code/game/objects/items/devices/chameleonproj.dm +++ b/code/game/objects/items/devices/chameleonproj.dm @@ -1,7 +1,7 @@ /obj/item/device/chameleon name = "chameleon-projector" icon_state = "shield0" - flags = CONDUCT + flags = CONDUCT | NOBLUDGEON slot_flags = SLOT_BELT item_state = "electronic" throwforce = 5 diff --git a/code/game/objects/items/devices/doorCharge.dm b/code/game/objects/items/devices/doorCharge.dm index 9b0734a61d1..972c33becde 100644 --- a/code/game/objects/items/devices/doorCharge.dm +++ b/code/game/objects/items/devices/doorCharge.dm @@ -6,6 +6,7 @@ w_class = 2 throw_range = 4 throw_speed = 1 + flags = NOBLUDGEON force = 3 attack_verb = list("blown up", "exploded", "detonated") materials = list(MAT_METAL=50, MAT_GLASS=30) diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 94a556d9b2e..64daae6779c 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -312,17 +312,20 @@ obj/item/device/flashlight/lamp/bananalamp ..() return -/obj/item/device/flashlight/emp/afterattack(atom/A as mob|obj, mob/user, proximity) - if(!proximity) return - if(istype(A, /obj/item/weapon/storage/) && A.loc == user) +/obj/item/device/flashlight/emp/afterattack(atom/movable/A, mob/user, proximity) + if(!proximity) return - if (emp_cur_charges > 0) + + if(emp_cur_charges > 0) emp_cur_charges -= 1 - A.visible_message("[user] blinks \the [src] at \the [A].", \ - "[user] blinks \the [src] at \the [A].") + if(ismob(A)) var/mob/M = A add_logs(user, M, "attacked", "EMP-light") + M.visible_message("[user] blinks \the [src] at \the [A].", \ + "[user] blinks \the [src] at you.") + else + A.visible_message("[user] blinks \the [src] at \the [A].") user << "\The [src] now has [emp_cur_charges] charge\s." A.emp_act(1) else diff --git a/code/game/objects/items/devices/geiger_counter.dm b/code/game/objects/items/devices/geiger_counter.dm index 6a2a1834e50..8529311217c 100644 --- a/code/game/objects/items/devices/geiger_counter.dm +++ b/code/game/objects/items/devices/geiger_counter.dm @@ -130,7 +130,8 @@ radiation_count = 0 update_icon() return 1 - ..() + else + return ..() /obj/item/device/geiger_counter/AltClick(mob/living/user) if(!istype(user) || user.incapacitated()) diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm index 4b448e2c61d..8fe3d517560 100644 --- a/code/game/objects/items/devices/lightreplacer.dm +++ b/code/game/objects/items/devices/lightreplacer.dm @@ -130,15 +130,7 @@ Emag() /obj/item/device/lightreplacer/attack_self(mob/user) - /* // This would probably be a bit OP. If you want it though, uncomment the code. - if(isrobot(user)) - var/mob/living/silicon/robot/R = user - if(R.emagged) - src.Emag() - usr << "You shortcircuit the [src]." - return - */ - usr << "It has [uses] lights remaining." + user << "It has [uses] lights remaining." /obj/item/device/lightreplacer/update_icon() icon_state = "lightreplacer[emagged]" diff --git a/code/game/objects/items/devices/pipe_painter.dm b/code/game/objects/items/devices/pipe_painter.dm index a90c1a7d753..02684707e88 100644 --- a/code/game/objects/items/devices/pipe_painter.dm +++ b/code/game/objects/items/devices/pipe_painter.dm @@ -4,6 +4,7 @@ icon = 'icons/obj/bureaucracy.dmi' icon_state = "labeler1" item_state = "flight" + flags = NOBLUDGEON var/list/modes = list( "grey" = rgb(255,255,255), "red" = rgb(255,0,0), @@ -19,10 +20,10 @@ /obj/item/device/pipe_painter/afterattack(atom/A, mob/user, proximity_flag) //Make sure we only paint adjacent items - if(proximity_flag!= 1) + if(!proximity_flag) return - if(!istype(A,/obj/machinery/atmospherics/pipe/simple) && !istype(A,/obj/machinery/atmospherics/pipe/manifold) && !istype(A,/obj/machinery/atmospherics/pipe/manifold4w)) + if(!istype(A,/obj/machinery/atmospherics/pipe)) return var/obj/machinery/atmospherics/pipe/P = A diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm index 7f947216de2..bf0ccfde494 100644 --- a/code/game/objects/items/devices/powersink.dm +++ b/code/game/objects/items/devices/powersink.dm @@ -77,7 +77,7 @@ "You detach \the [src] from the cable.", "You hear some wires being disconnected from something.") else - ..() + return ..() /obj/item/device/powersink/attack_paw() return diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm index a47e980cc72..caf6e0ba55c 100644 --- a/code/game/objects/items/devices/radio/electropack.dm +++ b/code/game/objects/items/devices/radio/electropack.dm @@ -35,7 +35,6 @@ ..() /obj/item/device/electropack/attackby(obj/item/weapon/W, mob/user, params) - ..() if(istype(W, /obj/item/clothing/head/helmet)) var/obj/item/assembly/shock_kit/A = new /obj/item/assembly/shock_kit( user ) A.icon = 'icons/obj/assemblies.dmi' @@ -56,6 +55,8 @@ A.add_fingerprint(user) if(src.flags & NODROP) A.flags |= NODROP + else + return ..() /obj/item/device/electropack/Topic(href, href_list) //..() diff --git a/code/game/objects/items/devices/radio/encryptionkey.dm b/code/game/objects/items/devices/radio/encryptionkey.dm index 922cfc3740c..a1380e000e1 100644 --- a/code/game/objects/items/devices/radio/encryptionkey.dm +++ b/code/game/objects/items/devices/radio/encryptionkey.dm @@ -11,11 +11,6 @@ var/centcom = 0 var/list/channels = list() - -/obj/item/device/encryptionkey/New() - -/obj/item/device/encryptionkey/attackby(obj/item/weapon/W, mob/user, params) - /obj/item/device/encryptionkey/syndicate icon_state = "cypherkey" channels = list("Syndicate" = 1) diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index ebf159d30d3..6aab3afeea2 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -218,10 +218,7 @@ return ..(freq, level, 1) /obj/item/device/radio/headset/attackby(obj/item/weapon/W, mob/user, params) -// ..() user.set_machine(src) - if (!( istype(W, /obj/item/weapon/screwdriver) || (istype(W, /obj/item/device/encryptionkey/ )))) - return if(istype(W, /obj/item/weapon/screwdriver)) if(keyslot || keyslot2) @@ -252,7 +249,7 @@ else user << "This headset doesn't have any unique encryption keys! How useless..." - if(istype(W, /obj/item/device/encryptionkey/)) + else if(istype(W, /obj/item/device/encryptionkey/)) if(keyslot && keyslot2) user << "The headset can't hold another key!" return @@ -271,8 +268,8 @@ recalculateChannels() - - return + else + return ..() /obj/item/device/radio/headset/recalculateChannels() diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index bf69eb8bada..e1ee871146f 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -504,14 +504,15 @@ user << "[name] can not be modified or attached." /obj/item/device/radio/attackby(obj/item/weapon/W, mob/user, params) - ..() + add_fingerprint(user) if(istype(W, /obj/item/weapon/screwdriver)) b_stat = !b_stat if(b_stat) user << "The radio can now be attached and modified!" else user << "The radio can no longer be modified or attached!" - add_fingerprint(user) + else + return ..() /obj/item/device/radio/emp_act(severity) emped++ //There's been an EMP; better count it @@ -548,8 +549,6 @@ set_frequency(SYND_FREQ) /obj/item/device/radio/borg/attackby(obj/item/weapon/W, mob/user, params) - if (!( istype(W, /obj/item/weapon/screwdriver) || (istype(W, /obj/item/device/encryptionkey/ )))) - return if(istype(W, /obj/item/weapon/screwdriver)) if(keyslot) @@ -570,7 +569,7 @@ else user << "This radio doesn't have any encryption keys!" - if(istype(W, /obj/item/device/encryptionkey/)) + else if(istype(W, /obj/item/device/encryptionkey/)) if(keyslot) user << "The radio can't hold another key!" return @@ -583,7 +582,6 @@ recalculateChannels() - return /obj/item/device/radio/off // Station bounced radios, their only difference is spawning with the speakers off, this was made to help the lag. listening = 0 // And it's nice to have a subtype too for future features. diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 7099ecfa557..90ffa647c49 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -71,7 +71,7 @@ MASS SPECTROMETER icon_state = "health" item_state = "analyzer" desc = "A hand-held body scanner able to distinguish vital signs of the subject." - flags = CONDUCT + flags = CONDUCT | NOBLUDGEON slot_flags = SLOT_BELT throwforce = 3 w_class = 1 @@ -89,7 +89,7 @@ MASS SPECTROMETER else user << "You switch the health analyzer to check physical health." scanchems = 0 - return + /obj/item/device/healthanalyzer/attack(mob/living/M, mob/living/carbon/human/user) // Clumsiness/brain damage check @@ -109,8 +109,8 @@ MASS SPECTROMETER else chemscan(user, M) - src.add_fingerprint(user) - return + add_fingerprint(user) + // Used by the PDA medical scanner too /proc/healthscan(mob/living/user, mob/living/M, mode = 1) @@ -241,7 +241,7 @@ MASS SPECTROMETER icon_state = "atmos" item_state = "analyzer" w_class = 2 - flags = CONDUCT + flags = CONDUCT | NOBLUDGEON slot_flags = SLOT_BELT throwforce = 0 throw_speed = 3 diff --git a/code/game/objects/items/nuke_tools.dm b/code/game/objects/items/nuke_tools.dm index dc36d390d6c..97745bbc9c3 100644 --- a/code/game/objects/items/nuke_tools.dm +++ b/code/game/objects/items/nuke_tools.dm @@ -17,7 +17,7 @@ if(istype(container)) container.load(src, user) else - ..() + return ..() /obj/item/nuke_core/process() if(cooldown < world.time - 60) @@ -57,7 +57,7 @@ else load(core, user) else - ..() + return ..() //snowflake screwdriver, works as a key to start nuke theft, traitor only /obj/item/weapon/screwdriver/nuke diff --git a/code/game/objects/items/shooting_range.dm b/code/game/objects/items/shooting_range.dm index 25494f1e90a..f335b7420b7 100644 --- a/code/game/objects/items/shooting_range.dm +++ b/code/game/objects/items/shooting_range.dm @@ -30,7 +30,9 @@ var/obj/item/weapon/weldingtool/WT = W if(WT.remove_fuel(0, user)) removeOverlays() - usr << "You slice off [src]'s uneven chunks of aluminium and scorch marks." + user << "You slice off [src]'s uneven chunks of aluminium and scorch marks." + else + return ..() /obj/item/target/attack_hand(mob/user) if(pinnedLoc) diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm index c45e9d5a66c..b88420836fd 100644 --- a/code/game/objects/items/stacks/rods.dm +++ b/code/game/objects/items/stacks/rods.dm @@ -53,9 +53,8 @@ var/global/list/datum/stack_recipe/rod_recipes = list ( \ R.use(2) if (!R && replace) user.put_in_hands(new_item) - return - if(istype(W,/obj/item/weapon/reagent_containers/food/snacks)) + else if(istype(W,/obj/item/weapon/reagent_containers/food/snacks)) var/obj/item/weapon/reagent_containers/food/snacks/S = W if(amount != 1) user << "You must use a single rod!" @@ -64,8 +63,8 @@ var/global/list/datum/stack_recipe/rod_recipes = list ( \ else var/obj/item/weapon/reagent_containers/food/snacks/customizable/A = new/obj/item/weapon/reagent_containers/food/snacks/customizable/kebab(get_turf(src)) A.initialize_custom_food(src, S, user) - return - ..() + else + return ..() /obj/item/stack/rods/cyborg/ materials = list() diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index 51ecb4ad1fc..817cc5b22cf 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -28,7 +28,6 @@ construct_window(user) /obj/item/stack/sheet/glass/attackby(obj/item/W, mob/user, params) - ..() add_fingerprint(user) if(istype(W, /obj/item/stack/cable_coil)) var/obj/item/stack/cable_coil/CC = W @@ -337,10 +336,11 @@ continue if(G.amount >= G.max_amount) continue - G.attackby(NG, user) + G.attackby(G, user) user << "You add the newly-formed glass to the stack. It now contains [NG.amount] sheet\s." qdel(src) - ..() + else + return ..() /obj/item/weapon/shard/Crossed(mob/AM) if(istype(AM) && has_gravity(loc)) diff --git a/code/game/objects/items/stacks/sheets/leather.dm b/code/game/objects/items/stacks/sheets/leather.dm index 264a710f3e0..9c166498eac 100644 --- a/code/game/objects/items/stacks/sheets/leather.dm +++ b/code/game/objects/items/stacks/sheets/leather.dm @@ -148,7 +148,7 @@ var/global/list/datum/stack_recipe/xeno_recipes = list ( \ HS.amount = 1 use(1) else - ..() + return ..() //Step two - washing..... it's actually in washing machine code. diff --git a/code/game/objects/items/stacks/sheets/light.dm b/code/game/objects/items/stacks/sheets/light.dm index bcb0bae0c72..bddd8c2f251 100644 --- a/code/game/objects/items/stacks/sheets/light.dm +++ b/code/game/objects/items/stacks/sheets/light.dm @@ -13,7 +13,7 @@ max_amount = 60 /obj/item/stack/light_w/attackby(obj/item/O, mob/user, params) - ..() + if(istype(O,/obj/item/weapon/wirecutters)) var/obj/item/stack/cable_coil/CC = new (user.loc) CC.amount = 5 @@ -25,7 +25,7 @@ user.unEquip(src, 1) qdel(src) - if(istype(O, /obj/item/stack/sheet/metal)) + else if(istype(O, /obj/item/stack/sheet/metal)) var/obj/item/stack/sheet/metal/M = O if (M.use(1)) use(1) @@ -34,4 +34,5 @@ L.add_fingerprint(user) else user << "You need one metal sheet to finish the light tile!" - return + else + return ..() diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index e48f7237cbe..ccdcdef0e23 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -171,7 +171,7 @@ var/global/list/datum/stack_recipe/plasma_recipes = list ( \ log_game("Plasma sheets ignited by [key_name(user)] in ([x],[y],[z])") fire_act() else - ..() + return ..() /obj/item/stack/sheet/mineral/plasma/fire_act() atmos_spawn_air("plasma=[amount*10];TEMP=1000") diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 5cc88a696bb..b4e7b5dd5ef 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -243,7 +243,7 @@ merge(S) user << "Your [S.name] stack now contains [S.get_amount()] [S.singular_name]\s." else - ..() + return ..() /obj/item/stack/proc/copy_evidences(obj/item/stack/from as obj) src.blood_DNA = from.blood_DNA diff --git a/code/game/objects/items/stacks/tiles/light.dm b/code/game/objects/items/stacks/tiles/light.dm index 1c8d1f62206..1f585f3eecc 100644 --- a/code/game/objects/items/stacks/tiles/light.dm +++ b/code/game/objects/items/stacks/tiles/light.dm @@ -20,11 +20,12 @@ state = 0 //fine /obj/item/stack/tile/light/attackby(obj/item/O, mob/user, params) - ..() if(istype(O,/obj/item/weapon/crowbar)) new/obj/item/stack/sheet/metal(user.loc) amount-- new/obj/item/stack/light_w(user.loc) if(amount <= 0) user.unEquip(src, 1) - qdel(src) \ No newline at end of file + qdel(src) + else + return ..() \ No newline at end of file diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index 184802b3306..ecc374c9e97 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -58,9 +58,8 @@ R.use(4) if (!R && replace) user.put_in_hands(new_item) - return else - ..() + return ..() //Grass /obj/item/stack/tile/grass diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm index f936feb025c..e515882d11d 100644 --- a/code/game/objects/items/weapons/RCD.dm +++ b/code/game/objects/items/weapons/RCD.dm @@ -12,8 +12,8 @@ RCD opacity = 0 density = 0 anchored = 0 - flags = CONDUCT - force = 10 + flags = CONDUCT | NOBLUDGEON + force = 0 throwforce = 10 throw_speed = 3 throw_range = 5 @@ -225,7 +225,6 @@ RCD return ..() /obj/item/weapon/rcd/attackby(obj/item/weapon/W, mob/user, params) - ..() if(isrobot(user)) //Make sure cyborgs can't load their RCDs return var/loaded = 0 @@ -247,7 +246,8 @@ RCD if(loaded) user << "The RCD now holds [matter]/[max_matter] matter-units." desc = "A RCD. It currently holds [matter]/[max_matter] matter-units." - return + else + return ..() /obj/item/weapon/rcd/proc/loadwithsheets(obj/item/stack/sheet/S, value, mob/user) var/maxsheets = round((max_matter-matter)/value) //calculate the max number of sheets that will fit in RCD diff --git a/code/game/objects/items/weapons/RPD.dm b/code/game/objects/items/weapons/RPD.dm index 65cb7d6984b..f1908a99533 100644 --- a/code/game/objects/items/weapons/RPD.dm +++ b/code/game/objects/items/weapons/RPD.dm @@ -125,7 +125,7 @@ var/global/list/RPD_recipes=list( desc = "A device used to rapidly pipe things." icon = 'icons/obj/items.dmi' icon_state = "rpd" - flags = CONDUCT + flags = CONDUCT //phil235 SEMIBLUDGEON? force = 10 throwforce = 10 throw_speed = 1 @@ -605,7 +605,7 @@ var/global/list/RPD_recipes=list( activate() C.add_fingerprint(usr) - C.update() + C.update_icon() return 1 return 0 else diff --git a/code/game/objects/items/weapons/airlock_painter.dm b/code/game/objects/items/weapons/airlock_painter.dm index 6ad8487da98..abdc6c16e78 100644 --- a/code/game/objects/items/weapons/airlock_painter.dm +++ b/code/game/objects/items/weapons/airlock_painter.dm @@ -10,7 +10,7 @@ materials = list(MAT_METAL=50, MAT_GLASS=50) origin_tech = "engineering=1" - flags = CONDUCT + flags = CONDUCT | NOBLUDGEON slot_flags = SLOT_BELT var/obj/item/device/toner/ink = null @@ -82,7 +82,7 @@ user.reagents.add_reagent("colorful_reagent", 1) user.reagents.reaction(user, TOUCH, 1) return TOXLOSS - + else user.visible_message("[user] is trying to inhale toner from \the [name]! It might be a suicide attempt if \the [name] had any toner.") return SHAME @@ -104,7 +104,6 @@ /obj/item/weapon/airlock_painter/attackby(obj/item/weapon/W, mob/user, params) - ..() if(istype(W, /obj/item/device/toner)) if(ink) user << "\the [name] already contains \a [ink]." @@ -115,7 +114,8 @@ user << "You install \the [W] into \the [name]." ink = W playsound(src.loc, 'sound/machines/click.ogg', 50, 1) - + else + return ..() /obj/item/weapon/airlock_painter/attack_self(mob/user) if(ink) diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm index 63275de71a5..c30ba3942a4 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/cards_ids.dm @@ -17,7 +17,7 @@ icon = 'icons/obj/card.dmi' w_class = 1 - var/list/files = list( ) + var/list/files = list() /obj/item/weapon/card/data name = "data disk" @@ -76,11 +76,10 @@ desc = "A card used to provide ID and determine access across the station." icon_state = "id" item_state = "card-id" + slot_flags = SLOT_ID var/mining_points = 0 //For redeeming at mining equipment vendors var/list/access = list() var/registered_name = null // The name registered_name on the card - slot_flags = SLOT_ID - var/assignment = null var/dorm = 0 // determines if this ID has claimed a dorm already diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index 644bc612139..d8cd87d804b 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -126,13 +126,12 @@ CIGARETTE PACKETS ARE IN FANCY.DM reagents.add_reagent("nicotine", 15) /obj/item/clothing/mask/cigarette/attackby(obj/item/weapon/W, mob/user, params) - ..() if(!lit && smoketime > 0 && W.is_hot()) var/lighting_text = is_lighter(W,user) if(lighting_text) light(lighting_text) - return - return + else + return ..() /obj/item/clothing/mask/cigarette/afterattack(obj/item/weapon/reagent_containers/glass/glass, mob/user, proximity) if(!proximity || lit) //can't dip if cigarette is lit (it will heat the reagents in the glass instead) @@ -418,9 +417,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM else user << "There is nothing to smoke!" else - user << "You can't put that in the pipe!" - ..() - + return ..() /obj/item/clothing/mask/cigarette/pipe/attack_self(mob/user) var/turf/location = get_turf(user) @@ -516,8 +513,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM return /obj/item/weapon/lighter/attack(mob/living/carbon/M, mob/living/carbon/user) - if(!isliving(M)) - return if(lit) M.IgniteMob() var/obj/item/clothing/mask/cigarette/cig = help_light_cig(M,user) diff --git a/code/game/objects/items/weapons/clown_items.dm b/code/game/objects/items/weapons/clown_items.dm index 6b1e73c8c7c..4912b1e5854 100644 --- a/code/game/objects/items/weapons/clown_items.dm +++ b/code/game/objects/items/weapons/clown_items.dm @@ -16,6 +16,7 @@ icon = 'icons/obj/items.dmi' icon_state = "soap" w_class = 1 + flags = NOBLUDGEON throwforce = 0 throw_speed = 3 throw_range = 7 diff --git a/code/game/objects/items/weapons/courtroom.dm b/code/game/objects/items/weapons/courtroom.dm index 38cb97fc2ac..403dfebb49e 100644 --- a/code/game/objects/items/weapons/courtroom.dm +++ b/code/game/objects/items/weapons/courtroom.dm @@ -34,4 +34,4 @@ user.visible_message("[user] strikes \the [src] with \the [I].") user.changeNext_move(CLICK_CD_MELEE) else - return \ No newline at end of file + return ..() \ No newline at end of file diff --git a/code/game/objects/items/weapons/defib.dm b/code/game/objects/items/weapons/defib.dm index 41aba0f01c7..bc8aec98766 100644 --- a/code/game/objects/items/weapons/defib.dm +++ b/code/game/objects/items/weapons/defib.dm @@ -112,7 +112,7 @@ if(W == paddles) paddles.unwield() toggle_paddles() - if(istype(W, /obj/item/weapon/stock_parts/cell)) + else if(istype(W, /obj/item/weapon/stock_parts/cell)) var/obj/item/weapon/stock_parts/cell/C = W if(bcell) user << "[src] already has a cell." @@ -125,16 +125,17 @@ W.loc = src bcell = W user << "You install a cell in [src]." + update_icon() - if(istype(W, /obj/item/weapon/screwdriver)) + else if(istype(W, /obj/item/weapon/screwdriver)) if(bcell) bcell.updateicon() bcell.loc = get_turf(src.loc) bcell = null user << "You remove the cell from [src]." - - update_icon() - return + update_icon() + else + return ..() /obj/item/weapon/defibrillator/emag_act(mob/user) if(safety) diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm index 219a6ca3e94..8dee2b940c6 100644 --- a/code/game/objects/items/weapons/explosives.dm +++ b/code/game/objects/items/weapons/explosives.dm @@ -57,7 +57,7 @@ else if(is_wire_tool(I)) wires.interact(user) else - ..() + return ..() /obj/item/weapon/c4/attack_self(mob/user) var/newtime = input(usr, "Please set the timer.", "Timer", 10) as num diff --git a/code/game/objects/items/weapons/extinguisher.dm b/code/game/objects/items/weapons/extinguisher.dm index ebc4bbfbc44..444c26973fe 100644 --- a/code/game/objects/items/weapons/extinguisher.dm +++ b/code/game/objects/items/weapons/extinguisher.dm @@ -36,6 +36,7 @@ sprite_name = "miniFE" /obj/item/weapon/extinguisher/New() + ..() create_reagents(max_water) reagents.add_reagent("water", max_water) @@ -51,7 +52,7 @@ // If we're in help intent, don't bash anyone with the // extinguisher user.visible_message("[user] targets [M] with \the [src]", "You target [M] with \the [src].") - return 1 + return 0 else return ..() @@ -103,9 +104,9 @@ var/direction = get_dir(src,target) - if(usr.buckled && isobj(usr.buckled) && !usr.buckled.anchored) + if(user.buckled && isobj(user.buckled) && !user.buckled.anchored) spawn(0) - var/obj/B = usr.buckled + var/obj/B = user.buckled var/movementdirection = turn(direction,180) step(B, movementdirection) sleep(1) diff --git a/code/game/objects/items/weapons/flamethrower.dm b/code/game/objects/items/weapons/flamethrower.dm index c45029b9804..d9cbf5a9273 100644 --- a/code/game/objects/items/weapons/flamethrower.dm +++ b/code/game/objects/items/weapons/flamethrower.dm @@ -70,8 +70,6 @@ flame_turf(turflist) /obj/item/weapon/flamethrower/attackby(obj/item/W, mob/user, params) - if(user.stat || user.restrained() || user.lying) - return if(istype(W, /obj/item/weapon/wrench) && !status)//Taking this apart var/turf/T = get_turf(src) if(weldtool) @@ -87,13 +85,13 @@ qdel(src) return - if(istype(W, /obj/item/weapon/screwdriver) && igniter && !lit) + else if(istype(W, /obj/item/weapon/screwdriver) && igniter && !lit) status = !status user << "[igniter] is now [status ? "secured" : "unsecured"]!" update_icon() return - if(isigniter(W)) + else if(isigniter(W)) var/obj/item/device/assembly/igniter/I = W if(I.secured) return @@ -106,7 +104,7 @@ update_icon() return - if(istype(W,/obj/item/weapon/tank/internals/plasma)) + else if(istype(W,/obj/item/weapon/tank/internals/plasma)) if(ptank) user << "There appears to already be a plasma tank loaded in [src]!" return @@ -117,10 +115,10 @@ update_icon() return - if(istype(W, /obj/item/device/analyzer) && ptank) + else if(istype(W, /obj/item/device/analyzer) && ptank) atmosanalyzer_scan(ptank.air_contents, user) - ..() - return + else + return ..() /obj/item/weapon/flamethrower/attack_self(mob/user) diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index 4e83773c9c1..3f876332c87 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -65,6 +65,7 @@ user << "You need to add an activation mechanism!" else if(stage == WIRED && is_type_in_list(I, allowed_containers)) + . = 1 //no afterattack if(beakers.len == 2) user << "[src] can not hold more containers!" return @@ -79,6 +80,7 @@ user << "[I] is empty!" else if(stage == EMPTY && istype(I, /obj/item/device/assembly_holder)) + . = 1 // no afterattack var/obj/item/device/assembly_holder/A = I if(isigniter(A.a_left) == isigniter(A.a_right)) //Check if either part of the assembly has an igniter, but if both parts are igniters, then fuck it return @@ -122,7 +124,8 @@ new /obj/item/stack/cable_coil(get_turf(src),1) stage_change(EMPTY) user << "You remove the activation mechanism from the [initial(name)] assembly." - + else + return ..() /obj/item/weapon/grenade/chem_grenade/proc/stage_change(N) if(N) diff --git a/code/game/objects/items/weapons/grenades/grenade.dm b/code/game/objects/items/weapons/grenades/grenade.dm index a160f33e502..b1f6e2c7284 100644 --- a/code/game/objects/items/weapons/grenades/grenade.dm +++ b/code/game/objects/items/weapons/grenades/grenade.dm @@ -33,24 +33,6 @@ return 1 -/*/obj/item/weapon/grenade/afterattack(atom/target as mob|obj|turf|area, mob/user as mob) - if (istype(target, /obj/item/weapon/storage)) return ..() // Trying to put it in a full container - if (istype(target, /obj/item/weapon/gun/grenadelauncher)) return ..() - if((user.get_active_hand() == src) && (!active) && (clown_check(user)) && target.loc != src.loc) - user << "You prime the [name]! [det_time/10] seconds!" - active = 1 - icon_state = initial(icon_state) + "_active" - playsound(loc, 'sound/weapons/armbomb.ogg', 75, 1, -3) - spawn(det_time) - prime() - return - user.dir = get_dir(user, target) - user.drop_item() - var/t = (isturf(target) ? target : target.loc) - walk_towards(src, t, 3) - return*/ - - /obj/item/weapon/grenade/examine(mob/user) ..() if(display_timer) @@ -103,7 +85,8 @@ det_time = 1 user << "You set the [name] for instant detonation." add_fingerprint(user) - ..() + else + return ..() /obj/item/weapon/grenade/attack_hand() walk(src, null, null) diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index e3f44bc86ef..aa0f83182a8 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -160,6 +160,8 @@ if(!remove_item_from_storage(user)) user.unEquip(src) qdel(src) + else + return ..() /obj/item/weapon/restraints/handcuffs/cable/zipties/cyborg/attack(mob/living/carbon/C, mob/user) if(isrobot(user)) diff --git a/code/game/objects/items/weapons/implants/implantcase.dm b/code/game/objects/items/weapons/implants/implantcase.dm index 7675b951821..1f0c1395c6e 100644 --- a/code/game/objects/items/weapons/implants/implantcase.dm +++ b/code/game/objects/items/weapons/implants/implantcase.dm @@ -26,7 +26,6 @@ /obj/item/weapon/implantcase/attackby(obj/item/weapon/W, mob/user, params) - ..() if(istype(W, /obj/item/weapon/pen)) var/t = stripped_input(user, "What would you like the label to be?", name, null) if(user.get_active_hand() != W) @@ -57,10 +56,8 @@ update_icon() I.update_icon() - /*else if(istype(W, /obj/item/ammo_casing/shotgun/implanter)) - var/obj/item/ammo_casing/shotgun/implanter/I = W - if(I.implanter) - src.attackby(I.implanter, user, params) */ // COMING SOON -- c0 + else + return ..() /obj/item/weapon/implantcase/New() ..() diff --git a/code/game/objects/items/weapons/implants/implantchair.dm b/code/game/objects/items/weapons/implants/implantchair.dm index a7e7452be6a..29c3e7af930 100644 --- a/code/game/objects/items/weapons/implants/implantchair.dm +++ b/code/game/objects/items/weapons/implants/implantchair.dm @@ -84,8 +84,9 @@ return if(put_mob(M)) qdel(G) - src.updateUsrDialog() - return + updateUsrDialog() + else + return ..() /obj/machinery/implantchair/go_out(mob/M) diff --git a/code/game/objects/items/weapons/implants/implanter.dm b/code/game/objects/items/weapons/implants/implanter.dm index 870821e3866..f1747ec1327 100644 --- a/code/game/objects/items/weapons/implants/implanter.dm +++ b/code/game/objects/items/weapons/implants/implanter.dm @@ -40,7 +40,6 @@ update_icon() /obj/item/weapon/implanter/attackby(obj/item/weapon/W, mob/user, params) - ..() if(istype(W, /obj/item/weapon/pen)) var/t = stripped_input(user, "What would you like the label to be?", name, null) if(user.get_active_hand() != W) @@ -51,6 +50,8 @@ name = "implanter ([t])" else name = "implanter" + else + return ..() /obj/item/weapon/implanter/New() ..() diff --git a/code/game/objects/items/weapons/implants/implantpad.dm b/code/game/objects/items/weapons/implants/implantpad.dm index 416fa8b615d..04287893b4f 100644 --- a/code/game/objects/items/weapons/implants/implantpad.dm +++ b/code/game/objects/items/weapons/implants/implantpad.dm @@ -33,17 +33,15 @@ /obj/item/weapon/implantpad/attackby(obj/item/weapon/implantcase/C, mob/user, params) - ..() if(istype(C, /obj/item/weapon/implantcase)) if(!case) if(!user.unEquip(C)) return C.loc = src case = C + update_icon() else - return - update_icon() - + return ..() /obj/item/weapon/implantpad/attack_self(mob/user) user.set_machine(src) diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm index 770adc191ed..fd27e6b4e67 100644 --- a/code/game/objects/items/weapons/melee/energy.dm +++ b/code/game/objects/items/weapons/melee/energy.dm @@ -156,7 +156,6 @@ item_color = "red" /obj/item/weapon/melee/energy/sword/saber/attackby(obj/item/weapon/W, mob/living/user, params) - ..() if(istype(W, /obj/item/weapon/melee/energy/sword/saber)) if(W == src) user << "You try to attach the end of the energy sword to... itself. You're not very smart, are you?" @@ -187,9 +186,10 @@ user.update_inv_r_hand(0) else if(user.l_hand == src) user.update_inv_l_hand(0) - else user << "It's already fabulous!" + else + return ..() /obj/item/weapon/melee/energy/sword/pirate name = "energy cutlass" diff --git a/code/game/objects/items/weapons/melee/misc.dm b/code/game/objects/items/weapons/melee/misc.dm index 3ffd011d903..b4356035962 100644 --- a/code/game/objects/items/weapons/melee/misc.dm +++ b/code/game/objects/items/weapons/melee/misc.dm @@ -174,7 +174,7 @@ ..() if(ismob(target)) var/mob/M - if(src.loc == M) //target caught the sword + if(src.loc == M) //target caught the sword //phil235 NO, shit M.drop_item() consume_everything(target) diff --git a/code/game/objects/items/weapons/mop.dm b/code/game/objects/items/weapons/mop.dm index 9b6e0f91bfb..7ad6d644047 100644 --- a/code/game/objects/items/weapons/mop.dm +++ b/code/game/objects/items/weapons/mop.dm @@ -18,6 +18,7 @@ var/mopspeed = 30 /obj/item/weapon/mop/New() + ..() create_reagents(mopcap) @@ -44,7 +45,6 @@ obj/item/weapon/mop/proc/clean(turf/A) var/turf/turf = A if(is_cleanable(A)) turf = A.loc - A = null if(istype(turf)) user.visible_message("[user] begins to clean \the [turf] with [src].", "You begin to clean \the [turf] with [src]...") @@ -57,7 +57,8 @@ obj/item/weapon/mop/proc/clean(turf/A) /obj/effect/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/weapon/mop) || istype(I, /obj/item/weapon/soap)) return - ..() + else + return ..() /obj/item/weapon/mop/proc/janicart_insert(mob/user, obj/structure/janitorialcart/J) diff --git a/code/game/objects/items/weapons/paiwire.dm b/code/game/objects/items/weapons/paiwire.dm index fa9a626cd15..734c2f6f48b 100644 --- a/code/game/objects/items/weapons/paiwire.dm +++ b/code/game/objects/items/weapons/paiwire.dm @@ -3,18 +3,12 @@ name = "data cable" icon = 'icons/obj/power.dmi' icon_state = "wire1" - + flags = NOBLUDGEON var/obj/machinery/machine -/obj/item/weapon/pai_cable/proc/plugin(obj/machinery/M, mob/user) - if(istype(M, /obj/machinery/door) || istype(M, /obj/machinery/camera)) - if(!user.drop_item()) - return - user.visible_message("[user] inserts [src] into a data port on [M].", "You insert [src] into a data port on [M].", "You hear the satisfying click of a wire jack fastening into place.") - src.loc = M - src.machine = M - else - user.visible_message("[user] dumbly fumbles to find a place on [M] to plug in [src].", "There aren't any ports on [M] that match the jack belonging to [src]!") - -/obj/item/weapon/pai_cable/attack(obj/machinery/M, mob/user) - src.plugin(M, user) \ No newline at end of file +/obj/item/weapon/pai_cable/proc/plugin(obj/machinery/M, mob/living/user) + if(!user.drop_item()) + return + user.visible_message("[user] inserts [src] into a data port on [M].", "You insert [src] into a data port on [M].", "You hear the satisfying click of a wire jack fastening into place.") + src.loc = M + machine = M \ No newline at end of file diff --git a/code/game/objects/items/weapons/shields.dm b/code/game/objects/items/weapons/shields.dm index d884853d8df..8cb60cbd45d 100644 --- a/code/game/objects/items/weapons/shields.dm +++ b/code/game/objects/items/weapons/shields.dm @@ -26,7 +26,7 @@ playsound(user.loc, 'sound/effects/shieldbash.ogg', 50, 1) cooldown = world.time else - ..() + return ..() /obj/item/weapon/shield/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance, damage, attack_type) if(attack_type == THROWN_PROJECTILE_ATTACK) diff --git a/code/game/objects/items/weapons/signs.dm b/code/game/objects/items/weapons/signs.dm index 925368f0074..4454169fdd3 100644 --- a/code/game/objects/items/weapons/signs.dm +++ b/code/game/objects/items/weapons/signs.dm @@ -17,7 +17,8 @@ label = txt src.name = "[label] sign" desc = "It reads: [label]" - ..() + else + return ..() /obj/item/weapon/picket_sign/attack_self(mob/living/carbon/human/user) if( last_wave + 20 < world.time ) diff --git a/code/game/objects/items/weapons/singularityhammer.dm b/code/game/objects/items/weapons/singularityhammer.dm index e4781e32d2b..dfe7cc04233 100644 --- a/code/game/objects/items/weapons/singularityhammer.dm +++ b/code/game/objects/items/weapons/singularityhammer.dm @@ -97,15 +97,14 @@ return -/obj/item/weapon/twohanded/mjollnir/attack(mob/M, mob/user) +/obj/item/weapon/twohanded/mjollnir/attack(mob/living/M, mob/user) ..() if(wielded) //if(charged == 5) //charged = 0 playsound(src.loc, "sparks", 50, 1) - if(istype(M, /mob/living)) - M.Stun(3) - shock(M) + M.Stun(3) + shock(M) /obj/item/weapon/twohanded/mjollnir/throw_impact(atom/target) . = ..() diff --git a/code/game/objects/items/weapons/storage/lockbox.dm b/code/game/objects/items/weapons/storage/lockbox.dm index d5923e7c82f..248f0c7b116 100644 --- a/code/game/objects/items/weapons/storage/lockbox.dm +++ b/code/game/objects/items/weapons/storage/lockbox.dm @@ -18,18 +18,18 @@ /obj/item/weapon/storage/lockbox/attackby(obj/item/weapon/W, mob/user, params) - if (W.GetID()) - if(src.broken) + if(W.GetID()) + if(broken) user << "It appears to be broken." return - if(src.allowed(user)) - src.locked = !( src.locked ) - if(src.locked) - src.icon_state = src.icon_locked + if(allowed(user)) + locked = !locked + if(locked) + icon_state = icon_locked user << "You lock the [src.name]!" return else - src.icon_state = src.icon_closed + icon_state = icon_closed user << "You unlock the [src.name]!" return else diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index 9764781e8fc..d80c46eadeb 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -309,7 +309,7 @@ add_fingerprint(usr) - if(!prevent_warning && !istype(W, /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow)) + if(!prevent_warning) for(var/mob/M in viewers(usr, null)) if(M == usr) usr << "You put [W] [preposition]to [src]." @@ -366,16 +366,15 @@ //This proc is called when you want to place an item into the storage item. /obj/item/weapon/storage/attackby(obj/item/W, mob/user, params) ..() - + . = 1 //no afterattack if(isrobot(user)) - user << "You're a robot. No." - return 0 //Robots can't interact with storage items. + return //Robots can't interact with storage items. if(!can_be_inserted(W, 0 , user)) - return 0 + return handle_item_insertion(W, 0 , user) - return 1 + /obj/item/weapon/storage/attack_hand(mob/user) if(user.s_active == src && loc == user) //if you're already looking inside the storage item diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index 6a0dad18862..0744643aac4 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -80,9 +80,8 @@ user << "You remove the cell from [src]." status = 0 update_icon() - return - ..() - return + else + return ..() /obj/item/weapon/melee/baton/attack_self(mob/user) if(bcell && bcell.charge > hitcost) diff --git a/code/game/objects/items/weapons/tanks/tank_types.dm b/code/game/objects/items/weapons/tanks/tank_types.dm index a8420574e35..98a9bce06c5 100644 --- a/code/game/objects/items/weapons/tanks/tank_types.dm +++ b/code/game/objects/items/weapons/tanks/tank_types.dm @@ -88,9 +88,7 @@ return /obj/item/weapon/tank/internals/plasma/attackby(obj/item/weapon/W, mob/user, params) - ..() - - if (istype(W, /obj/item/weapon/flamethrower)) + if(istype(W, /obj/item/weapon/flamethrower)) var/obj/item/weapon/flamethrower/F = W if ((!F.status)||(F.ptank)) return @@ -99,7 +97,8 @@ user.unEquip(src) src.loc = F F.update_icon() - return + else + return ..() /obj/item/weapon/tank/internals/plasma/full/New() ..() diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm index fc137875022..406e079ffbb 100644 --- a/code/game/objects/items/weapons/tanks/tanks.dm +++ b/code/game/objects/items/weapons/tanks/tanks.dm @@ -120,17 +120,14 @@ return (BRUTELOSS) /obj/item/weapon/tank/attackby(obj/item/weapon/W, mob/user, params) - ..() - add_fingerprint(user) - if(istype(src.loc, /obj/item/assembly)) - icon = src.loc - if((istype(W, /obj/item/device/analyzer)) && get_dist(user, src) <= 1) atmosanalyzer_scan(air_contents, user) - if(istype(W, /obj/item/device/assembly_holder)) + else if(istype(W, /obj/item/device/assembly_holder)) bomb_assemble(W,user) + else + return ..() /obj/item/weapon/tank/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \ datum/tgui/master_ui = null, datum/ui_state/state = hands_state) diff --git a/code/game/objects/items/weapons/tanks/watertank.dm b/code/game/objects/items/weapons/tanks/watertank.dm index 7652493137c..2b29db5f5b3 100644 --- a/code/game/objects/items/weapons/tanks/watertank.dm +++ b/code/game/objects/items/weapons/tanks/watertank.dm @@ -100,8 +100,9 @@ /obj/item/weapon/watertank/attackby(obj/item/W, mob/user, params) if(W == noz) remove_noz() - return - ..() + return 1 + else + return ..() // This mister item is intended as an extension of the watertank and always attached to it. // Therefore, it's designed to be "locked" to the player's hands or extended back onto @@ -152,8 +153,8 @@ loc = tank.loc /obj/item/weapon/reagent_containers/spray/mister/afterattack(obj/target, mob/user, proximity) - if(target.loc == loc || target == tank) //Safety check so you don't fill your mister with mutagen or something and then blast yourself in the face with it putting it away - return + if(target.loc == loc) //Safety check so you don't fill your mister with mutagen or something and then blast yourself in the face with it + return //phil235 shitty check ..() //Janitor tank diff --git a/code/game/objects/items/weapons/teleprod.dm b/code/game/objects/items/weapons/teleprod.dm index 44b8a11dd2b..6131158a4b0 100644 --- a/code/game/objects/items/weapons/teleprod.dm +++ b/code/game/objects/items/weapons/teleprod.dm @@ -22,7 +22,6 @@ do_teleport(M, get_turf(M), 15) /obj/item/weapon/melee/baton/cattleprod/attackby(obj/item/I, mob/user, params)//handles sticking a crystal onto a stunprod to make a teleprod - ..() if(istype(I, /obj/item/weapon/ore/bluespace_crystal)) if(!bcell) var/obj/item/weapon/melee/baton/cattleprod/teleprod/S = new /obj/item/weapon/melee/baton/cattleprod/teleprod @@ -35,6 +34,8 @@ qdel(src) else user.visible_message("You can't install the crystal onto the stunprod while it has a powercell installed!") + else + return ..() /obj/item/weapon/melee/baton/cattleprod/teleprod/attack_self(mob/user, obj/item/I)//handles removing the bluespace crystal + turning the prod on and off if(bcell && bcell.charge > hitcost) diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index d50c3444532..49c2c4dd884 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -275,9 +275,10 @@ /obj/item/weapon/weldingtool/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/weapon/screwdriver)) flamethrower_screwdriver(I, user) - if(istype(I, /obj/item/stack/rods)) + else if(istype(I, /obj/item/stack/rods)) flamethrower_rods(I, user) - ..() + else + return ..() /obj/item/weapon/weldingtool/attack(mob/living/carbon/human/H, mob/user) @@ -347,7 +348,7 @@ var/turf/location = get_turf(user) location.hotspot_expose(700, 50, 1) - if(isliving(O)) + if(isliving(O)) //phil235 need the new bitflag var/mob/living/L = O L.IgniteMob() diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index acfe1e6cd77..d05f4fa39a1 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -186,12 +186,10 @@ if(wielded) //destroys windows and grilles in one hit if(istype(A,/obj/structure/window)) var/obj/structure/window/W = A - W.spawnfragments() // this will qdel and spawn shards + W.shatter() else if(istype(A,/obj/structure/grille)) var/obj/structure/grille/G = A - G.health = -6 - G.destroyed += prob(25) // If this is set, healthcheck will completely remove the grille - G.healthcheck() + G.take_damage(16) /* @@ -282,7 +280,6 @@ item_color = "red" /obj/item/weapon/twohanded/dualsaber/attackby(obj/item/weapon/W, mob/user, params) - ..() if(istype(W, /obj/item/device/multitool)) if(hacked == 0) hacked = 1 @@ -291,7 +288,8 @@ update_icon() else user << "It's starting to look like a triple rainbow - no, nevermind." - + else + return ..() //spears /obj/item/weapon/twohanded/spear @@ -323,9 +321,7 @@ /obj/item/weapon/twohanded/spear/afterattack(atom/movable/AM, mob/user, proximity) if(!proximity) return - if(istype(AM, /turf/open/floor)) //So you can actually melee with it - return - if(istype(AM, /turf/open/space)) //So you can actually melee with it + if(istype(AM, /turf/open)) //So you can actually melee with it return if(explosive && wielded) user.say("[war_cry]") @@ -336,9 +332,10 @@ //THIS MIGHT BE UNBALANCED SO I DUNNO /obj/item/weapon/twohanded/spear/throw_impact(atom/target) . = ..() - if(explosive) - explosive.prime() - qdel(src) + if(!.) //not caught + if(explosive) + explosive.prime() + qdel(src) /obj/item/weapon/twohanded/spear/AltClick() diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index 76a66584d26..862a638f9d5 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -89,7 +89,6 @@ attack_verb = list("hit", "bludgeoned", "whacked", "bonked") /obj/item/weapon/wirerod/attackby(obj/item/I, mob/user, params) - ..() if(istype(I, /obj/item/weapon/shard)) var/obj/item/weapon/twohanded/spear/S = new /obj/item/weapon/twohanded/spear @@ -113,6 +112,8 @@ user << "You fasten [I] to the top of the rod with the cable." qdel(I) qdel(src) + else + return ..() /obj/item/weapon/throwing_star diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index 0d060d3784c..c022bb5abbd 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -30,7 +30,7 @@ return ..() /obj/structure/mech_melee_attack(obj/mecha/M) - if(M.damtype == "brute") + if(M.damtype == BRUTE || M.damtype == BURN) visible_message("[M.name] has hit [src].") return 1 return 0 @@ -40,6 +40,7 @@ add_fingerprint(user) if(structureclimber && structureclimber != user) user.changeNext_move(CLICK_CD_MELEE) + user.do_attack_animation(src) structureclimber.Weaken(2) structureclimber.visible_message("[structureclimber.name] has been knocked off the [src]", "You're knocked off the [src]!", "You see [structureclimber.name] get knocked off the [src]") interact(user) diff --git a/code/game/objects/structures/artstuff.dm b/code/game/objects/structures/artstuff.dm index baa3f7c230d..59929295365 100644 --- a/code/game/objects/structures/artstuff.dm +++ b/code/game/objects/structures/artstuff.dm @@ -23,9 +23,8 @@ C.loc = get_turf(src) C.layer = layer+0.1 user.visible_message("[user] puts \the [C] on \the [src].","You place \the [C] on \the [src].") - return - - ..() + else + return ..() //Stick to the easel like glue @@ -105,15 +104,14 @@ var/global/list/globalBlankCanvases[AMT_OF_CANVASES] if(thePix != theOriginalPix) //colour changed DrawPixelOn(theOriginalPix,pixX,pixY) qdel(masterpiece) - return //Drawing one pixel with a crayon - if(istype(I, /obj/item/toy/crayon)) + else if(istype(I, /obj/item/toy/crayon)) var/obj/item/toy/crayon/C = I DrawPixelOn(C.paint_color, pixX, pixY) - return + else + return ..() - ..() //Clean the whole canvas /obj/item/weapon/canvas/attack_self(mob/user) diff --git a/code/game/objects/structures/barsigns.dm b/code/game/objects/structures/barsigns.dm index 2ceaba07c52..0a0e00016bc 100644 --- a/code/game/objects/structures/barsigns.dm +++ b/code/game/objects/structures/barsigns.dm @@ -61,10 +61,10 @@ /obj/structure/sign/barsign/attackby(obj/item/I, mob/user) - if(!allowed(user)) - user << "Access denied." - return - if( istype(I, /obj/item/weapon/screwdriver)) + if(istype(I, /obj/item/weapon/screwdriver)) + if(!allowed(user)) + user << "Access denied." + return if(!panel_open) user << "You open the maintenance panel." set_sign(new /datum/barsign/hiddensigns/signoff) @@ -79,7 +79,7 @@ set_sign(new /datum/barsign/hiddensigns/empbarsign) panel_open = 0 - if(istype(I, /obj/item/stack/cable_coil) && panel_open) + else if(istype(I, /obj/item/stack/cable_coil) && panel_open) var/obj/item/stack/cable_coil/C = I if(emagged) //Emagged, not broken by EMP user << "Sign has been damaged beyond repair!" @@ -93,7 +93,8 @@ broken = 0 else user << "You need at least two lengths of cable!" - + else + return ..() /obj/structure/sign/barsign/emp_act(severity) diff --git a/code/game/objects/structures/beds_chairs/bed.dm b/code/game/objects/structures/beds_chairs/bed.dm index fc16964286d..56ca3c27b51 100644 --- a/code/game/objects/structures/beds_chairs/bed.dm +++ b/code/game/objects/structures/beds_chairs/bed.dm @@ -50,6 +50,8 @@ if(istype(W, /obj/item/weapon/wrench) && !(flags&NODECONSTRUCT)) playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) deconstruct() + else + return ..() /* * Roller beds diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm index 82218cdbd37..2b9568916c0 100644 --- a/code/game/objects/structures/beds_chairs/chair.dm +++ b/code/game/objects/structures/beds_chairs/chair.dm @@ -66,6 +66,8 @@ SK.loc = E SK.master = E qdel(src) + else + return ..() /obj/structure/chair/attack_tk(mob/user) if(buckled_mobs.len) diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm index bc4201bcb9c..357d8e3e451 100644 --- a/code/game/objects/structures/bedsheet_bin.dm +++ b/code/game/objects/structures/bedsheet_bin.dm @@ -40,7 +40,8 @@ LINEN BINS C.add_fingerprint(user) qdel(src) user << "You tear [src] up." - ..() + else + return ..() /obj/item/weapon/bedsheet/blue icon_state = "sheetblue" diff --git a/code/game/objects/structures/crates_lockers/crates/bins.dm b/code/game/objects/structures/crates_lockers/crates/bins.dm index 6f46530219b..4cc303db4a4 100644 --- a/code/game/objects/structures/crates_lockers/crates/bins.dm +++ b/code/game/objects/structures/crates_lockers/crates/bins.dm @@ -34,7 +34,7 @@ anchored = !anchored playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) else - ..() + return ..() /obj/structure/closet/crate/bin/proc/do_animate() playsound(loc, open_sound, 15, 1, -3) diff --git a/code/game/objects/structures/crates_lockers/crates/large.dm b/code/game/objects/structures/crates_lockers/crates/large.dm index 8e346125205..85c66e179ce 100644 --- a/code/game/objects/structures/crates_lockers/crates/large.dm +++ b/code/game/objects/structures/crates_lockers/crates/large.dm @@ -30,4 +30,4 @@ qdel(src) else - ..() + return ..() diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index eef13b29223..d81af121c14 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -30,7 +30,7 @@ new /obj/item/weapon/grown/log/tree(get_turf(src)) else - ..() + return ..() diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index bc08d60b217..f24bea92dec 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -242,7 +242,7 @@ P.loc = src.loc user << "You fit the pipe into \the [src]." else - ..() + return ..() /obj/structure/girder/CanPass(atom/movable/mover, turf/target, height=0) if(height==0) @@ -379,7 +379,7 @@ qdel(src) else - ..() + return ..() /obj/structure/girder/cult/narsie_act() return diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm index 175971ef2c6..cc7500e6ca0 100644 --- a/code/game/objects/structures/janicart.dm +++ b/code/game/objects/structures/janicart.dm @@ -86,6 +86,8 @@ usr << "You empty the contents of [src]'s bucket onto the floor." reagents.reaction(src.loc) src.reagents.clear_reagents() + else + return ..() /obj/structure/janitorialcart/attack_hand(mob/user) user.set_machine(src) diff --git a/code/game/objects/structures/kitchen_spike.dm b/code/game/objects/structures/kitchen_spike.dm index 377d6a5f584..fb32d2d03ba 100644 --- a/code/game/objects/structures/kitchen_spike.dm +++ b/code/game/objects/structures/kitchen_spike.dm @@ -20,6 +20,8 @@ var/obj/F = new /obj/structure/kitchenspike(src.loc,) transfer_fingerprints_to(F) qdel(src) + else + return ..() /obj/structure/kitchenspike name = "meat spike" @@ -48,8 +50,8 @@ qdel(src) else user << "You can't do that while something's on the spike!" - return - if(istype(I, /obj/item/weapon/grab)) + + else if(istype(I, /obj/item/weapon/grab)) var/obj/item/weapon/grab/G = I if(istype(G.affecting, /mob/living/)) if(!buckled_mobs.len) @@ -77,8 +79,8 @@ qdel(G) return user << "You can't use that on the spike!" - return - ..() + else + return ..() /obj/structure/kitchenspike/user_buckle_mob(mob/living/M, mob/living/user) //Don't want them getting put on the rack other than by spiking return diff --git a/code/game/objects/structures/mop_bucket.dm b/code/game/objects/structures/mop_bucket.dm index 4d7bea05067..29afcc48253 100644 --- a/code/game/objects/structures/mop_bucket.dm +++ b/code/game/objects/structures/mop_bucket.dm @@ -18,4 +18,6 @@ else reagents.trans_to(I, 5) user << "You wet [I] in [src]." - playsound(loc, 'sound/effects/slosh.ogg', 25, 1) \ No newline at end of file + playsound(loc, 'sound/effects/slosh.ogg', 25, 1) + else + return ..() \ No newline at end of file diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index 48a2b4be107..03b9f323307 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -63,7 +63,8 @@ add_fingerprint(user) /obj/structure/bodycontainer/attackby(obj/P, mob/user, params) - if (istype(P, /obj/item/weapon/pen)) + add_fingerprint(user) + if(istype(P, /obj/item/weapon/pen)) var/t = stripped_input(user, "What would you like the label to be?", text("[]", name), null) if (user.get_active_hand() != P) return @@ -73,7 +74,8 @@ name = text("[]- '[]'", initial(name), t) else name = initial(name) - add_fingerprint(user) + else + return ..() /obj/structure/bodycontainer/container_resist() open() diff --git a/code/game/objects/structures/musician.dm b/code/game/objects/structures/musician.dm index 0e40cd810a7..7ee1d283945 100644 --- a/code/game/objects/structures/musician.dm +++ b/code/game/objects/structures/musician.dm @@ -365,4 +365,4 @@ "You hear ratchet.") anchored = 0 else - ..() + return ..() diff --git a/code/game/objects/structures/noticeboard.dm b/code/game/objects/structures/noticeboard.dm index 54fb5414f9c..8a7ce0ad0dd 100644 --- a/code/game/objects/structures/noticeboard.dm +++ b/code/game/objects/structures/noticeboard.dm @@ -29,6 +29,8 @@ user << "You pin the paper to the noticeboard." else user << "You reach to pin your paper to the board but hesitate. You are certain your paper will not be seen among the many others already attached." + else + return ..() /obj/structure/noticeboard/attack_hand(mob/user) var/dat = "Noticeboard
" diff --git a/code/game/objects/structures/plasticflaps.dm b/code/game/objects/structures/plasticflaps.dm index c0ed5f5bd92..ee8c28788a9 100644 --- a/code/game/objects/structures/plasticflaps.dm +++ b/code/game/objects/structures/plasticflaps.dm @@ -41,10 +41,6 @@ return 0 return ..() -/obj/structure/plasticflaps/attackby(obj/item/weapon/W, mob/user, params) - user.changeNext_move(CLICK_CD_MELEE) - ..() - /obj/structure/plasticflaps/ex_act(severity) ..() switch(severity) diff --git a/code/game/objects/structures/reflector.dm b/code/game/objects/structures/reflector.dm index b67d8f0b5a1..48004def34a 100644 --- a/code/game/objects/structures/reflector.dm +++ b/code/game/objects/structures/reflector.dm @@ -50,7 +50,7 @@ new framebuildstacktype(loc, framebuildstackamount) new buildstacktype(loc, buildstackamount) qdel(src) - if(istype(W, /obj/item/weapon/weldingtool)) + else if(istype(W, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/WT = W switch(anchored) if(0) @@ -76,7 +76,7 @@ anchored = 0 user << "You cut \the [src] free from the floor." //Finishing the frame - if(istype(W,/obj/item/stack/sheet)) + else if(istype(W,/obj/item/stack/sheet)) if(finished) return var/obj/item/stack/sheet/S = W @@ -101,6 +101,8 @@ S.use(1) new /obj/structure/reflector/box (src.loc) qdel(src) + else + return ..() /obj/structure/reflector/proc/get_reflection(srcdir,pdir) return 0 diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm index 92c0691d6d1..f06ef7a8b34 100644 --- a/code/game/objects/structures/safe.dm +++ b/code/game/objects/structures/safe.dm @@ -145,6 +145,7 @@ FLOOR SAFES /obj/structure/safe/attackby(obj/item/I, mob/user, params) if(open) + . = 1 //no afterattack if(I.w_class + space <= maxspace) space += I.w_class if(!user.drop_item()) @@ -157,10 +158,10 @@ FLOOR SAFES else user << "[I] won't fit in [src]." return + else if(istype(I, /obj/item/clothing/tie/stethoscope)) + user << "Hold [I] in one of your hands while you manipulate the dial!" else - if(istype(I, /obj/item/clothing/tie/stethoscope)) - user << "Hold [I] in one of your hands while you manipulate the dial!" - return + return ..() obj/structure/safe/blob_act() diff --git a/code/game/objects/structures/table_frames.dm b/code/game/objects/structures/table_frames.dm index 06f733f4651..c9e6167f88f 100644 --- a/code/game/objects/structures/table_frames.dm +++ b/code/game/objects/structures/table_frames.dm @@ -29,8 +29,7 @@ for(var/i = 1, i <= framestackamount, i++) new framestack(get_turf(src)) qdel(src) - return - if(istype(I, /obj/item/stack/sheet/plasteel)) + else if(istype(I, /obj/item/stack/sheet/plasteel)) var/obj/item/stack/sheet/plasteel/P = I if(P.get_amount() < 1) user << "You need one plasteel sheet to do this!" @@ -40,8 +39,7 @@ P.use(1) new /obj/structure/table/reinforced(src.loc) qdel(src) - return - if(istype(I, /obj/item/stack/sheet/metal)) + else if(istype(I, /obj/item/stack/sheet/metal)) var/obj/item/stack/sheet/metal/M = I if(M.get_amount() < 1) user << "You need one metal sheet to do this!" @@ -51,8 +49,7 @@ M.use(1) new /obj/structure/table(src.loc) qdel(src) - return - if(istype(I, /obj/item/stack/sheet/glass)) + else if(istype(I, /obj/item/stack/sheet/glass)) var/obj/item/stack/sheet/glass/G = I if(G.get_amount() < 1) user << "You need one glass sheet to do this!" @@ -63,8 +60,7 @@ new /obj/structure/table/glass(src.loc) qdel(src) - return - if(istype(I, /obj/item/stack/sheet/mineral/silver)) + else if(istype(I, /obj/item/stack/sheet/mineral/silver)) var/obj/item/stack/sheet/mineral/silver/S = I if(S.get_amount() < 1) user << "You need one silver sheet to do this!" @@ -74,7 +70,8 @@ S.use(1) new /obj/structure/table/optable(src.loc) qdel(src) - return + else + return ..() /* * Wooden Frames @@ -89,8 +86,6 @@ burn_state = FLAMMABLE /obj/structure/table_frame/wood/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/weapon/wrench)) - ..() if(istype(I, /obj/item/stack/sheet/mineral/wood)) var/obj/item/stack/sheet/mineral/wood/W = I if(W.get_amount() < 1) @@ -102,7 +97,7 @@ new /obj/structure/table/wood(src.loc) qdel(src) return - if(istype(I, /obj/item/stack/tile/carpet)) + else if(istype(I, /obj/item/stack/tile/carpet)) var/obj/item/stack/tile/carpet/C = I if(C.get_amount() < 1) user << "You need one carpet sheet to do this!" @@ -112,4 +107,5 @@ C.use(1) new /obj/structure/table/wood/poker(src.loc) qdel(src) - return + else + return ..() diff --git a/code/game/objects/structures/tank_dispenser.dm b/code/game/objects/structures/tank_dispenser.dm index c3a46195ab1..550b63d46d2 100644 --- a/code/game/objects/structures/tank_dispenser.dm +++ b/code/game/objects/structures/tank_dispenser.dm @@ -48,9 +48,11 @@ oxygentanks++ else full = TRUE - else + else if(user.a_intent != "harm") user << "[I] does not fit into [src]." return + else + return ..() if(full) user << "[src] can't hold anymore of [I]." return diff --git a/code/game/objects/structures/transit_tubes/transit_tube.dm b/code/game/objects/structures/transit_tubes/transit_tube.dm index 1928b6be6e7..bb7cc05d07c 100644 --- a/code/game/objects/structures/transit_tubes/transit_tube.dm +++ b/code/game/objects/structures/transit_tubes/transit_tube.dm @@ -54,9 +54,11 @@ obj/structure/transit_tube/ex_act(severity, target) R.add_fingerprint(user) src.destroy_diagonals() qdel(src) - if(istype(W, /obj/item/weapon/crowbar)) + else if(istype(W, /obj/item/weapon/crowbar)) for(var/obj/structure/transit_tube_pod/pod in src.loc) pod.attackby(W, user) + else + return ..() //destroys disconnected decorative diagonals /obj/structure/transit_tube/proc/destroy_diagonals() diff --git a/code/game/objects/structures/transit_tubes/transit_tube_construction.dm b/code/game/objects/structures/transit_tubes/transit_tube_construction.dm index efc12760e79..ffcacef2f4b 100644 --- a/code/game/objects/structures/transit_tubes/transit_tube_construction.dm +++ b/code/game/objects/structures/transit_tubes/transit_tube_construction.dm @@ -39,7 +39,7 @@ split_text[1] = copytext(split_text[1],1,2) + copytext(split_text[2],2,3) split_text[2] = copytext(split_text[2],1,2) + ((copytext(split_text[2],2,3) == "E") ? "W" : "E") //for curves, swap the diagonal direction that is not in the same axis as the cardinal direction - else + else if(split_text[1] == "N" || split_text[1] == "S") split_text[2] = copytext(split_text[2],1,2) + ((copytext(split_text[2],2,3) == "E") ? "W" : "E") else @@ -104,7 +104,8 @@ var/obj/structure/transit_tube/R = src.buildtube() src.transfer_fingerprints_to(R) qdel(src) - return + else + return ..() // transit tube station /obj/structure/c_transit_tube/station diff --git a/code/game/objects/structures/transit_tubes/transit_tube_pod.dm b/code/game/objects/structures/transit_tubes/transit_tube_pod.dm index 66e9b89b856..a1e5c3b8eed 100644 --- a/code/game/objects/structures/transit_tubes/transit_tube_pod.dm +++ b/code/game/objects/structures/transit_tubes/transit_tube_pod.dm @@ -41,6 +41,8 @@ src.transfer_fingerprints_to(R) R.add_fingerprint(user) qdel(src) + else + return ..() /obj/structure/transit_tube_pod/container_resist() var/mob/living/user = usr diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm index ee956fc4075..9617e79727c 100644 --- a/code/game/objects/structures/windoor_assembly.dm +++ b/code/game/objects/structures/windoor_assembly.dm @@ -171,7 +171,7 @@ else name = "wired windoor assembly" else - ..() + return ..() if("02") @@ -299,7 +299,7 @@ else - ..() + return ..() //Update to reflect changes(if applicable) update_icon() diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index fa059ea523c..970628005f4 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -145,7 +145,7 @@ if( thermite ) if(W.is_hot()) thermitemelt(user) - return + return var/turf/T = user.loc //get user's location for delay checks diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 30074a1ed3f..ed3c081fc7e 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -675,12 +675,12 @@ var/global/list/g_fancy_list_of_types = null for(var/obj/machinery/power/rad_collector/Rad in machines) if(Rad.anchored) - if(!Rad.P) + if(!Rad.loaded_tank) var/obj/item/weapon/tank/internals/plasma/Plasma = new/obj/item/weapon/tank/internals/plasma(Rad) Plasma.air_contents.assert_gas("plasma") Plasma.air_contents.gases["plasma"][MOLES] = 70 Rad.drainratio = 0 - Rad.P = Plasma + Rad.loaded_tank = Plasma Plasma.loc = Rad if(!Rad.active) diff --git a/code/modules/atmospherics/machinery/other/meter.dm b/code/modules/atmospherics/machinery/other/meter.dm index a0a614eff18..4f94c2a2b4e 100644 --- a/code/modules/atmospherics/machinery/other/meter.dm +++ b/code/modules/atmospherics/machinery/other/meter.dm @@ -104,7 +104,7 @@ new /obj/item/pipe_meter(src.loc) qdel(src) else - ..() + return ..() /obj/machinery/meter/attack_ai(mob/user) return src.attack_hand(user) diff --git a/code/modules/atmospherics/machinery/pipes/pipes.dm b/code/modules/atmospherics/machinery/pipes/pipes.dm index a6d0bbb0207..edcdc2fbce9 100644 --- a/code/modules/atmospherics/machinery/pipes/pipes.dm +++ b/code/modules/atmospherics/machinery/pipes/pipes.dm @@ -65,12 +65,8 @@ /obj/machinery/atmospherics/pipe/attackby(obj/item/weapon/W, mob/user, params) if(istype(W, /obj/item/device/analyzer)) atmosanalyzer_scan(parent.air, user) - return - - if(istype(W,/obj/item/device/pipe_painter) || istype(W,/obj/item/weapon/pipe_dispenser)) - return - - return ..() + else + return ..() /obj/machinery/atmospherics/pipe/returnPipenet() return parent diff --git a/code/modules/atmospherics/machinery/portable/scrubber.dm b/code/modules/atmospherics/machinery/portable/scrubber.dm index 4f0a39ddd09..c1ca56c5ae5 100644 --- a/code/modules/atmospherics/machinery/portable/scrubber.dm +++ b/code/modules/atmospherics/machinery/portable/scrubber.dm @@ -132,4 +132,4 @@ if(!movable) on = FALSE else - ..() + return ..() diff --git a/code/modules/awaymissions/mission_code/Cabin.dm b/code/modules/awaymissions/mission_code/Cabin.dm index 88e1a3b7c7e..b554a8a4547 100644 --- a/code/modules/awaymissions/mission_code/Cabin.dm +++ b/code/modules/awaymissions/mission_code/Cabin.dm @@ -48,7 +48,7 @@ active = 1 toggleFireplace() else - ..() + return ..() else W.fire_act() diff --git a/code/modules/detectivework/evidence.dm b/code/modules/detectivework/evidence.dm index d277998ef70..790cf6e47c1 100644 --- a/code/modules/detectivework/evidence.dm +++ b/code/modules/detectivework/evidence.dm @@ -36,8 +36,9 @@ if(!isturf(I.loc)) //If it isn't on the floor. Do some checks to see if it's in our hands or a box. Otherwise give up. if(istype(I.loc,/obj/item/weapon/storage)) //in a container. var/obj/item/weapon/storage/U = I.loc - user.client.screen -= I - U.contents.Remove(I) + U.remove_from_storage(I, src) +// user.client.screen -= I +//phil235 U.contents.Remove(I) else if(user.l_hand == I) //in a hand user.drop_l_hand() else if(user.r_hand == I) //in a hand diff --git a/code/modules/detectivework/footprints_and_rag.dm b/code/modules/detectivework/footprints_and_rag.dm index c0757e4ec51..19345e4d476 100644 --- a/code/modules/detectivework/footprints_and_rag.dm +++ b/code/modules/detectivework/footprints_and_rag.dm @@ -14,6 +14,7 @@ w_class = 1 icon = 'icons/obj/toy.dmi' icon_state = "rag" + flags = OPENCONTAINER | NOBLUDGEON amount_per_transfer_from_this = 5 possible_transfer_amounts = list() volume = 5 diff --git a/code/modules/food&drinks/drinks/drinks/drinkingglass.dm b/code/modules/food&drinks/drinks/drinks/drinkingglass.dm index 29a2244d732..2a6d0839c84 100644 --- a/code/modules/food&drinks/drinks/drinks/drinkingglass.dm +++ b/code/modules/food&drinks/drinks/drinks/drinkingglass.dm @@ -649,7 +649,6 @@ ..() /obj/item/weapon/reagent_containers/food/drinks/drinkingglass/attack(obj/target, mob/user) - if(user.a_intent == "harm" && ismob(target) && target.reagents && reagents.total_volume) target.visible_message("[user] splashes the contents of [src] onto [target]!", \ "[user] splashes the contents of [src] onto [target]!") @@ -660,7 +659,8 @@ ..() /obj/item/weapon/reagent_containers/food/drinks/drinkingglass/afterattack(obj/target, mob/user, proximity) - if((!proximity) || !check_allowed_items(target,target_self=1)) return + if((!proximity) || !check_allowed_items(target,target_self=1)) + return else if(reagents.total_volume && user.a_intent == "harm") user.visible_message("[user] splashes the contents of [src] onto [target]!", \ diff --git a/code/modules/food&drinks/kitchen machinery/food_cart.dm b/code/modules/food&drinks/kitchen machinery/food_cart.dm index e1d411e4538..2e17639cd25 100644 --- a/code/modules/food&drinks/kitchen machinery/food_cart.dm +++ b/code/modules/food&drinks/kitchen machinery/food_cart.dm @@ -101,7 +101,7 @@ else if(O.is_open_container()) return else - ..() + . = ..() updateDialog() /obj/machinery/food_cart/Topic(href, href_list) diff --git a/code/modules/food&drinks/kitchen machinery/gibber.dm b/code/modules/food&drinks/kitchen machinery/gibber.dm index 9a9f75125be..84a92fbaca7 100644 --- a/code/modules/food&drinks/kitchen machinery/gibber.dm +++ b/code/modules/food&drinks/kitchen machinery/gibber.dm @@ -94,7 +94,7 @@ src.startgibbing(user) /obj/machinery/gibber/attackby(obj/item/P, mob/user, params) - if (istype(P, /obj/item/weapon/grab)) + if(istype(P, /obj/item/weapon/grab)) var/obj/item/weapon/grab/G = P if(!iscarbon(G.affecting)) user << "This item is not suitable for the gibber!" @@ -117,19 +117,22 @@ qdel(G) update_icon() - if(default_deconstruction_screwdriver(user, "grinder_open", "grinder", P)) + else if(default_deconstruction_screwdriver(user, "grinder_open", "grinder", P)) return - if(exchange_parts(user, P)) + else if(exchange_parts(user, P)) return - if(default_pry_open(P)) + else if(default_pry_open(P)) return - if(default_unfasten_wrench(user, P)) + else if(default_unfasten_wrench(user, P)) return - default_deconstruction_crowbar(P) + else if(default_deconstruction_crowbar(P)) + return + else + return ..() diff --git a/code/modules/food&drinks/kitchen machinery/icecream_vat.dm b/code/modules/food&drinks/kitchen machinery/icecream_vat.dm index 1d63733a175..85c904ec981 100644 --- a/code/modules/food&drinks/kitchen machinery/icecream_vat.dm +++ b/code/modules/food&drinks/kitchen machinery/icecream_vat.dm @@ -110,7 +110,7 @@ else if(O.is_open_container()) return else - ..() + return ..() /obj/machinery/icecream_vat/proc/make(mob/user, make_type, amount) for(var/R in get_ingredient_list(make_type)) diff --git a/code/modules/food&drinks/kitchen machinery/monkeyrecycler.dm b/code/modules/food&drinks/kitchen machinery/monkeyrecycler.dm index 47a8d236b6f..809f197ffad 100644 --- a/code/modules/food&drinks/kitchen machinery/monkeyrecycler.dm +++ b/code/modules/food&drinks/kitchen machinery/monkeyrecycler.dm @@ -47,11 +47,12 @@ power_change() return - default_deconstruction_crowbar(O) - - if (src.stat != 0) //NOPOWER etc + if(default_deconstruction_crowbar(O)) return - if (istype(O, /obj/item/weapon/grab)) + + if(stat) //NOPOWER etc + return + if(istype(O, /obj/item/weapon/grab)) var/obj/item/weapon/grab/G = O if(!user.Adjacent(G.affecting)) return @@ -63,7 +64,8 @@ return else user << "The machine only accepts monkeys!" - return + else + return ..() /obj/machinery/monkey_recycler/MouseDrop_T(mob/living/target, mob/living/user) if(!istype(target)) diff --git a/code/modules/games/cards.dm b/code/modules/games/cards.dm index 3f570dcf2d8..cbc8f0348a6 100644 --- a/code/modules/games/cards.dm +++ b/code/modules/games/cards.dm @@ -12,6 +12,7 @@ icon = 'playing_cards.dmi' icon_state = "deck" w_class = 2 + flags = NOBLUDGEON var/list/cards = list() diff --git a/code/modules/holodeck/items.dm b/code/modules/holodeck/items.dm index 7663c49114d..dc710200724 100644 --- a/code/modules/holodeck/items.dm +++ b/code/modules/holodeck/items.dm @@ -155,10 +155,6 @@ user << "You are too primitive to use this device!" return -/obj/machinery/readybutton/New() - ..() - - /obj/machinery/readybutton/attackby(obj/item/weapon/W as obj, mob/user as mob, params) user << "The device is a solid button, there's nothing you can do with it!" diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index 4a9139a5023..09d0f9b748f 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -75,9 +75,10 @@ if(istype(I, /obj/item/weapon/crowbar)) if(anchored==2) user << "Unscrew the hoses first!" + else if(default_deconstruction_crowbar(I, 1)) return - default_deconstruction_crowbar(I, 1) - ..() + else + return ..() /obj/machinery/hydroponics/proc/FindConnected() var/list/connected = list() @@ -801,8 +802,8 @@ for(var/obj/machinery/hydroponics/h in range(1,src)) h.update_icon() - - return + else + return ..() /obj/machinery/hydroponics/attack_hand(mob/user) if(istype(user, /mob/living/silicon)) //How does AI know what plant is? @@ -879,7 +880,8 @@ return // Has no lights /obj/machinery/hydroponics/soil/attackby(obj/item/O, mob/user, params) - ..() if(istype(O, /obj/item/weapon/shovel)) user << "You clear up [src]!" - qdel(src) \ No newline at end of file + qdel(src) + else + return ..() \ No newline at end of file diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index fc376776adc..bdb6d859b28 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -77,7 +77,7 @@ user << "You empty \the [I] into \the [src]." update_icon() else if(istype(I, /obj/item/weapon/pen)) - var/newname = stripped_input(usr, "What would you like to title this bookshelf?") + var/newname = stripped_input(user, "What would you like to title this bookshelf?") if(!newname) return else @@ -92,7 +92,7 @@ state = 1 icon_state = "bookempty" else - ..() + return ..() /obj/structure/bookcase/attack_hand(mob/user) diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index ebd9a20854a..16862d3e8a5 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -305,7 +305,7 @@ var/global/list/datum/cachedbook/cachedbooks // List of our cached book datums user << "[scanner]'s associated machine has been set to [src]." audible_message("[src] lets out a low, short blip.") else - ..() + return ..() /obj/machinery/computer/libraryconsole/bookmanagement/emag_act(mob/user) if(density && !emagged) @@ -457,6 +457,8 @@ var/global/list/datum/cachedbook/cachedbooks // List of our cached book datums if(!user.drop_item()) return O.loc = src + else + return ..() /obj/machinery/libraryscanner/attack_hand(mob/user) usr.set_machine(src) @@ -528,4 +530,4 @@ var/global/list/datum/cachedbook/cachedbooks // List of our cached book datums b.icon_state = "book[rand(1,7)]" qdel(O) else - ..() + return ..() diff --git a/code/modules/mining/abandoned_crates.dm b/code/modules/mining/abandoned_crates.dm index c8a86d9a3f3..fb38ee97255 100644 --- a/code/modules/mining/abandoned_crates.dm +++ b/code/modules/mining/abandoned_crates.dm @@ -178,7 +178,8 @@ if(locked) if(istype(W, /obj/item/weapon/card/emag)) boom(user) - if(istype(W, /obj/item/device/multitool)) + return + else if(istype(W, /obj/item/device/multitool)) user << "DECA-CODE LOCK REPORT:" if(attempts == 1) user << "* Anti-Tamper Bomb will activate on next failed access attempt." @@ -199,8 +200,8 @@ else if(a) ++cows user << "Last code attempt had [bulls] correct digits at correct positions and [cows] correct digits at incorrect positions." - else ..() - else ..() + return + return ..() /obj/structure/closet/crate/secure/loot/togglelock(mob/user) if(locked) diff --git a/code/modules/mining/laborcamp/laborstacker.dm b/code/modules/mining/laborcamp/laborstacker.dm index 64da738a5ef..2b1c53c082a 100644 --- a/code/modules/mining/laborcamp/laborstacker.dm +++ b/code/modules/mining/laborcamp/laborstacker.dm @@ -61,7 +61,8 @@ /obj/machinery/mineral/labor_claim_console/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/weapon/card/id)) return attack_hand(user) - ..() + else + return ..() /obj/machinery/mineral/labor_claim_console/emag_act(mob/user) if(!emagged) @@ -169,5 +170,5 @@ user << "Collect points by bringing smelted minerals to the Labor Shuttle stacking machine. Reach your quota to earn your release." else user << "Error: Invalid ID" - return - ..() + else + return ..() diff --git a/code/modules/mining/satchel_ore_boxdm.dm b/code/modules/mining/satchel_ore_boxdm.dm index 39528908511..882221dd71b 100644 --- a/code/modules/mining/satchel_ore_boxdm.dm +++ b/code/modules/mining/satchel_ore_boxdm.dm @@ -9,17 +9,17 @@ density = 1 pressure_resistance = 5*ONE_ATMOSPHERE -/obj/structure/ore_box/attackby(obj/item/weapon/W as obj, mob/user as mob, params) +/obj/structure/ore_box/attackby(obj/item/weapon/W, mob/user, params) if (istype(W, /obj/item/weapon/ore)) if(!user.drop_item()) return W.loc = src - if (istype(W, /obj/item/weapon/storage)) + else if (istype(W, /obj/item/weapon/storage)) var/obj/item/weapon/storage/S = W for(var/obj/item/weapon/ore/O in S.contents) S.remove_from_storage(O, src) //This will move the item to this item's contents user << "You empty the ore in [S] into \the [src]." - if(istype(W, /obj/item/weapon/crowbar)) + else if(istype(W, /obj/item/weapon/crowbar)) playsound(loc, 'sound/items/Crowbar.ogg', 50, 1) var/obj/item/weapon/crowbar/C = W var/time = 50 @@ -30,7 +30,8 @@ var/obj/item/stack/sheet/mineral/wood/wo = new (loc, 4) wo.add_fingerprint(user) deconstruct() - return + else + return ..() /obj/structure/ore_box/attack_hand(mob/user) if(Adjacent(user)) diff --git a/code/modules/mob/interactive.dm b/code/modules/mob/interactive.dm index faad5010883..98f27b45659 100644 --- a/code/modules/mob/interactive.dm +++ b/code/modules/mob/interactive.dm @@ -577,7 +577,7 @@ if(istype(D,/obj/machinery/door/airlock)) var/obj/machinery/door/airlock/AL = D if(!AL.CanAStarPass(RPID)) // only crack open doors we can't get through - AL.p_open = 1 + AL.panel_open = 1 AL.update_icon() AL.shock(src,(100 - smartness)/2) sleep(5) @@ -589,7 +589,7 @@ if(!AL.wires.is_cut(WIRE_POWER2)) AL.wires.cut(WIRE_POWER2) sleep(5) - AL.p_open = 0 + AL.panel_open = 0 AL.update_icon() D.open() diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index fad49701ae8..bde5baef416 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -24,7 +24,7 @@ for(var/datum/surgery/S in surgeries) if(S.next_step(user, src)) return 1 - ..() + return ..() /mob/living/carbon/attack_hand(mob/living/carbon/human/user) diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index d4f4e91e080..43e4dfaae76 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -12,6 +12,3 @@ if(..()) //to allow surgery to return properly. return dna.species.spec_attack_hand(M, src) - -/mob/living/carbon/human/proc/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, inrange, params) - return diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index aa75cc72d46..db6e21f3ad5 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -106,7 +106,7 @@ feedback_add_details("zone_targeted","[target_area]") // the attacked_by code varies among species - return dna.species.spec_attacked_by(I,user,def_zone,affecting,hit_area,src.a_intent,target_limb,target_area,src) + return dna.species.spec_attacked_by(I, user, def_zone, affecting, hit_area, a_intent, target_limb, target_area, src) /mob/living/carbon/human/emp_act(severity) var/informed = 0 diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 638a318f7f0..0ffc29e42ec 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -953,14 +953,10 @@ if(H.check_shields(I.force, "the [I.name]", I, MELEE_ATTACK, I.armour_penetration)) return 0 - if(I.attack_verb && I.attack_verb.len) - H.visible_message("[user] has [pick(I.attack_verb)] [H] in the [hit_area] with [I]!", \ - "[user] has [pick(I.attack_verb)] [H] in the [hit_area] with [I]!") - else if(I.force) - H.visible_message("[user] has attacked [H] in the [hit_area] with [I]!", \ - "[user] has attacked [H] in the [hit_area] with [I]!") - else - return 0 + H.send_item_attack_message(I, user, hit_area) + + if(!I.force) + return 0 //item force is zero var/armor_block = H.run_armor_check(affecting, "melee", "Your armor has protected your [hit_area].", "Your armor has softened a hit to your [hit_area].",I.armour_penetration) armor_block = min(90,armor_block) //cap damage reduction at 90% diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 2bda69be2c0..e7b082de675 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -445,9 +445,6 @@ return !cleared /mob/living/silicon/robot/attackby(obj/item/weapon/W, mob/user, params) - if(istype(W, /obj/item/weapon/restraints/handcuffs)) // fuck i don't even know why isrobot() in handcuff code isn't working so this will have to do - return - if(istype(W, /obj/item/weapon/weldingtool) && (user.a_intent != "harm" || user == src)) user.changeNext_move(CLICK_CD_MELEE) var/obj/item/weapon/weldingtool/WT = W @@ -470,6 +467,7 @@ return else if(istype(W, /obj/item/stack/cable_coil) && wiresexposed) + user.changeNext_move(CLICK_CD_MELEE) var/obj/item/stack/cable_coil/coil = W if (getFireLoss() > 0) if(src == user) @@ -604,12 +602,15 @@ toner = tonermax qdel(W) user << "You fill the toner level of [src] to its max capacity." - else - if(W.force && W.damtype != STAMINA && src.stat != DEAD) //only sparks if real damage is dealt. - spark_system.start() return ..() +/mob/living/silicon/robot/attacked_by(obj/item/I, mob/living/user, def_zone) + if(I.force && I.damtype != STAMINA && stat != DEAD) //only sparks if real damage is dealt. + spark_system.start() + ..() + + /mob/living/silicon/robot/emag_act(mob/user) if(user != src)//To prevent syndieborgs from emagging themselves if(!opened)//Cover is closed diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm index f01177c5517..1d4dd05f374 100644 --- a/code/modules/mob/living/simple_animal/bot/medbot.dm +++ b/code/modules/mob/living/simple_animal/bot/medbot.dm @@ -202,6 +202,7 @@ /mob/living/simple_animal/bot/medbot/attackby(obj/item/weapon/W as obj, mob/user as mob, params) if(istype(W, /obj/item/weapon/reagent_containers/glass)) + . = 1 //no afterattack if(locked) user << "You cannot insert a beaker because the panel is locked!" return @@ -215,7 +216,6 @@ reagent_glass = W user << "You insert [W]." show_controls(user) - return else var/current_health = health diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index 2b3760b2dcc..20b0c9fb1b7 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -72,8 +72,9 @@ /mob/living/simple_animal/hostile/retaliate/goat/attackby(obj/item/O, mob/user, params) if(stat == CONSCIOUS && istype(O, /obj/item/weapon/reagent_containers/glass)) udder.milkAnimal(O, user) + return 1 else - ..() + return ..() //cow /mob/living/simple_animal/cow @@ -112,8 +113,9 @@ /mob/living/simple_animal/cow/attackby(obj/item/O, mob/user, params) if(stat == CONSCIOUS && istype(O, /obj/item/weapon/reagent_containers/glass)) udder.milkAnimal(O, user) + return 1 else - ..() + return ..() /mob/living/simple_animal/cow/Life() . = ..() diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index b7dc4777098..02de34f15cd 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -397,13 +397,6 @@ adjustBruteLoss(damage) updatehealth() - -/mob/living/simple_animal/attackby(obj/item/O, mob/living/user, params) //Marker -Agouri - if(O.flags & NOBLUDGEON) - return - - ..() - /mob/living/simple_animal/movement_delay() . = ..() diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm index 8d6174cbe77..3812b42a551 100644 --- a/code/modules/paperwork/filingcabinet.dm +++ b/code/modules/paperwork/filingcabinet.dm @@ -55,8 +55,10 @@ playsound(loc, 'sound/items/Ratchet.ogg', 50, 1) anchored = !anchored user << "You [anchored ? "wrench" : "unwrench"] [src]." - else + else if(user.a_intent != "harm") user << "You can't put [P] in [src]!" + else + return ..() /obj/structure/filingcabinet/attack_hand(mob/user) diff --git a/code/modules/paperwork/handlabeler.dm b/code/modules/paperwork/handlabeler.dm index 8e5814eb035..d679df9e53a 100644 --- a/code/modules/paperwork/handlabeler.dm +++ b/code/modules/paperwork/handlabeler.dm @@ -12,8 +12,6 @@ if(!proximity) return if(!mode) //if it's off, give up. return - if(A == loc) // if placing the labeller into something (e.g. backpack) - return // don't set a label if(!labels_left) user << "No labels left!" diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index ca0688139ef..337aee4034c 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -288,6 +288,8 @@ return user << "You [anchored ? "unwrench" : "wrench"] [src]." anchored = !anchored + else + return ..() /obj/machinery/photocopier/ex_act(severity, target) switch(severity) diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index 3edf26b56e8..c93db65fd7e 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -422,12 +422,8 @@ viewpichelper(Ainfo) /obj/item/device/camera/afterattack(atom/target, mob/user, flag) - if(!on || !pictures_left || ismob(target.loc) || !isturf(target.loc)) + if(!on || !pictures_left || !isturf(target.loc)) return - if(user.Adjacent(target)) - var/list/bad_targets = list(/obj/structure, /obj/item/weapon/storage) - if(is_type_in_list(target, bad_targets)) - return captureimage(target, user, flag) diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 9e27a7e8953..3bc5812c90e 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -590,8 +590,6 @@ ..() /obj/machinery/power/apc/attack_alien(mob/living/carbon/alien/humanoid/user) - if(!user) - return user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src) user.visible_message("[user.name] slashes at the [src.name]!", "You slash at the [src.name]!") diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index da76c510940..caa7e9291be 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -180,13 +180,14 @@ var/const/GRAV_NEEDS_WRENCH = 3 // Fixing the gravity generator. /obj/machinery/gravity_generator/main/attackby(obj/item/I, mob/user, params) - var/old_broken_state = broken_state switch(broken_state) if(GRAV_NEEDS_SCREWDRIVER) if(istype(I, /obj/item/weapon/screwdriver)) user << "You secure the screws of the framework." playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) broken_state++ + update_icon() + return if(GRAV_NEEDS_WELDING) if(istype(I, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/WT = I @@ -194,8 +195,10 @@ var/const/GRAV_NEEDS_WRENCH = 3 user << "You mend the damaged framework." playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1) broken_state++ + update_icon() else if(WT.isOn()) user << "You don't have enough fuel to mend the damaged framework!" + return if(GRAV_NEEDS_PLASTEEL) if(istype(I, /obj/item/stack/sheet/plasteel)) var/obj/item/stack/sheet/plasteel/PS = I @@ -204,17 +207,18 @@ var/const/GRAV_NEEDS_WRENCH = 3 user << "You add the plating to the framework." playsound(src.loc, 'sound/machines/click.ogg', 75, 1) broken_state++ + update_icon() else user << "You need 10 sheets of plasteel!" + return if(GRAV_NEEDS_WRENCH) if(istype(I, /obj/item/weapon/wrench)) user << "You secure the plating to the framework." playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) set_fix() - else - ..() - if(old_broken_state != broken_state) - update_icon() + return + return ..() + /obj/machinery/gravity_generator/main/attack_hand(mob/user) if(!..()) diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index 1557c9138ae..09b33ebb881 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -223,7 +223,7 @@ display round(lastgen) and plasmatank amount anchored = 0 playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - + return else if(istype(O, /obj/item/weapon/screwdriver)) panel_open = !panel_open playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) @@ -231,8 +231,10 @@ display round(lastgen) and plasmatank amount user << "You open the access panel." else user << "You close the access panel." - else if(istype(O, /obj/item/weapon/crowbar) && panel_open) - default_deconstruction_crowbar(O) + return + else if(default_deconstruction_crowbar(O)) + return + return ..() /obj/machinery/power/port_gen/pacman/emag_act(mob/user) if(!emagged) diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm index d495f0681bc..2b19c42327b 100644 --- a/code/modules/power/power.dm +++ b/code/modules/power/power.dm @@ -114,24 +114,17 @@ // attach a wire to a power machine - leads from the turf you are standing on //almost never called, overwritten by all power machines but terminal and generator /obj/machinery/power/attackby(obj/item/weapon/W, mob/user, params) - if(istype(W, /obj/item/stack/cable_coil)) - var/obj/item/stack/cable_coil/coil = W - var/turf/T = user.loc - if(T.intact || !istype(T, /turf/open/floor)) return - if(get_dist(src, user) > 1) return - coil.place_turf(T, user) - return else - ..() - return + return ..() + /////////////////////////////////////////// // Powernet handling helpers diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index eecacac5f85..051ca76dc48 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -246,16 +246,15 @@ disconnect_from_network() return - if(istype(W, /obj/item/weapon/card/id) || istype(W, /obj/item/device/pda)) + if(W.GetID()) if(emagged) user << "The lock seems to be broken!" return - if(src.allowed(user)) + if(allowed(user)) if(active) - src.locked = !src.locked + locked = !locked user << "You [src.locked ? "lock" : "unlock"] the controls." else - src.locked = 0 //just in case it somehow gets locked user << "The controls can only be locked when \the [src] is online!" else user << "Access denied." @@ -270,10 +269,10 @@ if(default_pry_open(W)) return - default_deconstruction_crowbar(W) + if(default_deconstruction_crowbar(W)) + return - ..() - return + return ..() /obj/machinery/power/emitter/emag_act(mob/user) if(!emagged) diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm index 47604070cbd..378d179e08b 100644 --- a/code/modules/power/singularity/field_generator.dm +++ b/code/modules/power/singularity/field_generator.dm @@ -131,7 +131,7 @@ field_generator power level display user << "You cut \the [src] free from the floor." else - ..() + return ..() /obj/machinery/field/generator/emp_act() diff --git a/code/modules/power/singularity/generator.dm b/code/modules/power/singularity/generator.dm index 332227b3562..490dfedd68a 100644 --- a/code/modules/power/singularity/generator.dm +++ b/code/modules/power/singularity/generator.dm @@ -15,7 +15,7 @@ if(src.energy >= 200) var/obj/singularity/S = new creation_type(T, 50) transfer_fingerprints_to(S) - if(src) qdel(src) + qdel(src) /obj/machinery/the_singularitygen/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/weapon/wrench)) @@ -32,5 +32,5 @@ "You hear a ratchet.") playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) anchored = 0 - return - return ..() + else + return ..() diff --git a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm index 55190370271..c7efcc2278e 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm @@ -140,7 +140,7 @@ update_icon() return - ..() + return ..() /obj/structure/particle_accelerator/Move() diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index bef1d17af28..6543360d433 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -157,6 +157,7 @@ //disassembling the terminal if(istype(I, /obj/item/weapon/wirecutters) && terminal && panel_open) terminal.dismantle(user) + return //crowbarring it ! var/turf/T = get_turf(src) @@ -164,6 +165,9 @@ message_admins("[src] has been deconstructed by [key_name_admin(user)](?) (FLW) in ([T.x],[T.y],[T.z] - JMP)",0,1) log_game("[src] has been deconstructed by [key_name(user)]") investigate_log("SMES deconstructed by [key_name(user)]","singulo") + return + + return ..() /obj/machinery/power/smes/deconstruction() for(var/obj/item/weapon/stock_parts/cell/cell in component_parts) diff --git a/code/modules/power/terminal.dm b/code/modules/power/terminal.dm index 413411ac7c8..bd469e1853b 100644 --- a/code/modules/power/terminal.dm +++ b/code/modules/power/terminal.dm @@ -75,6 +75,5 @@ /obj/machinery/power/terminal/attackby(obj/item/W, mob/living/user, params) if(istype(W, /obj/item/weapon/wirecutters)) dismantle(user) - return - - ..() + else + return ..() diff --git a/code/modules/power/tesla/coil.dm b/code/modules/power/tesla/coil.dm index 682e22f5915..721fb142ee6 100644 --- a/code/modules/power/tesla/coil.dm +++ b/code/modules/power/tesla/coil.dm @@ -38,7 +38,10 @@ connect_to_network() return - default_deconstruction_crowbar(W) + if(default_deconstruction_crowbar(W)) + return + + return ..() /obj/machinery/power/tesla_coil/tesla_act(var/power) being_shocked = 1 @@ -77,7 +80,10 @@ if(default_unfasten_wrench(user, W)) return - default_deconstruction_crowbar(W) + if(default_deconstruction_crowbar(W)) + return + + return ..() /obj/machinery/power/grounding_rod/tesla_act(var/power) flick("coil_shock_1", src) diff --git a/code/modules/power/tracker.dm b/code/modules/power/tracker.dm index 3a0e06ef6b2..04450068d20 100644 --- a/code/modules/power/tracker.dm +++ b/code/modules/power/tracker.dm @@ -71,8 +71,8 @@ playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) user.visible_message("[user] takes the glass off the tracker.", "You take the glass off the tracker.") qdel(src) - return - ..() + else + return ..() // Tracker Electronic diff --git a/code/modules/projectiles/guns/grenade_launcher.dm b/code/modules/projectiles/guns/grenade_launcher.dm index 3c4657947d6..524568e28c8 100644 --- a/code/modules/projectiles/guns/grenade_launcher.dm +++ b/code/modules/projectiles/guns/grenade_launcher.dm @@ -30,14 +30,7 @@ usr << "The grenade launcher cannot hold more grenades." /obj/item/weapon/gun/grenadelauncher/afterattack(obj/target, mob/user , flag) - - if (istype(target, /obj/item/weapon/storage/backpack )) - return - - else if (locate (/obj/structure/table, src.loc)) - return - - else if(target == user) + if(target == user) return if(grenades.len) diff --git a/code/modules/projectiles/guns/projectile/saw.dm b/code/modules/projectiles/guns/projectile/saw.dm index 941b891c208..ebc79dfd8ad 100644 --- a/code/modules/projectiles/guns/projectile/saw.dm +++ b/code/modules/projectiles/guns/projectile/saw.dm @@ -76,6 +76,7 @@ armour_penetration = 0 /obj/item/projectile/bullet/saw/bleeding/on_hit(atom/target, blocked = 0, hit_zone) + . = ..() if((blocked != 100) && istype(target, /mob/living/carbon/human)) var/mob/living/carbon/human/H = target H.drip(35) diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index 6389420a916..2cf416fdf08 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -20,7 +20,7 @@ /obj/item/projectile/energy/electrode/on_hit(atom/target, blocked = 0) . = ..() - if(!ismob(target) || blocked >= 2) //Fully blocked by mob or collided with dense object - burst into sparks! + if(!ismob(target) || blocked >= 100) //Fully blocked by mob or collided with dense object - burst into sparks! var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread sparks.set_up(1, 1, src) sparks.start() @@ -51,8 +51,10 @@ SpinAnimation() /obj/item/projectile/energy/net/on_hit(atom/target, blocked = 0) - if(isliving(target) && !locate(/obj/effect/nettingportal) in loc) - new/obj/effect/nettingportal(get_turf(target)) + if(isliving(target)) + var/turf/Tloc = get_turf(target) + if(!locate(/obj/effect/nettingportal) in Tloc) + new/obj/effect/nettingportal(Tloc) ..() /obj/item/projectile/energy/net/on_range() @@ -98,7 +100,7 @@ range = 4 /obj/item/projectile/energy/trap/on_hit(atom/target, blocked = 0) - if(!ismob(target) || blocked >= 2) //Fully blocked by mob or collided with dense object - drop a trap + if(!ismob(target) || blocked >= 100) //Fully blocked by mob or collided with dense object - drop a trap new/obj/item/weapon/restraints/legcuffs/beartrap/energy(get_turf(loc)) else if(iscarbon(target)) var/obj/item/weapon/restraints/legcuffs/beartrap/B = new /obj/item/weapon/restraints/legcuffs/beartrap/energy(get_turf(target)) diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm index 5c3f577f4d9..7fe9064c014 100644 --- a/code/modules/reagents/chemistry/machinery/pandemic.dm +++ b/code/modules/reagents/chemistry/machinery/pandemic.dm @@ -16,11 +16,6 @@ ..() update_icon() -/obj/machinery/computer/pandemic/set_broken() - icon_state = (beaker ? "mixer1_b" : "mixer0_b") - overlays.Cut() - stat |= BROKEN - /obj/machinery/computer/pandemic/proc/GetVirusByIndex(index) if(beaker && beaker.reagents) if(beaker.reagents.reagent_list.len) @@ -272,7 +267,9 @@ /obj/machinery/computer/pandemic/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/weapon/reagent_containers) && (I.flags & OPENCONTAINER)) - if(stat & (NOPOWER|BROKEN)) return + . = 1 //no afterattack + if(stat & (NOPOWER|BROKEN)) + return if(beaker) user << "A beaker is already loaded into the machine!" return @@ -284,12 +281,10 @@ user << "You add the beaker to the machine." src.updateUsrDialog() icon_state = "mixer1" - - else if(istype(I, /obj/item/weapon/screwdriver)) - if(src.beaker) - beaker.loc = get_turf(src) - ..() - return else - ..() - return + return ..() + +/obj/machinery/computer/pandemic/deconstruction() + if(beaker) + beaker.loc = get_turf(src) + ..() \ No newline at end of file diff --git a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm index e1c9e8b3ea7..9ac92d78ace 100644 --- a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm +++ b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm @@ -104,6 +104,7 @@ return if (istype(I, /obj/item/weapon/reagent_containers) && (I.flags & OPENCONTAINER) ) + . = 1 //no afterattack if (beaker) return 1 else @@ -140,7 +141,7 @@ user << "You empty the plant bag into the All-In-One grinder." src.updateUsrDialog() - return 0 + return 1 if (!is_type_in_list(I, blend_items) && !is_type_in_list(I, juice_items)) user << "Cannot refine into a reagent!" diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index a216e2ecdd2..ce8d57f492b 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -174,10 +174,9 @@ toxpwr = 1 /datum/reagent/toxin/plantbgone/reaction_obj(obj/O, reac_volume) - if(istype(O,/obj/structure/alien/weeds/)) + if(istype(O,/obj/structure/alien/weeds)) var/obj/structure/alien/weeds/alien_weeds = O - alien_weeds.health -= rand(15,35) // Kills alien weeds pretty fast - alien_weeds.healthcheck() + alien_weeds.take_damage(rand(15,35), BRUTE, 0) // Kills alien weeds pretty fast else if(istype(O,/obj/effect/glowshroom)) //even a small amount is enough to kill it qdel(O) else if(istype(O,/obj/effect/spacevine)) diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index a6b1171a6fc..3bcd9d6a5ef 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -6,33 +6,6 @@ flags = OPENCONTAINER spillable = 1 - can_be_placed_into = list( - /obj/machinery/chem_master/, - /obj/machinery/chem_dispenser/, - /obj/machinery/chem_heater/, - /obj/machinery/reagentgrinder, - /obj/machinery/biogenerator, - /obj/machinery/r_n_d/destructive_analyzer, - /obj/machinery/r_n_d/experimentor, - /obj/machinery/autolathe, - /obj/structure/table, - /obj/structure/rack, - /obj/structure/closet, - /obj/structure/sink, - /obj/item/weapon/storage, - /obj/machinery/atmospherics/components/unary/cryo_cell, - /obj/item/weapon/grenade/chem_grenade, - /mob/living/simple_animal/bot/medbot, - /obj/machinery/computer/pandemic, - /obj/structure/safe, - /obj/machinery/disposal, - /obj/machinery/hydroponics, - /obj/machinery/biogenerator, - /mob/living/simple_animal/cow, - /mob/living/simple_animal/hostile/retaliate/goat - ) - - /obj/item/weapon/reagent_containers/glass/attack(mob/M, mob/user, obj/target) if(!canconsume(M, user)) @@ -104,14 +77,6 @@ var/trans = reagents.trans_to(target, amount_per_transfer_from_this) user << "You transfer [trans] unit\s of the solution to [target]." - //Safety for dumping stuff into a ninja suit. It handles everything through attackby() and this is unnecessary. //gee thanks noize - //NINJACODE - else if(istype(target, /obj/item/clothing/suit/space/space_ninja)) - return - - else if(istype(target, /obj/effect/decal/cleanable)) //stops splashing while scooping up fluids - return - else if(reagents.total_volume) if(user.a_intent == "harm") user.visible_message("[user] splashes the contents of [src] onto [target]!", \ diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index f278a8d598a..4a9eb41cbc2 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -21,11 +21,7 @@ /obj/item/weapon/reagent_containers/spray/afterattack(atom/A as mob|obj, mob/user) - if(istype(A, /obj/item/weapon/storage) || istype(A, /obj/structure/table) || istype(A, /obj/structure/rack) || istype(A, /obj/structure/closet) \ - || istype(A, /obj/item/weapon/reagent_containers) || istype(A, /obj/structure/sink) || istype(A, /obj/structure/janitorialcart) || istype(A, /obj/machinery/hydroponics)) - return - - if(istype(A, /obj/effect/proc_holder/spell)) + if(istype(A, /obj/item/weapon/reagent_containers) || istype(A, /obj/structure/sink) || istype(A, /obj/structure/janitorialcart) || istype(A, /obj/machinery/hydroponics)) return if(istype(A, /obj/structure/reagent_dispensers) && get_dist(src,A) <= 1) //this block copypasted from reagent_containers/glass, for lack of a better solution diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index da5c39bb434..1db73cad36d 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -153,9 +153,9 @@ return qdel(I) cups++ - return else - ..() + return ..() + /obj/structure/reagent_dispensers/beerkeg name = "beer keg" desc = "A beer keg." diff --git a/code/modules/telesci/telesci_computer.dm b/code/modules/telesci/telesci_computer.dm index 8ae4d09cac5..e0f333b8007 100644 --- a/code/modules/telesci/telesci_computer.dm +++ b/code/modules/telesci/telesci_computer.dm @@ -78,7 +78,7 @@ M.buffer = null user << "You upload the data from the [W.name]'s buffer." else - ..() + return ..() /obj/machinery/computer/telescience/attack_ai(mob/user) src.attack_hand(user) diff --git a/code/modules/vehicles/vehicle.dm b/code/modules/vehicles/vehicle.dm index 74fe6f5cab4..2b9890ee8c7 100644 --- a/code/modules/vehicles/vehicle.dm +++ b/code/modules/vehicles/vehicle.dm @@ -117,7 +117,8 @@ /obj/vehicle/attackby(obj/item/I, mob/user, params) if(keytype && istype(I, keytype)) user << "Hold [I] in one of your hands while you drive \the [name]." - + else + return ..() /obj/vehicle/Bump(atom/movable/M) . = ..() diff --git a/icons/obj/doors/door_fire2.dmi b/icons/obj/doors/door_fire2.dmi deleted file mode 100644 index 0640cce7bea35117e94e0eaf88d5ed87998b4d6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41754 zcmb5WWmH_v+vbbAy9EisoesmZ3v*0u5D?@LQsN>i?wMy@Ua{}?Jr2Rg6Kzux z9}7+qOb`jB;wlLy=)$t-JBgT;qG$<8v=PZW4Q(2N-vv!rlWbm@Wi5Y*ae%!t^)2i) ziS|RSgH%Rf(O|{q!!@oTF|EVE6s-?|jF$ZM^NSPDlHlRn+x5fR;kn@NLw5XVk^^lQ zjw->Dm-CCux#^eA%NLy}m(xW=zfI8j=E2qWz}dRH-^$jMGe26ifzO?*%fx4cQ5aBgDicQ zOj+16+1ku6-?OKoKs@?PK^iRm<~(*L@{^$+;IbVxs)_J;3G4x%b)D;Vq{)Q52p-y> z>_cTS!EL@i^NFr)wp~N~#-@f?DN0h``dPSskIYKEvl!*xrl7?TAz9vp@Q$9+ofCj2bXDHVZcT zw@+}cj6&lFR?<1_?R;rJ>AYzLbu4v!gcxh%#&)tlaM)tH%Cpk7q-=q-#$jR02%FEZ=>8JgM z=Y�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%0AkmLsOjwy@eca}r#Pcr)deKFk3uXZ(C*udr?c~<0 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̍FfTY{-{q$>zO;WYd|VFYD$7QEDb^gGj%y=YD-g70o_FU>}HUS zMBtFFcWo`c=#fQceVo)d%w!M@;t>+rSW$`xsj~nFbv>J>0|eM+i=LbQOTnz!(2RF%OHw=~Jqp7`Q_B;CN$Lc`Dw9tH5SjqHHNCd5kIB7pn zrw9u05@p6g=haJR1GdH!3NV2{0#$4cTKa?m|8cU6t(%aMxCcacmw6abvoHX`v05`6b-Chj?7W?deBa5fb3s`)2P2s8JIvF`QfU z_8=A1687j!#B3~s;pv@HIbH{)lP}9nU|O(hpiRE#Mwp1_fSaHov(1rF-mXBAy_dr+ZkX0cB5>7w ztI3RfjiHR-4G@jMeL|c`D`hW~vHW>qmdsc(KZ>xptt`e9O1M2v&nUmFj%(sTCN z!;n~ijER+41vB}7rE6XoO;6zddz8Us$0vE}NaLWJ ztngYuFR*(W>s{#Gs-Apw-OrfI%Gn>_$;7-p%_oXKjr!cCg|l8+;-x3^{}Y6_{{>;_ z`r-cx!mMPsgxsmHozisHNUxWV6P(sV6rjQMv8{l?Q9_6a_MZ$T@%TQ4$14~b-;YDV zv4Fi+w2Bvh;fD{_CFP7+3UR*KZy9|_o>BSk{&>M3U08-G3JVW+`!E}Ys>0&g6HERs zna5z@ddd~2mZ5F?^MHHF!1mX%3yht0MG6vuQaCeAw5nC_`t{#Lll3nQ(f}nigtH8T z4FGRz?gbxZBKo6LTN?n1MXz-{nttV4>WMOcPoF#oVyJ3H}d32q@41 diff --git a/tgstation.dme b/tgstation.dme index a2a4a626d32..50adc433f20 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -103,6 +103,7 @@ #include "code\_onclick\hud\alien.dm" #include "code\_onclick\hud\alien_larva.dm" #include "code\_onclick\hud\blob_overmind.dm" +#include "code\_onclick\hud\blobbernauthud.dm" #include "code\_onclick\hud\drones.dm" #include "code\_onclick\hud\fullscreen.dm" #include "code\_onclick\hud\ghost.dm" From b146131a342d32a0bdac80d9130ae28ca3299c9d Mon Sep 17 00:00:00 2001 From: phil235 Date: Sun, 24 Apr 2016 20:37:00 +0200 Subject: [PATCH 113/265] Second commits. This contains the changes to item_attack.dm Obj/attackby() now follows a similar structure as mob/living/attackby. It calls attack_obj() (like attack() but for obj) which calls attacked_by (just like attack() does) The use of the NOBLUDGEON flag changes a bit, it is now used to signify the item cannot be used as a melee weapon at all. No attack animation, no attack message. I've given this bitflag to many items that have an afterattack() so as to not both attack and do the special action (among those items: the rcd) There's also the code changes to attacking machines: attacking any machine now give a proper message and a sound. And with this, I made more machines breakable (using a health var and the very little used BROKEN stat). Most notably, tables can now be attacked when on harm intent and be destroyed. The newly destroyable machines have a take_damage() proc used by all sorts of attack (weapon, xeno, animal, hulk, mech melee, gun projectile, thrown items). There's some more stuff in there, see the PR's description and comments. --- code/_onclick/item_attack.dm | 135 ++++++----- code/game/gamemodes/gang/dominator.dm | 126 ++++------ code/game/machinery/PDApainter.dm | 75 ++++-- code/game/machinery/announcement_system.dm | 27 +-- code/game/machinery/camera/camera.dm | 88 ++++--- code/game/machinery/computer/computer.dm | 82 +++---- code/game/machinery/droneDispenser.dm | 80 ++++--- code/game/machinery/firealarm.dm | 34 ++- code/game/machinery/machinery.dm | 61 ++++- code/game/machinery/newscaster.dm | 160 +++++++------ code/game/machinery/requests_console.dm | 39 ++-- code/game/machinery/shieldgen.dm | 216 +++++++++--------- code/game/machinery/teleporter.dm | 48 ++-- code/game/machinery/vending.dm | 34 +-- .../atmospherics/machinery/atmosmachinery.dm | 55 ++--- .../components/binary_devices/passive_gate.dm | 14 +- .../components/binary_devices/pump.dm | 13 +- .../components/binary_devices/volume_pump.dm | 14 +- .../components/unary_devices/cryo.dm | 7 +- .../unary_devices/portables_connector.dm | 8 +- .../components/unary_devices/thermomachine.dm | 1 + .../components/unary_devices/vent_pump.dm | 10 +- .../components/unary_devices/vent_scrubber.dm | 13 +- .../machinery/portable/canister.dm | 54 ++--- .../portable/portable_atmospherics.dm | 64 +++--- .../kitchen machinery/processor.dm | 23 +- .../kitchen machinery/smartfridge.dm | 42 ++-- code/modules/hydroponics/biogenerator.dm | 72 +++--- code/modules/hydroponics/seed_extractor.dm | 36 ++- code/modules/mining/equipment_locker.dm | 27 ++- .../suit/n_suit_verbs/energy_net_nets.dm | 91 ++++---- code/modules/paperwork/paperbin.dm | 22 +- code/modules/power/antimatter/control.dm | 33 ++- code/modules/power/antimatter/shielding.dm | 27 ++- code/modules/power/lighting.dm | 131 +++++------ code/modules/power/singularity/collector.dm | 48 ++-- code/modules/power/solar.dm | 96 +++++--- .../chemistry/machinery/chem_dispenser.dm | 69 +++--- .../chemistry/machinery/chem_heater.dm | 22 +- .../chemistry/machinery/chem_master.dm | 52 +---- code/modules/recycling/conveyor2.dm | 19 +- .../recycling/disposal-construction.dm | 14 +- code/modules/recycling/disposal-structures.dm | 94 +++----- code/modules/recycling/disposal-unit.dm | 81 ++++--- code/modules/recycling/sortingmachinery.dm | 2 + code/modules/research/circuitprinter.dm | 112 ++++----- code/modules/research/destructive_analyzer.dm | 35 +-- code/modules/research/experimentor.dm | 43 +--- code/modules/research/protolathe.dm | 88 +++---- code/modules/research/rdmachines.dm | 56 ++++- code/modules/research/server.dm | 21 +- code/modules/shuttle/emergency.dm | 49 ++-- code/modules/telesci/telepad.dm | 27 ++- icons/obj/machines/research.dmi | Bin 19007 -> 19008 bytes 54 files changed, 1480 insertions(+), 1410 deletions(-) diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 0c49e41078a..e392d3ee432 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -7,10 +7,8 @@ /atom/proc/attackby(obj/item/W, mob/user, params) return -/atom/movable/attackby(obj/item/W, mob/living/user, params) - user.do_attack_animation(src) - if(W && !(W.flags & NOBLUDGEON)) - visible_message("[user] has hit [src] with [W]!") +/obj/attackby(obj/item/I, mob/living/user, params) + return I.attack_obj(src, user) //phil235 /mob/living/attackby(obj/item/I, mob/user, params) user.changeNext_move(CLICK_CD_MELEE) @@ -21,42 +19,54 @@ playsound(loc, 'sound/weapons/slice.ogg', 50, 1, -1) if(do_mob(user, src, 80/sharpness)) harvest(user) - return - I.attack(src, user) + return 1 + return I.attack(src, user) //phil235 should we return 1 if successful special attack() so we don't call afterattack? + //see the attack() procs if it'd be useful. -/mob/living/proc/attacked_by(obj/item/I, mob/living/user, def_zone) - apply_damage(I.force, I.damtype, def_zone) - if(I.damtype == "brute") - if(prob(33) && I.force) - var/turf/location = get_turf(src) - location.add_blood_floor(src) - var/message_verb = "" - if(I.attack_verb && I.attack_verb.len) - message_verb = "[pick(I.attack_verb)]" - else if(I.force) - message_verb = "attacked" +/obj/item/proc/attack(mob/living/M, mob/living/user, def_zone) + if(flags & (NOBLUDGEON|ABSTRACT)) //phil235 check that no abstract item uses attack or attack_obj + return + if(!force) + playsound(loc, 'sound/weapons/tap.ogg', get_clamped_volume(), 1, -1) + else if(hitsound) + playsound(loc, hitsound, get_clamped_volume(), 1, -1) - var/attack_message = "[src] has been [message_verb] with [I]." - if(user) + user.lastattacked = M + M.lastattacker = user + + M.attacked_by(src, user, def_zone) + + add_logs(user, M, "attacked", src.name, "(INTENT: [uppertext(user.a_intent)]) (DAMTYPE: [uppertext(damtype)])") + add_fingerprint(user) + + +//the equivalent of the standard version of attack() but for object targets. +/obj/item/proc/attack_obj(obj/O, mob/living/user) + if(flags & (NOBLUDGEON|ABSTRACT)) //phil235 + return + user.changeNext_move(CLICK_CD_MELEE) + user.do_attack_animation(O) + O.attacked_by(src, user) + + + +/atom/movable/proc/attacked_by() + return + +/obj/attacked_by(obj/item/I, mob/living/user) + if(I.force) + user.visible_message("[user] has hit [src] with [I]!", "You hit [src] with [I]!") + +/mob/living/attacked_by(obj/item/I, mob/living/user, def_zone) + if(user != src) user.do_attack_animation(src) - if(user in viewers(src, null)) - attack_message = "[user] has [message_verb] [src] with [I]!" - if(message_verb) - visible_message("[attack_message]", - "[attack_message]") - -/mob/living/simple_animal/attacked_by(var/obj/item/I, var/mob/living/user) - if(!I.force) - user.visible_message("[user] gently taps [src] with [I].",\ - "This weapon is ineffective, it does no damage!") - else if(I.force >= force_threshold && I.damtype != STAMINA) - ..() - else - visible_message("[I] bounces harmlessly off of [src].",\ - "[I] bounces harmlessly off of [src]!") - - + if(send_item_attack_message(I, user, def_zone)) + if(apply_damage(I.force, I.damtype, def_zone)) + if(I.damtype == BRUTE) + if(prob(33)) + var/turf/location = get_turf(src) + location.add_blood_floor(src) // Proximity_flag is 1 if this afterattack was called on something adjacent, in your square, or on your person. // Click parameters is the params string from byond Click() code, see that documentation. @@ -65,30 +75,35 @@ /obj/item/proc/get_clamped_volume() - if(src.force && src.w_class) - return Clamp((src.force + src.w_class) * 4, 30, 100)// Add the item's force to its weight class and multiply by 4, then clamp the value between 30 and 100 - else if(!src.force && src.w_class) - return Clamp(src.w_class * 6, 10, 100) // Multiply the item's weight class by 6, then clamp the value between 10 and 100 + if(w_class) + if(force) + return Clamp((force + w_class) * 4, 30, 100)// Add the item's force to its weight class and multiply by 4, then clamp the value between 30 and 100 + else + return Clamp(w_class * 6, 10, 100) // Multiply the item's weight class by 6, then clamp the value between 10 and 100 -/obj/item/proc/attack(mob/living/M, mob/living/user, def_zone) - - if (!istype(M)) // not sure if this is the right thing... - return - - if (hitsound && force > 0) //If an item's hitsound is defined and the item's force is greater than zero... - playsound(loc, hitsound, get_clamped_volume(), 1, -1) //...play the item's hitsound at get_clamped_volume() with varying frequency and -1 extra range. - else if (force == 0)//Otherwise, if the item's force is zero... - playsound(loc, 'sound/weapons/tap.ogg', get_clamped_volume(), 1, -1)//...play tap.ogg at get_clamped_volume() - ///////////////////////// - user.lastattacked = M - M.lastattacker = user - - //spawn(1800) // this wont work right - // M.lastattacker = null - ///////////////////////// - M.attacked_by(src, user, def_zone) - - add_logs(user, M, "attacked", src.name, "(INTENT: [uppertext(user.a_intent)]) (DAMTYPE: [uppertext(damtype)])") - add_fingerprint(user) +/mob/living/proc/send_item_attack_message(obj/item/I, mob/living/user, hit_area) + var/message_verb = "attacked" + if(I.attack_verb.len) + message_verb = "[pick(I.attack_verb)]" + else if(!I.force) + return 0 + var/message_hit_area = "" + if(hit_area) + message_hit_area = " in the [hit_area]" + var/attack_message = "[src] has been [message_verb][message_hit_area] with [I]." + if(user in viewers(src, null)) + attack_message = "[user] has [message_verb] [src][message_hit_area] with [I]!" + visible_message("[attack_message]", + "[attack_message]") return 1 + +/mob/living/simple_animal/send_item_attack_message(obj/item/I, mob/living/user, hit_area) + if(!I.force) + user.visible_message("[user] gently taps [src] with [I].",\ + "This weapon is ineffective, it does no damage!") + else if(I.force < force_threshold || I.damtype == STAMINA) + visible_message("[I] bounces harmlessly off of [src].",\ + "[I] bounces harmlessly off of [src]!") + else + return ..() \ No newline at end of file diff --git a/code/game/gamemodes/gang/dominator.dm b/code/game/gamemodes/gang/dominator.dm index 6f32e5c427c..83f6da190fe 100644 --- a/code/game/gamemodes/gang/dominator.dm +++ b/code/game/gamemodes/gang/dominator.dm @@ -9,8 +9,9 @@ var/maxhealth = 200 var/health = 200 var/datum/gang/gang - var/operating = 0 //-1=broken, 0=standby, 1=takeover + var/operating = 0 //0=standby or broken, 1=takeover var/warned = 0 //if this device has set off the warning at <3 minutes yet + var/datum/effect_system/spark_spread/spark_system /obj/machinery/dominator/tesla_act() qdel(src) @@ -19,10 +20,12 @@ ..() SetLuminosity(2) poi_list |= src + spark_system = new + spark_system.set_up(5, 1, src) /obj/machinery/dominator/examine(mob/user) ..() - if(operating == -1) + if(stat & BROKEN) user << "It looks completely busted." return @@ -52,30 +55,31 @@ else SSmachine.processing -= src -/obj/machinery/dominator/proc/healthcheck(damage) - var/iconname = "dominator" - if(gang) - iconname += "-[gang.color]" - SetLuminosity(3) - - var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread - +/obj/machinery/dominator/take_damage(damage, damage_type = BRUTE, sound_effect = 1) + switch(damage_type) + if(BURN) + if(sound_effect) + playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) + if(BRUTE) + if(sound_effect) + if(damage) + playsound(src, 'sound/effects/bang.ogg', 50, 1) + else + playsound(loc, 'sound/weapons/tap.ogg', 50, 1) + else + return health -= damage if(health > (maxhealth/2)) if(prob(damage*2)) - sparks.set_up(5, 1, src) - sparks.start() - else if(operating >= 0) - sparks.set_up(5, 1, src) - sparks.start() + spark_system.start() + else if(!(stat & BROKEN)) + spark_system.start() overlays += "damage" - if(operating != -1) + if(!(stat & BROKEN)) if(health <= 0) set_broken() - else - icon_state = iconname if(health <= -100) new /obj/item/stack/sheet/plasteel(src.loc) @@ -107,17 +111,19 @@ SetLuminosity(0) icon_state = "dominator-broken" overlays.Cut() - operating = -1 + operating = 0 + stat |= BROKEN SSmachine.processing -= src /obj/machinery/dominator/Destroy() - if(operating != -1) + if(!(stat & BROKEN)) set_broken() poi_list.Remove(src) + qdel(spark_system) return ..() /obj/machinery/dominator/emp_act(severity) - healthcheck(100) + take_damage(100, BURN, 0) ..() /obj/machinery/dominator/ex_act(severity, target) @@ -128,31 +134,26 @@ if(1) qdel(src) if(2) - healthcheck(120) + take_damage(120, BRUTE, 0) if(3) - healthcheck(30) + take_damage(30, BRUTE, 0) return -/obj/machinery/dominator/bullet_act(obj/item/projectile/Proj) - if(Proj.damage) - if((Proj.damage_type == BRUTE || Proj.damage_type == BURN)) - var/damage = Proj.damage - if(Proj.forcedodge) - damage *= 0.5 - playsound(src, 'sound/effects/bang.ogg', 50, 1) - visible_message("[src] was hit by [Proj].") - healthcheck(damage) - ..() +/obj/machinery/dominator/bullet_act(obj/item/projectile/P) + . = ..() + if(P.damage) + var/damage_amount = P.damage + if(P.forcedodge) + damage_amount *= 0.5 + visible_message("[src] was hit by [P].") + take_damage(damage_amount, P.damage_type, 0) + /obj/machinery/dominator/blob_act() - healthcheck(110) - -/obj/machinery/dominator/attackby(obj/I, mob/user, params) - - return + take_damage(110, BRUTE, 0) /obj/machinery/dominator/attack_hand(mob/user) - if(operating) + if(operating || (stat & BROKEN)) examine(user) return @@ -185,8 +186,9 @@ priority_announce("Network breach detected in [locname]. The [gang.name] Gang is attempting to seize control of the station!","Network Alert") gang.domination() src.name = "[gang.name] Gang [src.name]" - healthcheck(0) operating = 1 + icon_state = "dominator-[gang.color]" + SetLuminosity(3) SSmachine.processing += src gang.message_gangtools("Hostile takeover in progress: Estimated [time] minutes until victory.[gang.dom_attempts ? "" : " This is your final attempt."]") @@ -194,46 +196,14 @@ if(G != gang) G.message_gangtools("Enemy takeover attempt detected in [locname]: Estimated [time] minutes until our defeat.",1,1) -/obj/machinery/dominator/attack_alien(mob/living/user) - user.do_attack_animation(src) - playsound(src, 'sound/effects/bang.ogg', 50, 1) - user.visible_message("[user] smashes against [src] with its claws.",\ - "You smash against [src] with your claws.",\ - "You hear metal scraping.") - healthcheck(15) - -/obj/machinery/dominator/attack_animal(mob/living/user) - if(!isanimal(user)) - return - var/mob/living/simple_animal/M = user - M.do_attack_animation(src) - if(M.melee_damage_upper <= 0) - return - healthcheck(M.melee_damage_upper) - -/obj/machinery/dominator/mech_melee_attack(obj/mecha/M) - if(M.damtype == "brute") - playsound(src, 'sound/effects/bang.ogg', 50, 1) - visible_message("[M.name] has hit [src].") - healthcheck(M.force) - return - /obj/machinery/dominator/attack_hulk(mob/user) - playsound(src, 'sound/effects/bang.ogg', 50, 1) user.visible_message("[user] smashes [src].",\ "You punch [src].",\ "You hear metal being slammed.") - healthcheck(5) + take_damage(5) + +/obj/machinery/dominator/attacked_by(obj/item/I, mob/living/user) + add_fingerprint(user) + ..() + -/obj/machinery/dominator/attackby(obj/item/weapon/I, mob/living/user, params) - if(istype(I, /obj/item/weapon)) - add_fingerprint(user) - user.changeNext_move(CLICK_CD_MELEE) - user.do_attack_animation(src) - if( (I.flags&NOBLUDGEON) || !I.force ) - return - playsound(src, 'sound/weapons/smash.ogg', 50, 1) - visible_message("[user] has hit \the [src] with [I].") - if(I.damtype == BURN || I.damtype == BRUTE) - healthcheck(I.force) - return diff --git a/code/game/machinery/PDApainter.dm b/code/game/machinery/PDApainter.dm index fce5479c697..4ff95775e70 100644 --- a/code/game/machinery/PDApainter.dm +++ b/code/game/machinery/PDApainter.dm @@ -7,6 +7,7 @@ anchored = 1 var/obj/item/device/pda/storedpda = null var/list/colorlist = list() + var/health = 100 /obj/machinery/pdapainter/update_icon() @@ -45,7 +46,7 @@ power_change() return - if(istype(O, /obj/item/device/pda)) + else if(istype(O, /obj/item/device/pda)) if(storedpda) user << "There is already a PDA inside!" return @@ -59,27 +60,65 @@ P.add_fingerprint(user) update_icon() + else if(istype(O, /obj/item/weapon/weldingtool) && user.a_intent != "harm") + var/obj/item/weapon/weldingtool/WT = O + if(stat & BROKEN) + if(WT.remove_fuel(0,user)) + user.visible_message("[user] is repairing [src].", \ + "You begin repairing [src]...", \ + "You hear welding.") + playsound(loc, 'sound/items/Welder.ogg', 40, 1) + if(do_after(user,40/WT.toolspeed, 1, target = src)) + if(!WT.isOn() || !(stat & BROKEN)) + return + user << "You repair [src]." + playsound(loc, 'sound/items/Welder2.ogg', 50, 1) + stat &= ~BROKEN + health = initial(health) + update_icon() + else + user << "[src] does not need repairs." + else + return ..() + +/obj/machinery/pdapainter/take_damage(damage, damage_type = BRUTE, sound_effect = 1) + switch(damage_type) + if(BRUTE) + if(sound_effect) + if(damage) + playsound(loc, 'sound/weapons/smash.ogg', 50, 1) + else + playsound(loc, 'sound/weapons/tap.ogg', 50, 1) + if(BURN) + if(sound_effect) + playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) + else + return + if(!(stat & BROKEN)) + health -= damage + if(health <= 0) + stat |= BROKEN + update_icon() /obj/machinery/pdapainter/attack_hand(mob/user) - ..() + if(..()) + add_fingerprint(user) - src.add_fingerprint(user) + if(storedpda) + var/obj/item/device/pda/P + P = input(user, "Select your color!", "PDA Painting") as null|anything in colorlist + if(!P) + return + if(!in_range(src, user)) + return + if(!storedpda)//is the pda still there? + return + storedpda.icon_state = P.icon_state + storedpda.desc = P.desc + ejectpda() - if(storedpda) - var/obj/item/device/pda/P - P = input(user, "Select your color!", "PDA Painting") as null|anything in colorlist - if(!P) - return - if(!in_range(src, user)) - return - if(!storedpda)//is the pda still there? - return - storedpda.icon_state = P.icon_state - storedpda.desc = P.desc - ejectpda() - - else - user << "The [src] is empty." + else + user << "The [src] is empty." /obj/machinery/pdapainter/verb/ejectpda() diff --git a/code/game/machinery/announcement_system.dm b/code/game/machinery/announcement_system.dm index e83bff6774a..29af1ab1e18 100644 --- a/code/game/machinery/announcement_system.dm +++ b/code/game/machinery/announcement_system.dm @@ -73,26 +73,19 @@ var/list/announcement_systems = list() /obj/machinery/announcement_system/attackby(obj/item/P, mob/user, params) if(istype(P, /obj/item/weapon/screwdriver)) + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + panel_open = !panel_open if(!panel_open) - playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - user << "You open the maintenance hatch of [src]." - panel_open = 1 - else - playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - user << "You close the maintenance hatch of [src]." - panel_open = 0 + user << "You [panel_open ? "open" : "close"] the maintenance hatch of [src]." update_icon() + else if(default_deconstruction_crowbar(P)) return - - if(panel_open) - default_deconstruction_crowbar(P) - if(istype(P, /obj/item/device/multitool) && broken) - user << "You reset [src]'s firmware." - broken = 0 - update_icon() - return - - return ..() + else if(istype(P, /obj/item/device/multitool) && panel_open && broken) + user << "You reset [src]'s firmware." + broken = 0 + update_icon() + else + return ..() /obj/machinery/announcement_system/proc/CompileText(str, user, rank) //replaces user-given variables with actual thingies. str = replacetext(str, "%PERSON", "[user]") diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 600f0793715..648339bcbf7 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -63,7 +63,7 @@ if(assembly) qdel(assembly) assembly = null - if(istype(bug)) + if(bug) bug.bugged_cameras -= src.c_tag if(bug.current == src) bug.current = null @@ -110,9 +110,13 @@ /obj/machinery/camera/ex_act(severity, target) if(src.invuln) return - else - ..() - return + switch(severity) + if(1) + qdel(src) + if(2) + take_damage(50, BRUTE, 0) + else + take_damage(rand(30,60), BRUTE, 0) /obj/machinery/camera/proc/setViewRange(num = 7) src.view_range = num @@ -123,17 +127,6 @@ return user.electrocute_act(10, src) -/obj/machinery/camera/attack_paw(mob/living/carbon/alien/humanoid/user) - if(!istype(user)) - return - user.do_attack_animation(src) - add_hiddenprint(user) - visible_message("\The [user] slashes at [src]!") - playsound(src.loc, 'sound/weapons/slash.ogg', 100, 1) - health = max(0, health - 30) - if(!health && status) - toggle_cam(user, 0) - /obj/machinery/camera/attackby(obj/W, mob/living/user, params) var/msg = "You attach [W] into the assembly's inner circuits." var/msg2 = "[src] already has that upgrade!" @@ -173,6 +166,7 @@ user << "[msg]" else user << "[msg2]" + return else if(istype(W, /obj/item/stack/sheet/mineral/plasma)) if(!isEmpProof()) @@ -181,6 +175,8 @@ qdel(W) else user << "[msg2]" + return + else if(istype(W, /obj/item/device/assembly/prox_sensor)) if(!isMotion()) upgradeMotion() @@ -188,6 +184,7 @@ qdel(W) else user << "[msg2]" + return // OTHER if((istype(W, /obj/item/weapon/paper) || istype(W, /obj/item/device/pda)) && isliving(user)) @@ -220,34 +217,52 @@ else if (O.client && O.client.eye == src) O << "[U] holds \a [itemname] up to one of the cameras ..." O << browse(text("[][]", itemname, info), text("window=[]", itemname)) + return - else if (istype(W, /obj/item/device/camera_bug)) - if (!src.can_use()) + else if(istype(W, /obj/item/device/camera_bug)) + if(!can_use()) user << "Camera non-functional." return - if(istype(src.bug)) + if(bug) user << "Camera bug removed." - src.bug.bugged_cameras -= src.c_tag - src.bug = null + bug.bugged_cameras -= src.c_tag + bug = null else user << "Camera bugged." - src.bug = W - src.bug.bugged_cameras[src.c_tag] = src + bug = W + bug.bugged_cameras[src.c_tag] = src + return + + else if(istype(W, /obj/item/weapon/pai_cable)) + var/obj/item/weapon/pai_cable/cable = W + cable.plugin(src, user) + return else if(istype(W, /obj/item/device/laser_pointer)) var/obj/item/device/laser_pointer/L = W L.laser_act(src, user) + return + return ..() - else - if(W.force >= 10) //fairly simplistic, but will do for now. - user.changeNext_move(CLICK_CD_MELEE) - visible_message("[user] hits [src] with [W]!", "You hit [src] with [W]!") - health = max(0, health - W.force) - user.do_attack_animation(src) - if(!health && status) - triggerCameraAlarm() - toggle_cam(user, 1) - return +/obj/machinery/camera/take_damage(damage, damage_type = BRUTE, sound_effect = 1) + switch(damage_type) + if(BRUTE) + if(sound_effect) + if(damage) + playsound(src, 'sound/weapons/smash.ogg', 50, 1) + else + playsound(src, 'sound/weapons/tap.ogg', 50, 1) + if(BURN) + if(sound_effect) + playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) + else + return + if(damage < 10) //camera has a damage resistance threshold + return + health = max(0, health - damage) + if(!health && status) + triggerCameraAlarm() + toggle_cam(null, 0) /obj/machinery/camera/proc/toggle_cam(mob/user, displaymessage = 1) status = !status @@ -373,12 +388,9 @@ else src.SetLuminosity(0) -/obj/machinery/camera/bullet_act(obj/item/projectile/proj) - if(proj.damage_type == BRUTE) - health = max(0, health - proj.damage) - if(!health && status) - triggerCameraAlarm() - toggle_cam(null, 1) +/obj/machinery/camera/bullet_act(obj/item/projectile/P) + . = ..() + take_damage(P.damage, P.damage_type, 0) /obj/machinery/camera/portable //Cameras which are placed inside of things, such as helmets. var/turf/prev_turf diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm index c67b1b2f56b..a6f8eb6eb01 100644 --- a/code/game/machinery/computer/computer.dm +++ b/code/game/machinery/computer/computer.dm @@ -12,6 +12,7 @@ var/brightness_on = 2 var/icon_keyboard = "generic_key" var/icon_screen = "generic" + var/computer_health = 25 /obj/machinery/computer/New(location, obj/item/weapon/circuitboard/C) ..(location) @@ -32,7 +33,10 @@ return 1 /obj/machinery/computer/emp_act(severity) - if(prob(20/severity)) set_broken() + if(severity == 1) + take_damage(rand(15,30), BRUTE, 0) + else + take_damage(rand(15,25), BRUTE, 0) ..() /obj/machinery/computer/ex_act(severity, target) @@ -42,25 +46,17 @@ switch(severity) if(1) qdel(src) - return if(2) - if (prob(25)) + if(prob(25)) qdel(src) - return - if (prob(50)) - verbs.Cut() - set_broken() + else + take_damage(rand(20,30), BRUTE, 0) if(3) - if (prob(25)) - verbs.Cut() - set_broken() - else - return + take_damage(rand(10,30), BRUTE, 0) -/obj/machinery/computer/bullet_act(obj/item/projectile/Proj) - if(prob(Proj.damage)) - if((Proj.damage_type == BRUTE || Proj.damage_type == BURN)) - set_broken() + +/obj/machinery/computer/bullet_act(obj/item/projectile/P) + take_damage(P.damage, P.damage_type, 0) ..() /obj/machinery/computer/update_icon() @@ -83,24 +79,19 @@ update_icon() return -/obj/machinery/computer/proc/set_broken() - if(circuit) //no circuit, no breaking - stat |= BROKEN - update_icon() - return - /obj/machinery/computer/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/weapon/screwdriver) && circuit && !(flags&NODECONSTRUCT)) playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) user << " You start to disconnect the monitor..." if(do_after(user, 20/I.toolspeed, target = src)) + deconstruction() var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc ) A.circuit = circuit A.anchored = 1 circuit = null for (var/obj/C in src) C.loc = src.loc - if (src.stat & BROKEN) + if (stat & BROKEN) user << "The broken glass falls out." new /obj/item/weapon/shard( src.loc ) A.state = 3 @@ -110,30 +101,25 @@ A.state = 4 A.icon_state = "4" qdel(src) - return + else + return ..() -/obj/machinery/computer/attack_paw(mob/living/user) - user.do_attack_animation(src) - if(circuit) - if(prob(10)) - user.visible_message("[user.name] smashes the [src.name] with its paws.",\ - "You smash the [src.name] with your paws.",\ - "You hear a smashing sound.") - set_broken() +/obj/machinery/computer/take_damage(damage, damage_type = BRUTE, sound_effect = 1) + switch(damage_type) + if(BRUTE) + if(sound_effect) + if(stat & BROKEN) + playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1) + else + playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1) + if(BURN) + if(sound_effect) + playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) + else return - user.visible_message("[user.name] smashes against the [src.name] with its paws.",\ - "You smash against the [src.name] with your paws.",\ - "You hear hear a clicking sound.") - -/obj/machinery/computer/attack_alien(mob/living/user) - user.do_attack_animation(src) - if(circuit) - if(prob(80)) - user.visible_message("[user.name] smashes the [src.name] with its claws.",\ - "You smash the [src.name] with your claws.",\ - "You hear a smashing sound.") - set_broken() - return - user.visible_message("[user.name] smashes against the [src.name] with its claws.",\ - "You smash against the [src.name] with your claws.",\ - "You hear a clicking sound.") + computer_health = max(computer_health - damage, 0) + if(circuit) //no circuit, no breaking + if(!computer_health && !(stat & BROKEN)) + playsound(loc, 'sound/effects/Glassbr3.ogg', 100, 1) + stat |= BROKEN + update_icon() diff --git a/code/game/machinery/droneDispenser.dm b/code/game/machinery/droneDispenser.dm index 159e115888a..c2743105444 100644 --- a/code/game/machinery/droneDispenser.dm +++ b/code/game/machinery/droneDispenser.dm @@ -172,7 +172,7 @@ visible_message("[src] [end_create_message]") icon_state = icon_recharging sleep(cooldownTime) - if(stat != BROKEN) + if(!(stat & BROKEN)) icon_state = icon_on else icon_state = icon_off @@ -210,36 +210,50 @@ user << "You insert [stack] sheet[stack > 1 ? "s" : ""] to [src]." if((O && O.loc == src) || !stack) qdel(O) - return - if(istype(O, /obj/item/weapon/weldingtool) && (stat & BROKEN)) - var/obj/item/weapon/weldingtool/WT = O - if(!WT.isOn()) + else if(istype(O, /obj/item/weapon/weldingtool)) + if(stat & BROKEN) + var/obj/item/weapon/weldingtool/WT = O + if(!WT.isOn()) + return + if(WT.get_fuel() < 1) + user << "You need more fuel to complete this task!" + return + playsound(src, 'sound/items/Welder.ogg', 50, 1) + user.visible_message("[user] begins patching up [src] with [WT].", \ + "You begin restoring the damage to [src]...") + if(!do_after(user, 40/O.toolspeed, target = src)) + return + if(!src || !WT.remove_fuel(1, user)) return + user.visible_message("[user] fixes [src]!", \ + "You restore [src] to operation.") + stat &= ~BROKEN + health = max_health + if(!stat) + icon_state = icon_on + else + user << "[src] doesn't need repairs." + else + return ..() + +/obj/machinery/droneDispenser/take_damage(damage, damage_type = BRUTE, sound_effect = 1) + switch(damage_type) + if(BURN) + if(sound_effect) + playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) + if(BRUTE) + if(sound_effect) + if(damage) + playsound(loc, 'sound/weapons/smash.ogg', 50, 1) + else + playsound(loc, 'sound/weapons/tap.ogg', 50, 1) + else return - if(WT.get_fuel() < 1) - user << "You need more fuel to complete this task!" - return - playsound(src, 'sound/items/Welder.ogg', 50, 1) - user.visible_message("[user] begins patching up [src] with [WT].", \ - "You begin restoring the damage to [src]...") - if(!do_after(user, 40/O.toolspeed, target = src)) - return - if(!src || !WT.remove_fuel(1, user)) return - user.visible_message("[user] fixes [src]!", \ - "You restore [src] to operation.") - stat -= BROKEN - icon_state = icon_on - return - if(O.force && stat != BROKEN) - user.visible_message("[user] hits [src] with [O]!", \ - "You hit [src] with [O]!") - playsound(src, O.hitsound, 50, 1) - health = Clamp(health - O.force, 0, max_health) - if(health <= 0) - if(break_message) - audible_message("[src] [break_message]") - if(break_sound) - playsound(src, break_sound, 50, 1) - stat = BROKEN - icon_state = icon_off - return - ..() + health = max(health - damage, 0) + if(!health && !(stat & BROKEN)) + if(break_message) + audible_message("[src] [break_message]") + if(break_sound) + playsound(src, break_sound, 50, 1) + stat |= BROKEN + icon_state = icon_off + diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index 0965843654a..95276267b3b 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -21,6 +21,7 @@ power_channel = ENVIRON var/detecting = 1 var/buildstage = 2 // 2 = complete, 1 = no wires, 0 = circuit gone + var/health = 50 /obj/machinery/firealarm/New(loc, dir, building) ..() @@ -61,9 +62,9 @@ else overlays += "overlay_fire" -/obj/machinery/firealarm/bullet_act(BLAH) - if(prob(50)) - alarm() +/obj/machinery/firealarm/bullet_act(obj/item/projectile/P) + . = ..() + take_damage(P.damage, P.damage_type, 0) /obj/machinery/firealarm/emp_act(severity) if(prob(50 / severity)) @@ -74,11 +75,11 @@ emagged = 1 if(user) user.visible_message("Sparks fly out of the [src]!", - "You emag the [src], disabling its thermal sensors.") + "You emag [src], disabling its thermal sensors.") playsound(src.loc, 'sound/effects/sparks4.ogg', 50, 1) /obj/machinery/firealarm/temperature_expose(datum/gas_mixture/air, temperature, volume) - if(!emagged && detecting && temperature > T0C + 200) + if(!emagged && detecting && !stat && temperature > T0C + 200) alarm() /obj/machinery/firealarm/proc/alarm() @@ -200,4 +201,25 @@ playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) qdel(src) return - return ..() \ No newline at end of file + return ..() + +/obj/machinery/firealarm/take_damage(damage, damage_type = BRUTE, sound_effect = 1) + switch(damage_type) + if(BRUTE) + if(sound_effect) + if(damage) + playsound(loc, 'sound/weapons/smash.ogg', 50, 1) + else + playsound(loc, 'sound/weapons/tap.ogg', 50, 1) + if(BURN) + if(sound_effect) + playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) + else + return + if(!(stat & BROKEN)) + health -= damage + if(health <= 0) + stat |= BROKEN + update_icon() + else if(prob(33)) + alarm() diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 1c32cd0aeee..12e87f98ee9 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -137,10 +137,6 @@ Class Procs: dropContents() return ..() -/obj/machinery/attackby(obj/item/weapon/W, mob/user, params) - user.changeNext_move(CLICK_CD_MELEE) - ..() - /obj/machinery/proc/locate_machinery() return @@ -243,6 +239,61 @@ Class Procs: //////////////////////////////////////////////////////////////////////////////////////////// +/obj/machinery/mech_melee_attack(obj/mecha/M) + if(M.damtype == BRUTE || M.damtype == BURN) + visible_message("[M.name] has hit [src].") + take_damage(M.force*2, M.damtype) // multiplied by 2 so we can hit machines hard but not be overpowered against mobs. + return 1 + return 0 + +/obj/machinery/attacked_by(obj/item/I, mob/living/user) + ..() + take_damage(I.force, I.damtype, 1) + +/obj/machinery/proc/take_damage(damage, damage_type = BRUTE, sound_effect = 1) + switch(damage_type) + if(BRUTE) + if(sound_effect) + if(damage) + playsound(loc, 'sound/weapons/smash.ogg', 50, 1) + else + playsound(loc, 'sound/weapons/tap.ogg', 50, 1) + if(BURN) + if(sound_effect) + playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) + +//phil235 + + + +/obj/machinery/attack_alien(mob/living/carbon/alien/humanoid/user) + user.changeNext_move(CLICK_CD_MELEE) + user.do_attack_animation(src) + add_hiddenprint(user) + visible_message("\The [user] slashes at [src]!") + playsound(src.loc, 'sound/weapons/slash.ogg', 100, 1) + take_damage(20, BRUTE, 0) + +/obj/machinery/attack_animal(mob/living/simple_animal/M) + M.changeNext_move(CLICK_CD_MELEE) + M.do_attack_animation(src) + if(M.melee_damage_upper > 0) // phil235 use M.attack_text verb? + M.visible_message("[M.name] smashes against \the [src.name].",\ + "You smash against the [src.name].") + take_damage(M.melee_damage_upper, M.melee_damage_type, 1) + + +/obj/machinery/attack_paw(mob/living/user) + if(user.a_intent != "harm") + return attack_hand(user) + else + user.changeNext_move(CLICK_CD_MELEE) + user.do_attack_animation(src) + user.visible_message("[user.name] smashes against \the [src.name] with its paws.",\ + "You smash against the [src.name] with your paws.") + take_damage(4, BRUTE, 1) + + /obj/machinery/attack_ai(mob/user) if(isrobot(user))// For some reason attack_robot doesn't work var/mob/living/silicon/robot/R = user @@ -251,8 +302,6 @@ Class Procs: else return attack_hand(user) -/obj/machinery/attack_paw(mob/user) - return attack_hand(user) //set_machine must be 0 if clicking the machinery doesn't bring up a dialog /obj/machinery/attack_hand(mob/user, check_power = 1, set_machine = 1) diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index 3eedfeec907..4005154672f 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -175,8 +175,6 @@ var/list/obj/machinery/newscaster/allCasters = list() verb_say = "beeps" verb_ask = "beeps" verb_exclaim = "beeps" - var/isbroken = 0 - var/ispowered = 1 var/screen = 0 var/paper_remaining = 15 var/securityCaster = 0 @@ -188,11 +186,12 @@ var/list/obj/machinery/newscaster/allCasters = list() var/obj/item/weapon/photo/photo = null var/channel_name = "" var/c_locked=0 - var/hitstaken = 0 + var/health = 60 var/datum/newscaster/feed_channel/viewing_channel = null var/allow_comments = 1 luminosity = 0 anchored = 1 + var/hitstaken = 0 //phil235 to be removed, it's used in a map var edit. /obj/machinery/newscaster/security_unit name = "security newscaster" @@ -217,32 +216,35 @@ var/list/obj/machinery/newscaster/allCasters = list() return ..() /obj/machinery/newscaster/update_icon() - if(!ispowered || isbroken) - icon_state = "newscaster_off" - if(isbroken) - overlays.Cut() - overlays += image(icon, "crack3") - return overlays.Cut() - if(news_network.wanted_issue.active) - icon_state = "newscaster_wanted" - return - if(alert) - overlays += "newscaster_alert" - if(hitstaken > 0) - overlays += image(icon, "crack[hitstaken]") - icon_state = "newscaster_normal" + if(stat & (NOPOWER|BROKEN)) + icon_state = "newscaster_off" + else + if(news_network.wanted_issue.active) + icon_state = "newscaster_wanted" + else + icon_state = "newscaster_normal" + if(alert) + overlays += "newscaster_alert" + switch(health) + if(45 to 60) + return + if(30 to 45) + overlays += "crack1" + if(15 to 30) + overlays += "crack2" + else + overlays += "crack3" + /obj/machinery/newscaster/power_change() - if(isbroken) + if(stat & BROKEN) return if(powered()) - ispowered = 1 stat &= ~NOPOWER update_icon() else spawn(rand(0, 15)) - ispowered = 0 stat |= NOPOWER update_icon() @@ -251,21 +253,18 @@ var/list/obj/machinery/newscaster/allCasters = list() if(1) qdel(src) if(2) - isbroken=1 if(prob(50)) qdel(src) else - update_icon() + take_damage(rand(40,80), BRUTE, 0) else - if(prob(50)) - isbroken=1 - update_icon() + take_damage(rand(20,40), BRUTE, 0) /obj/machinery/newscaster/attack_ai(mob/user) return attack_hand(user) /obj/machinery/newscaster/attack_hand(mob/user) - if(!ispowered || isbroken) + if(stat & (NOPOWER|BROKEN)) return if(istype(user, /mob/living/carbon/human) || istype(user,/mob/living/silicon) ) var/mob/living/human_or_robot_user = user @@ -327,11 +326,11 @@ var/list/obj/machinery/newscaster/allCasters = list() if(6) dat+="ERROR: Could not submit Feed story to Network.

" if(channel_name=="") - dat+="•Invalid receiving channel name.
" + dat+="?Invalid receiving channel name.
" if(scanned_user=="Unknown") - dat+="•Channel author unverified.
" + dat+="?Channel author unverified.
" if(msg == "" || msg == "\[REDACTED\]") - dat+="•Invalid message body.
" + dat+="?Invalid message body.
" dat+="
Return
" if(7) dat+="ERROR: Could not submit Feed Channel to Network.

" @@ -342,18 +341,18 @@ var/list/obj/machinery/newscaster/allCasters = list() else existing_authors += FC.author if(scanned_user in existing_authors) - dat+="•There already exists a Feed channel under your name.
" + dat+="?There already exists a Feed channel under your name.
" if(channel_name=="" || channel_name == "\[REDACTED\]") - dat+="•Invalid channel name.
" + dat+="?Invalid channel name.
" var/check = 0 for(var/datum/newscaster/feed_channel/FC in news_network.network_channels) if(FC.channel_name == channel_name) check = 1 break if(check) - dat+="•Channel name already in use.
" + dat+="?Channel name already in use.
" if(scanned_user=="Unknown") - dat+="•Channel author unverified.
" + dat+="?Channel author unverified.
" dat+="
Return
" if(8) var/total_num=length(news_network.network_channels) @@ -472,11 +471,11 @@ var/list/obj/machinery/newscaster/allCasters = list() if(16) dat+="ERROR: Wanted Issue rejected by Network.

" if(channel_name=="" || channel_name == "\[REDACTED\]") - dat+="•Invalid name for person wanted.
" + dat+="?Invalid name for person wanted.
" if(scanned_user=="Unknown") - dat+="•Issue author unverified.
" + dat+="?Issue author unverified.
" if(msg == "" || msg == "\[REDACTED\]") - dat+="•Invalid description.
" + dat+="?Invalid description.
" dat+="
Return
" if(17) dat+="Wanted Issue successfully deleted from Circulation
" @@ -724,39 +723,66 @@ var/list/obj/machinery/newscaster/allCasters = list() user << "You start [anchored ? "un" : ""]securing [name]..." playsound(loc, 'sound/items/Ratchet.ogg', 50, 1) if(do_after(user, 60/I.toolspeed, target = src)) - user << "You [anchored ? "un" : ""]secure [name]." - new /obj/item/wallframe/newscaster(loc) playsound(loc, 'sound/items/Deconstruct.ogg', 50, 1) - qdel(src) - return - if(isbroken) - playsound(loc, 'sound/effects/hit_on_shattered_glass.ogg', 100, 1) - audible_message("[user.name] further abuses the shattered [name].", null, 5 ) - else - if(istype(I, /obj/item/weapon)) - user.do_attack_animation(src) - var/obj/item/weapon/W = I - if(W.damtype == STAMINA) - return - if(W.force <15) - audible_message("[user.name] hits the [name] with the [W.name] with no visible effect.", null , 5 ) - playsound(loc, 'sound/effects/Glasshit.ogg', 100, 1) + if(stat & BROKEN) + user << "The broken remains of [src] fall on the ground." + new /obj/item/stack/sheet/metal(loc, 5) + new /obj/item/weapon/shard(loc) + new /obj/item/weapon/shard(loc) else - hitstaken++ - if(hitstaken==3) - audible_message("[user.name] smashes the [name]!", null, 5 ) - isbroken=1 - playsound(loc, 'sound/effects/Glassbr3.ogg', 100, 1) - else - audible_message("[user.name] forcefully slams the [name] with the [I.name]!", null, 5 ) - playsound(loc, 'sound/effects/Glasshit.ogg', 100, 1) + user << "You [anchored ? "un" : ""]secure [name]." + new /obj/item/wallframe/newscaster(loc) + qdel(src) + else if(istype(I, /obj/item/weapon/weldingtool) && user.a_intent != "harm") + var/obj/item/weapon/weldingtool/WT = I + if(stat & BROKEN) + if(WT.remove_fuel(0,user)) + user.visible_message("[user] is repairing [src].", \ + "You begin repairing [src]...", \ + "You hear welding.") + playsound(loc, 'sound/items/Welder.ogg', 40, 1) + if(do_after(user,40/WT.toolspeed, 1, target = src)) + if(!WT.isOn() || !(stat & BROKEN)) + return + user << "You repair [src]." + playsound(loc, 'sound/items/Welder2.ogg', 50, 1) + stat &= ~BROKEN + update_icon() else - user << "This does nothing!" - update_icon() + user << "[src] does not need repairs." + else + return ..() + +/obj/machinery/newscaster/take_damage(damage, damage_type = BRUTE, sound_effect = 1) + switch(damage_type) + if(BRUTE) + if(sound_effect) + if(stat & BROKEN) + playsound(loc, 'sound/effects/hit_on_shattered_glass.ogg', 100, 1) + else + playsound(loc, 'sound/effects/Glasshit.ogg', 90, 1) + if(BURN) + if(sound_effect) + playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) + else + return + if(damage < 15) //so it can't be broken with a small weapon. + return + if(!(stat & BROKEN)) + health -= damage + if(health <= 0) + stat |= BROKEN + playsound(loc, 'sound/effects/Glassbr3.ogg', 100, 1) + update_icon() + /obj/machinery/newscaster/attack_paw(mob/user) - user << "The newscaster controls are far too complicated for your tiny brain!" - return + if(user.a_intent != "harm") + user << "The newscaster controls are far too complicated for your tiny brain!" + else + take_damage(5) + +//phil235 missing attack_alien, attack_animal, bullet_act, etc... /obj/machinery/newscaster/proc/AttachPhoto(mob/user) if(photo) @@ -895,7 +921,7 @@ var/list/obj/machinery/newscaster/allCasters = list() switch(screen) if(0) //Cover dat+="
The Griffon
" - dat+="
Nanotrasen-standard newspaper, for use on Nanotrasen© Space Facilities

" + dat+="
Nanotrasen-standard newspaper, for use on Nanotrasen? Space Facilities

" if(isemptylist(news_content)) if(wantedAuthor) dat+="Contents:
    **Important Security Announcement** \[page [pages+2]\]
" @@ -1022,4 +1048,6 @@ var/list/obj/machinery/newscaster/allCasters = list() return scribble_page = curr_page scribble = s - attack_self(user) \ No newline at end of file + attack_self(user) + else + return ..() \ No newline at end of file diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index f367cb641b5..aa169ff97b6 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -64,7 +64,7 @@ var/list/obj/machinery/requests_console/allConsoles = list() /obj/machinery/requests_console/update_icon() if(open) - if(hackState == 0) + if(!hackState) icon_state="req_comp_open" else icon_state="req_comp_rewired" @@ -135,7 +135,7 @@ var/list/obj/machinery/requests_console/allConsoles = list() dat += "" dat += "[dpt]" dat += "Normal High" - if (hackState == 1) + if(hackState) dat += "EXTREME" dat += "" dat += "" @@ -150,7 +150,7 @@ var/list/obj/machinery/requests_console/allConsoles = list() dat += "" dat += "[dpt]" dat += "Normal High" - if (hackState == 1) + if(hackState) dat += "EXTREME" dat += "" dat += "" @@ -165,7 +165,7 @@ var/list/obj/machinery/requests_console/allConsoles = list() dat += "" dat += "[dpt]" dat += "Normal High" - if (hackState == 1) + if(hackState) dat += "EXTREME" dat += "" dat += "" @@ -479,34 +479,29 @@ var/list/obj/machinery/requests_console/allConsoles = list() SetLuminosity(2) /obj/machinery/requests_console/attackby(obj/item/weapon/O, mob/user, params) - if (istype(O, /obj/item/weapon/crowbar)) + if(istype(O, /obj/item/weapon/crowbar)) if(open) user << "You close the maintenance panel." open = 0 - icon_state="req_comp0" else user << "You open the maintenance panel." open = 1 - if(hackState == 0) - icon_state="req_comp_open" - else if(hackState == 1) - icon_state="req_comp_rewired" - if (istype(O, /obj/item/weapon/screwdriver)) + update_icon() + return + if(istype(O, /obj/item/weapon/screwdriver)) if(open) - if(hackState == 0) + hackState = !hackState + if(hackState) user << "You modify the wiring." - hackState = 1 - icon_state="req_comp_rewired" - else if(hackState == 1) + else user << "You reset the wiring." - hackState = 0 - icon_state="req_comp_open" + update_icon() else - user << "You can't do much with that!" - update_icon() + user << "You must open the maintenance panel first!" + return var/obj/item/weapon/card/id/ID = O.GetID() - if (ID) + if(ID) if(screen == 9) msgVerified = "Verified by [ID.registered_name] ([ID.assignment])" updateUsrDialog() @@ -517,9 +512,11 @@ var/list/obj/machinery/requests_console/allConsoles = list() announceAuth = 0 user << "You are not authorized to send announcements!" updateUsrDialog() + return if (istype(O, /obj/item/weapon/stamp)) if(screen == 9) var/obj/item/weapon/stamp/T = O msgStamped = "Stamped with the [T.name]" updateUsrDialog() - return + return + return ..() diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index a00cbf3d205..a26b66350de 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -33,35 +33,25 @@ /obj/machinery/shield/CanAtmosPass(turf/T) return !density -/obj/machinery/shield/attackby(obj/item/weapon/W, mob/user, params) - ..() - if(W.damtype == BRUTE || W.damtype == BURN) - take_damage(W.force) - -/obj/machinery/shield/bullet_act(obj/item/projectile/Proj) - ..() - take_damage(Proj.damage) +/obj/machinery/shield/bullet_act(obj/item/projectile/P) + . = ..() + take_damage(P.damage, P.damage_type) /obj/machinery/shield/ex_act(severity, target) switch(severity) if(1) - if (prob(75)) - qdel(src) + take_damage(rand(180,260), BRUTE, 0) if(2) - if (prob(50)) - qdel(src) + take_damage(rand(150,230), BRUTE, 0) if(3) - if (prob(25)) - qdel(src) - return + take_damage(rand(80,150), BRUTE, 0) /obj/machinery/shield/emp_act(severity) switch(severity) if(1) qdel(src) if(2) - if(prob(50)) - qdel(src) + take_damage(50, BRUTE, 0) /obj/machinery/shield/blob_act() qdel(src) @@ -77,14 +67,21 @@ ..() take_damage(tforce) -/obj/machinery/shield/proc/take_damage(damage) - playsound(loc, 'sound/effects/EMPulse.ogg', 75, 1) +/obj/machinery/shield/take_damage(damage, damage_type = BRUTE, sound_effect = 1) + switch(damage_type) + if(BURN) + if(sound_effect) + playsound(loc, 'sound/effects/EMPulse.ogg', 75, 1) + if(BRUTE) + if(sound_effect) + playsound(loc, 'sound/effects/EMPulse.ogg', 75, 1) + else + return opacity = 1 spawn(20) opacity = 0 health -= damage if(health <= 0) - visible_message("[src] dissipates.") qdel(src) /obj/machinery/shieldgen @@ -100,9 +97,7 @@ var/const/max_health = 100 var/health = max_health var/active = 0 - var/malfunction = 0 //Malfunction causes parts of the shield to slowly dissapate var/list/deployed_shields = list() - var/is_open = 0 //Whether or not the wires are exposed var/locked = 0 var/shield_range = 4 @@ -114,20 +109,22 @@ /obj/machinery/shieldgen/proc/shields_up() - if(active) return 0 //If it's already turned on, how did this get called? + if(active) + return 0 //If it's already turned on, how did this get called? - src.active = 1 + active = 1 update_icon() for(var/turf/target_tile in range(shield_range, src)) if (istype(target_tile,/turf/open/space) && !(locate(/obj/machinery/shield) in target_tile)) - if (malfunction && prob(33) || !malfunction) + if(!(stat & BROKEN) || prob(33)) deployed_shields += new /obj/machinery/shield(target_tile) /obj/machinery/shieldgen/proc/shields_down() - if(!active) return 0 //If it's already off, how did this get called? + if(!active) + return 0 //If it's already off, how did this get called? - src.active = 0 + active = 0 update_icon() for(var/obj/machinery/shield/shield_tile in deployed_shields) @@ -135,66 +132,70 @@ deployed_shields.Cut() /obj/machinery/shieldgen/process() - if(malfunction && active) + if((stat & BROKEN) && active) if(deployed_shields.len && prob(5)) qdel(pick(deployed_shields)) - return -/obj/machinery/shieldgen/proc/checkhp() - if(health <= 30) - src.malfunction = 1 - if(health <= 0) - qdel(src) - update_icon() - return +/obj/machinery/shieldgen/take_damage(damage, damage_type = BRUTE, sound_effect = 1) + switch(damage_type) + if(BRUTE) + if(sound_effect) + if(damage) + playsound(loc, 'sound/weapons/smash.ogg', 50, 1) + else + playsound(loc, 'sound/weapons/tap.ogg', 50, 1) + if(BURN) + if(sound_effect) + playsound(loc, 'sound/items/Welder.ogg', 40, 1) + else + return + health = max(health - damage, 0) + if(health <= 0 && !(stat && BROKEN)) + stat |= BROKEN + update_icon() /obj/machinery/shieldgen/ex_act(severity, target) switch(severity) if(1) - src.health -= 75 - src.checkhp() + qdel(src) if(2) - src.health -= 30 - if (prob(15)) - src.malfunction = 1 - src.checkhp() + if(prob(33)) + qdel(src) + else + take_damage(rand(80,120), BRUTE, 0) if(3) - src.health -= 10 - src.checkhp() - return + take_damage(rand(40,80), BRUTE, 0) /obj/machinery/shieldgen/emp_act(severity) switch(severity) if(1) - src.health /= 2 //cut health in half - malfunction = 1 + health = 0 + stat |= BROKEN locked = pick(0,1) + update_icon() if(2) - if(prob(50)) - src.health *= 0.3 //chop off a third of the health - malfunction = 1 - checkhp() + take_damage(rand(80,120), BRUTE, 0) /obj/machinery/shieldgen/attack_hand(mob/user) if(locked) user << "The machine is locked, you are unable to use it!" return - if(is_open) + if(panel_open) user << "The panel must be closed before operating this machine!" return - if (src.active) + if (active) user.visible_message("[user] deactivated \the [src].", \ "You deactivate \the [src].", \ "You hear heavy droning fade out.") - src.shields_down() + shields_down() else if(anchored) user.visible_message("[user] activated \the [src].", \ "You activate \the [src].", \ "You hear heavy droning.") - src.shields_up() + shields_up() else user << "The device must first be secured to the floor!" return @@ -202,14 +203,12 @@ /obj/machinery/shieldgen/attackby(obj/item/weapon/W, mob/user, params) if(istype(W, /obj/item/weapon/screwdriver)) playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1) - if(is_open) - user << "You close the panel." - is_open = 0 - else + panel_open = !panel_open + if(panel_open) user << "You open the panel and expose the wiring." - is_open = 1 - - else if(istype(W, /obj/item/stack/cable_coil) && malfunction && is_open) + else + user << "You close the panel." + else if(istype(W, /obj/item/stack/cable_coil) && (stat & BROKEN) && panel_open) var/obj/item/stack/cable_coil/coil = W if (coil.get_amount() < 1) user << "You need one length of cable to repair [src]!" @@ -220,7 +219,7 @@ return coil.use(1) health = max_health - malfunction = 0 + stat &= ~BROKEN user << "You repair \the [src]." update_icon() @@ -237,31 +236,30 @@ user << "You unsecure \the [src] from the floor!" if(active) user << "\The [src] shuts off!" - src.shields_down() + shields_down() anchored = 0 - - else if(istype(W, /obj/item/weapon/card/id) || istype(W, /obj/item/device/pda)) - if(src.allowed(user)) - src.locked = !src.locked - user << "You [src.locked ? "lock" : "unlock"] the controls." + else if(W.GetID()) + if(allowed(user)) + locked = !locked + user << "You [locked ? "lock" : "unlock"] the controls." else user << "Access denied." else - ..() + return ..() /obj/machinery/shieldgen/emag_act() - if(!malfunction) - malfunction = 1 + if(!(stat & BROKEN)) + stat |= BROKEN + health = 0 update_icon() /obj/machinery/shieldgen/update_icon() if(active) - src.icon_state = malfunction ? "shieldonbr":"shieldon" + icon_state = (stat & BROKEN) ? "shieldonbr":"shieldon" else - src.icon_state = malfunction ? "shieldoffbr":"shieldoff" - return + icon_state = (stat & BROKEN) ? "shieldoffbr":"shieldoff" ////FIELD GEN START //shameless copypasta from fieldgen, powersink, and grille #define maxstoredpower 500 @@ -273,6 +271,8 @@ anchored = 0 density = 1 req_access = list(access_teleporter) + flags = CONDUCT + use_power = 0 var/active = 0 var/power = 0 var/steps = 0 @@ -280,8 +280,6 @@ var/check_delay = 10 var/recalc = 0 var/locked = 1 - var/destroyed = 0 -// var/maxshieldload = 200 var/obj/structure/cable/attached // the attached cable var/storedpower = 0 flags = CONDUCT @@ -312,8 +310,6 @@ if(PN) //runtime errors fixer. They were caused by PN.newload trying to access missing network in case of working on stored power. storedpower += shieldload PN.load += shieldload //uses powernet power. -// message_admins("[PN.load]") -// use_power(250) //uses APC power /obj/machinery/shieldwallgen/attack_hand(mob/user) if(!anchored) @@ -326,21 +322,21 @@ user << "\The [src] needs to be powered by wire underneath!" return 1 - if(src.active >= 1) - src.active = 0 + if(active >= 1) + active = 0 icon_state = "Shield_Gen" user.visible_message("[user] turned \the [src] off.", \ "You turn off \the [src].", \ "You hear heavy droning fade out.") - src.cleanup() + cleanup() else - src.active = 1 + active = 1 icon_state = "Shield_Gen +a" user.visible_message("[user] turned \the [src] on.", \ "You turn on \the [src].", \ "You hear heavy droning.") - src.add_fingerprint(user) + add_fingerprint(user) /obj/machinery/shieldwallgen/process() power() @@ -350,28 +346,26 @@ storedpower = maxstoredpower if(storedpower <= 0) storedpower = 0 -// if(shieldload >= maxshieldload) //there was a loop caused by specifics of process(), so this was needed. -// shieldload = maxshieldload - if(src.active == 1) + if(active == 1) if(!anchored) - src.active = 0 + active = 0 return setup_field(1) setup_field(2) setup_field(4) setup_field(8) src.active = 2 - if(src.active >= 1) - if(src.power == 0) - src.visible_message("The [src.name] shuts down due to lack of power!", \ + if(active >= 1) + if(power == 0) + visible_message("The [src.name] shuts down due to lack of power!", \ "You hear heavy droning fade out.") icon_state = "Shield_Gen" - src.active = 0 - src.cleanup(1) - src.cleanup(2) - src.cleanup(4) - src.cleanup(8) + active = 0 + cleanup(1) + cleanup(2) + cleanup(4) + cleanup(8) /obj/machinery/shieldwallgen/proc/setup_field(NSEW = 0) var/turf/T = src.loc @@ -436,16 +430,16 @@ anchored = 0 return - if(istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) - if (src.allowed(user)) - src.locked = !src.locked + if(W.GetID()) + if (allowed(user)) + locked = !locked user << "You [src.locked ? "lock" : "unlock"] the controls." else user << "Access denied." else add_fingerprint(user) - ..() + return ..() /obj/machinery/shieldwallgen/proc/cleanup(NSEW) var/obj/machinery/shieldwall/F @@ -466,15 +460,16 @@ break /obj/machinery/shieldwallgen/Destroy() - src.cleanup(1) - src.cleanup(2) - src.cleanup(4) - src.cleanup(8) + cleanup(1) + cleanup(2) + cleanup(4) + cleanup(8) return ..() -/obj/machinery/shieldwallgen/bullet_act(obj/item/projectile/Proj) - storedpower -= Proj.damage - ..() +/obj/machinery/shieldwallgen/bullet_act(obj/item/projectile/P) + . = ..() + storedpower -= P.damage + //////////////Containment Field START @@ -525,16 +520,15 @@ gen_secondary.storedpower -=10 -/obj/machinery/shieldwall/bullet_act(obj/item/projectile/Proj) +/obj/machinery/shieldwall/bullet_act(obj/item/projectile/P) + . = ..() if(needs_power) var/obj/machinery/shieldwallgen/G if(prob(50)) G = gen_primary else G = gen_secondary - G.storedpower -= Proj.damage - ..() - return + G.storedpower -= P.damage /obj/machinery/shieldwall/ex_act(severity, target) diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index 86d8993b928..27dc7cba695 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -47,8 +47,7 @@ locked = L user << "You insert the GPS device into the [name]'s slot." else - ..() - return + return ..() /obj/machinery/computer/teleporter/attack_ai(mob/user) src.attack_hand(user) @@ -299,11 +298,11 @@ /obj/machinery/teleport/hub/attackby(obj/item/W, mob/user, params) if(default_deconstruction_screwdriver(user, "tele-o", "tele0", W)) return - if(exchange_parts(user, W)) return - - default_deconstruction_crowbar(W) + if(default_deconstruction_crowbar(W)) + return + return ..() /obj/machinery/teleport/hub/proc/teleport(atom/movable/M as mob|obj, turf/T) var/obj/machinery/computer/teleporter/com = power_station.teleporter_console @@ -405,34 +404,37 @@ return ..() /obj/machinery/teleport/station/attackby(obj/item/weapon/W, mob/user, params) - if(istype(W, /obj/item/device/multitool) && !panel_open) + if(istype(W, /obj/item/device/multitool)) var/obj/item/device/multitool/M = W - if(M.buffer && istype(M.buffer, /obj/machinery/teleport/station) && M.buffer != src) - if(linked_stations.len < efficiency) - linked_stations.Add(M.buffer) - M.buffer = null - user << "You upload the data from the [W.name]'s buffer." - else - user << "This station can't hold more information, try to use better parts." - if(default_deconstruction_screwdriver(user, "controller-o", "controller", W)) + if(panel_open) + M.buffer = src + user << "You download the data to the [W.name]'s buffer." + else + if(M.buffer && istype(M.buffer, /obj/machinery/teleport/station) && M.buffer != src) + if(linked_stations.len < efficiency) + linked_stations.Add(M.buffer) + M.buffer = null + user << "You upload the data from the [W.name]'s buffer." + else + user << "This station can't hold more information, try to use better parts." + return + else if(default_deconstruction_screwdriver(user, "controller-o", "controller", W)) update_icon() return - if(exchange_parts(user, W)) + else if(exchange_parts(user, W)) return - default_deconstruction_crowbar(W) + else if(default_deconstruction_crowbar(W)) + return - if(panel_open) - if(istype(W, /obj/item/device/multitool)) - var/obj/item/device/multitool/M = W - M.buffer = src - user << "You download the data to the [W.name]'s buffer." - return - if(istype(W, /obj/item/weapon/wirecutters)) + else if(istype(W, /obj/item/weapon/wirecutters)) + if(panel_open) link_console_and_hub() user << "You reconnect the station to nearby machinery." return + else + return ..() /obj/machinery/teleport/station/attack_paw() src.attack_hand() diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 756f07068ee..cbc30cb5ede 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -179,9 +179,8 @@ user << "You insert [W] into [src]'s chef compartment." else user << "[src]'s chef compartment does not accept junk food." - return - if(istype(W, /obj/item/weapon/storage/bag/tray)) + else if(istype(W, /obj/item/weapon/storage/bag/tray)) if(!compartment_access_check(user)) return var/obj/item/weapon/storage/T = W @@ -203,7 +202,8 @@ updateUsrDialog() return - ..() + else + return ..() /obj/machinery/vending/snack/proc/compartment_access_check(user) req_access_txt = chef_compartment_access @@ -237,16 +237,20 @@ if(default_unfasten_wrench(user, W, time = 60)) return - if(component_parts && istype(W, /obj/item/weapon/crowbar)) - default_deconstruction_crowbar(W) + if(component_parts) + if(default_deconstruction_crowbar(W)) + return - if(istype(W, /obj/item/weapon/screwdriver) && anchored) - panel_open = !panel_open - user << "You [panel_open ? "open" : "close"] the maintenance panel." - overlays.Cut() - if(panel_open) - overlays += image(icon, "[initial(icon_state)]-panel") - updateUsrDialog() + if(istype(W, /obj/item/weapon/screwdriver)) + if(anchored) + panel_open = !panel_open + user << "You [panel_open ? "open" : "close"] the maintenance panel." + overlays.Cut() + if(panel_open) + overlays += image(icon, "[initial(icon_state)]-panel") + updateUsrDialog() + else + user << "You must first secure [src]." return else if(istype(W, /obj/item/device/multitool)||istype(W, /obj/item/weapon/wirecutters)) if(panel_open) @@ -273,14 +277,14 @@ user << "You loaded [transfered] items in \the [name]." else user << "The [name] is fully stocked." - return; + return else user << "You should probably unscrew the service panel first." else - ..() + return ..() -/obj/machinery/vending/default_deconstruction_crowbar(obj/item/O) +/obj/machinery/vending/deconstruction() var/product_list = list(product_records, hidden_records, coin_records) for(var/i=1, i<=3, i++) for(var/datum/data/vending_product/machine_content in product_list[i]) diff --git a/code/modules/atmospherics/machinery/atmosmachinery.dm b/code/modules/atmospherics/machinery/atmosmachinery.dm index a84f002506a..7997c832e00 100644 --- a/code/modules/atmospherics/machinery/atmosmachinery.dm +++ b/code/modules/atmospherics/machinery/atmosmachinery.dm @@ -122,40 +122,43 @@ Pipelines + Other Objects -> Pipe network return /obj/machinery/atmospherics/attackby(obj/item/weapon/W, mob/user, params) - if(can_unwrench && istype(W, /obj/item/weapon/wrench)) - var/turf/T = get_turf(src) - if (level==1 && isturf(T) && T.intact) - user << "You must remove the plating first!" - return 1 - var/datum/gas_mixture/int_air = return_air() - var/datum/gas_mixture/env_air = loc.return_air() - add_fingerprint(user) + if(istype(W, /obj/item/weapon/wrench)) + if(can_unwrench(user)) + var/turf/T = get_turf(src) + if (level==1 && isturf(T) && T.intact) + user << "You must remove the plating first!" + return 1 + var/datum/gas_mixture/int_air = return_air() + var/datum/gas_mixture/env_air = loc.return_air() + add_fingerprint(user) - var/unsafe_wrenching = FALSE - var/internal_pressure = int_air.return_pressure()-env_air.return_pressure() + var/unsafe_wrenching = FALSE + var/internal_pressure = int_air.return_pressure()-env_air.return_pressure() - playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - user << "You begin to unfasten \the [src]..." - if (internal_pressure > 2*ONE_ATMOSPHERE) - user << "As you begin unwrenching \the [src] a gush of air blows in your face... maybe you should reconsider?" - unsafe_wrenching = TRUE //Oh dear oh dear + playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) + user << "You begin to unfasten \the [src]..." + if (internal_pressure > 2*ONE_ATMOSPHERE) + user << "As you begin unwrenching \the [src] a gush of air blows in your face... maybe you should reconsider?" + unsafe_wrenching = TRUE //Oh dear oh dear - if (do_after(user, 20/W.toolspeed, target = src) && !qdeleted(src)) - user.visible_message( \ - "[user] unfastens \the [src].", \ - "You unfasten \the [src].", \ - "You hear ratchet.") - investigate_log("was REMOVED by [key_name(usr)]", "atmos") - - //You unwrenched a pipe full of pressure? Let's splat you into the wall, silly. - if(unsafe_wrenching) - unsafe_pressure_release(user, internal_pressure) - Deconstruct() + if (do_after(user, 20/W.toolspeed, target = src) && !qdeleted(src)) + user.visible_message( \ + "[user] unfastens \the [src].", \ + "You unfasten \the [src].", \ + "You hear ratchet.") + investigate_log("was REMOVED by [key_name(usr)]", "atmos") + //You unwrenched a pipe full of pressure? Let's splat you into the wall, silly. + if(unsafe_wrenching) + unsafe_pressure_release(user, internal_pressure) + Deconstruct() else return ..() +/obj/machinery/atmospherics/proc/can_unwrench(mob/user) + return can_unwrench + // Throws the user when they unwrench a pipe with a major difference between the internal and environmental pressure. /obj/machinery/atmospherics/proc/unsafe_pressure_release(mob/user, pressures = null) if(!user) diff --git a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm index 7ddc1f518c9..7e5074c6388 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm @@ -166,10 +166,10 @@ Passive gate is similar to the regular pump except: ..() update_icon() -/obj/machinery/atmospherics/components/binary/passive_gate/attackby(obj/item/weapon/W, mob/user, params) - if(!istype(W, /obj/item/weapon/wrench)) - return ..() - if(on) - user << "You cannot unwrench this [src], turn it off first!" - return 1 - return ..() +/obj/machinery/atmospherics/components/binary/passive_gate/can_unwrench(mob/user) + if(..()) + if(on) + user << "You cannot unwrench this [src], turn it off first!" + else + return 1 + diff --git a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm index 1304c1b12ca..a500b3841de 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm @@ -173,11 +173,10 @@ Thus, the two variables affect pump operation are set in New(): ..() update_icon() -/obj/machinery/atmospherics/components/binary/pump/attackby(obj/item/weapon/W, mob/user, params) - if (!istype(W, /obj/item/weapon/wrench)) - return ..() - if (!(stat & NOPOWER) && on) - user << "You cannot unwrench this [src], turn it off first!" - return 1 - return ..() +/obj/machinery/atmospherics/components/binary/pump/can_unwrench(mob/user) + if(..()) + if(!(stat & NOPOWER) && on) + user << "You cannot unwrench this [src], turn it off first!" + else + return 1 diff --git a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm index 8a09e99b93e..6b4bc164574 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm @@ -169,10 +169,10 @@ Thus, the two variables affect pump operation are set in New(): ..() update_icon() -/obj/machinery/atmospherics/components/binary/volume_pump/attackby(obj/item/weapon/W, mob/user, params) - if (!istype(W, /obj/item/weapon/wrench)) - return ..() - if (!(stat & NOPOWER) && on) - user << "You cannot unwrench this [src], turn it off first!" - return 1 - return ..() +/obj/machinery/atmospherics/components/binary/volume_pump/can_unwrench(mob/user) + if(..()) + if(!(stat & NOPOWER) && on) + user << "You cannot unwrench this [src], turn it off first!" + else + return 1 + diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm index 91a7a2d8ad0..d896d93a9a3 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm @@ -164,17 +164,17 @@ /obj/machinery/atmospherics/components/unary/cryo_cell/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/weapon/reagent_containers/glass)) - if(isrobot(user)) + . = 1 //no afterattack + if(!user.drop_item()) return if(beaker) user << "A beaker is already loaded into [src]!" return - if(!user.drop_item()) - return beaker = I I.loc = src user.visible_message("[user] places [I] in [src].", \ "You place [I] in [src].") + return if(!on && !occupant && !state_open) if(default_deconstruction_screwdriver(user, "cell-o", "cell-off", I)) return @@ -186,6 +186,7 @@ return if(default_deconstruction_crowbar(I)) return + return ..() /obj/machinery/atmospherics/components/unary/cryo_cell/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \ datum/tgui/master_ui = null, datum/ui_state/state = notcontained_state) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm b/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm index e4b9622b481..8d1c435b10c 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm @@ -27,12 +27,12 @@ connected_device.disconnect() return ..() -/obj/machinery/atmospherics/components/unary/portables_connector/attackby(obj/item/weapon/W, mob/user, params) - if(istype(W, /obj/item/weapon/wrench)) +/obj/machinery/atmospherics/components/unary/portables_connector/can_unwrench(mob/user) + if(..()) if(connected_device) - user << "You cannot unwrench this [src], dettach [connected_device] first!" + user << "You cannot unwrench this [src], detach [connected_device] first!" + else return 1 - return ..() /obj/machinery/atmospherics/components/unary/portables_connector/portableConnectorReturnAir() return connected_device.portableConnectorReturnAir() diff --git a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm index 3ac314d3b6b..ed142bbf4ed 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm @@ -85,6 +85,7 @@ return if(default_deconstruction_crowbar(I)) return + return ..() /obj/machinery/atmospherics/components/unary/thermomachine/default_change_direction_wrench(mob/user, obj/item/weapon/wrench/W) if(!..()) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm index f00c99897d1..55ac2266861 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm @@ -244,9 +244,6 @@ return /obj/machinery/atmospherics/components/unary/vent_pump/attackby(obj/item/W, mob/user, params) - if (istype(W, /obj/item/weapon/wrench)&& !(stat & NOPOWER) && on) - user << "You cannot unwrench this [src], turn it off first!" - return 1 if(istype(W, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/WT = W if (WT.remove_fuel(0,user)) @@ -267,6 +264,13 @@ else return ..() +/obj/machinery/atmospherics/components/unary/vent_pump/can_unwrench(mob/user) + if(..()) + if(!(stat & NOPOWER) && on) + user << "You cannot unwrench this [src], turn it off first!" + else + return 1 + /obj/machinery/atmospherics/components/unary/vent_pump/examine(mob/user) ..() if(welded) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm index cdefd24e240..b9c727da0a6 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm @@ -310,12 +310,15 @@ update_icon() pipe_vision_img = image(src, loc, layer = 20, dir = dir) return 0 - if (!istype(W, /obj/item/weapon/wrench)) + else return ..() - if (!(stat & NOPOWER) && on) - user << "You cannot unwrench this [src], turn it off first!" - return 1 - return ..() + +/obj/machinery/atmospherics/components/unary/vent_scrubber/can_unwrench(mob/user) + if(..()) + if (!(stat & NOPOWER) && on) + user << "You cannot unwrench this [src], turn it off first!" + else + return 1 /obj/machinery/atmospherics/components/unary/vent_scrubber/can_crawl_through() return !welded diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm index 212e1ccef37..00d7fab4602 100644 --- a/code/modules/atmospherics/machinery/portable/canister.dm +++ b/code/modules/atmospherics/machinery/portable/canister.dm @@ -149,14 +149,25 @@ /obj/machinery/portable_atmospherics/canister/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > temperature_resistance) - health -= 5 - healthcheck() + take_damage(5, BRUTE, 0) -/obj/machinery/portable_atmospherics/canister/proc/healthcheck() +/obj/machinery/portable_atmospherics/canister/take_damage(damage, damage_type = BRUTE, sound_effect = 1) + switch(damage_type) + if(BRUTE) + if(sound_effect) + if(damage) + playsound(loc, 'sound/weapons/smash.ogg', 50, 1) + else + playsound(loc, 'sound/weapons/tap.ogg', 50, 1) + if(BURN) + if(sound_effect) + playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) + else + return if(stat & BROKEN) return - - if(health <= 10) + health = max( health - damage, 0) + if(!health) disconnect() var/datum/gas_mixture/expelled_gas = air_contents.remove(air_contents.total_moles()) var/turf/T = get_turf(src) @@ -193,42 +204,33 @@ update_icon() /obj/machinery/portable_atmospherics/canister/blob_act() - health = 0 - healthcheck() + take_damage(100, BRUTE, 0) /obj/machinery/portable_atmospherics/canister/bullet_act(obj/item/projectile/P) - if((P.damage_type == BRUTE || P.damage_type == BURN)) - if(P.damage) - health -= round(P.damage / 2) - healthcheck() - ..() + . = ..() + take_damage(P.damage / 2, P.damage_type, 0) /obj/machinery/portable_atmospherics/canister/ex_act(severity, target) switch(severity) if(1) if((stat & BROKEN) || prob(30)) qdel(src) - return else - health = 0 + take_damage(100, BRUTE, 0) if(2) if(stat & BROKEN) qdel(src) - return else - health -= rand(40, 100) + take_damage(rand(40, 110), BRUTE, 0) if(3) - health -= rand(15, 40) - healthcheck() + take_damage(rand(15, 40), BRUTE, 0) -/obj/machinery/portable_atmospherics/canister/attackby(obj/item/weapon/W, mob/user, params) - if(!istype(W, /obj/item/weapon/wrench) && !istype(W, /obj/item/weapon/tank) && !istype(W, /obj/item/device/analyzer) && !istype(W, /obj/item/device/pda)) - investigate_log("was smacked with \a [W] by [key_name(user)].", "atmos") - health -= W.force - add_fingerprint(user) - healthcheck() - playsound(loc, 'sound/weapons/smash.ogg', 60, 1) - ..() +/obj/machinery/portable_atmospherics/canister/attacked_by(obj/item/I, mob/user) + if(I.force) + user.visible_message("[user] has hit [src] with [I]!", "You hit [src] with [I]!") + investigate_log("was smacked with \a [I] by [key_name(user)].", "atmos") + add_fingerprint(user) + take_damage(I.force, I.damtype, 1) /obj/machinery/portable_atmospherics/canister/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \ datum/tgui/master_ui = null, datum/ui_state/state = physical_state) diff --git a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm index f2b12e19c45..44f59644a2f 100644 --- a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm +++ b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm @@ -69,38 +69,40 @@ return air_contents /obj/machinery/portable_atmospherics/attackby(obj/item/weapon/W, mob/user, params) - if(istype(W, /obj/item/weapon/tank) && !(stat & BROKEN)) - var/obj/item/weapon/tank/T = W - if(holding || !user.drop_item()) - return - T.loc = src - holding = T - update_icon() - else if(istype(W, /obj/item/weapon/wrench) && !(stat & BROKEN)) - if(connected_port) - disconnect() - playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - user.visible_message( \ - "[user] disconnects [src].", \ - "You unfasten [src] from the port.", \ - "You hear a ratchet.") - update_icon() - return - else - var/obj/machinery/atmospherics/components/unary/portables_connector/possible_port = locate(/obj/machinery/atmospherics/components/unary/portables_connector) in loc - if(!possible_port) - user << "Nothing happens." + if(istype(W, /obj/item/weapon/tank)) + if(!(stat & BROKEN)) + var/obj/item/weapon/tank/T = W + if(holding || !user.drop_item()) return - if(!connect(possible_port)) - user << "[name] failed to connect to the port." - return - playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - user.visible_message( \ - "[user] connects [src].", \ - "You fasten [src] to the port.", \ - "You hear a ratchet.") + T.loc = src + holding = T update_icon() - else if((istype(W, /obj/item/device/analyzer)) && Adjacent(user)) + else if(istype(W, /obj/item/weapon/wrench)) + if(!(stat & BROKEN)) + if(connected_port) + disconnect() + playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) + user.visible_message( \ + "[user] disconnects [src].", \ + "You unfasten [src] from the port.", \ + "You hear a ratchet.") + update_icon() + return + else + var/obj/machinery/atmospherics/components/unary/portables_connector/possible_port = locate(/obj/machinery/atmospherics/components/unary/portables_connector) in loc + if(!possible_port) + user << "Nothing happens." + return + if(!connect(possible_port)) + user << "[name] failed to connect to the port." + return + playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) + user.visible_message( \ + "[user] connects [src].", \ + "You fasten [src] to the port.", \ + "You hear a ratchet.") + update_icon() + else if(istype(W, /obj/item/device/analyzer) && Adjacent(user)) atmosanalyzer_scan(air_contents, user) else - ..() \ No newline at end of file + return ..() \ No newline at end of file diff --git a/code/modules/food&drinks/kitchen machinery/processor.dm b/code/modules/food&drinks/kitchen machinery/processor.dm index 46cbf39ef83..afbb781a6e1 100644 --- a/code/modules/food&drinks/kitchen machinery/processor.dm +++ b/code/modules/food&drinks/kitchen machinery/processor.dm @@ -170,7 +170,8 @@ if(default_unfasten_wrench(user, O)) return - default_deconstruction_crowbar(O) + if(default_deconstruction_crowbar(O)) + return var/atom/movable/what = O if(istype(O, /obj/item/weapon/grab)) @@ -183,15 +184,17 @@ what = G.affecting var/datum/food_processor_process/P = select_recipe(what) - if (!P) - user << "That probably won't blend!" - return 1 - - user.visible_message("[user] put [what] into [src].", \ - "You put the [what] into [src].") - user.drop_item() - what.loc = src - return + if(P) + user.visible_message("[user] put [what] into [src].", \ + "You put the [what] into [src].") + user.drop_item() + what.loc = src + else + if(user.a_intent != "harm") + user << "That probably won't blend!" + return 1 + else + return ..() /obj/machinery/processor/attack_hand(mob/user) if (src.stat != 0) //NOPOWER etc diff --git a/code/modules/food&drinks/kitchen machinery/smartfridge.dm b/code/modules/food&drinks/kitchen machinery/smartfridge.dm index 7c312cbf91f..1eac74d44c7 100644 --- a/code/modules/food&drinks/kitchen machinery/smartfridge.dm +++ b/code/modules/food&drinks/kitchen machinery/smartfridge.dm @@ -66,7 +66,9 @@ power_change() return - default_deconstruction_crowbar(O) + if(default_deconstruction_crowbar(O)) + updateUsrDialog() + return if(stat) return 0 @@ -81,38 +83,36 @@ updateUsrDialog() return 1 - var/loaded = 0 - if(istype(O, /obj/item/weapon/storage/bag)) var/obj/item/weapon/storage/P = O + var/loaded = 0 for(var/obj/G in P.contents) if(contents.len >= max_n_of_items) break if(accept_check(G)) load(G) loaded++ - else + updateUsrDialog() + + if(loaded) + if(contents.len >= max_n_of_items) + user.visible_message("[user] loads \the [src] with \the [O].", \ + "You fill \the [src] with \the [O].") + else + user.visible_message("[user] loads \the [src] with \the [O].", \ + "You load \the [src] with \the [O].") + if(O.contents.len > 0) + user << "Some items are refused." + else + user << "There is nothing in [O] to put in [src]!" + return 0 + + else if(user.a_intent != "harm") user << "\The [src] smartly refuses [O]." updateUsrDialog() return 0 - - // this is a little backwards but it avoids duplication. - // this code follows storage items and trays only. - if(loaded) - if(contents.len >= max_n_of_items) - user.visible_message("[user] loads \the [src] with \the [O].", \ - "You fill \the [src] with \the [O].") - else - user.visible_message("[user] loads \the [src] with \the [O].", \ - "You load \the [src] with \the [O].") - if(O.contents.len > 0) - user << "Some items are refused." else - user << "There is nothing in [O] to put in [src]!" - return 0 - - updateUsrDialog() - return 1 + return ..() diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm index 48a05c0bd27..978c4d191d9 100644 --- a/code/modules/hydroponics/biogenerator.dm +++ b/code/modules/hydroponics/biogenerator.dm @@ -54,40 +54,59 @@ return /obj/machinery/biogenerator/attackby(obj/item/O, mob/user, params) - if(istype(O, /obj/item/weapon/reagent_containers/glass) && !panel_open) - if(beaker) - user << "A container is already loaded into the machine." - else - user.unEquip(O) - O.loc = src - beaker = O - user << "You add the container to the machine." - updateUsrDialog() - else if(processing) + if(processing) user << "The biogenerator is currently processing." + return + + if(default_deconstruction_screwdriver(user, "biogen-empty-o", "biogen-empty", O)) + if(beaker) + var/obj/item/weapon/reagent_containers/glass/B = beaker + B.loc = loc + beaker = null + update_icon() + return + + if(exchange_parts(user, O)) + return + + if(default_deconstruction_crowbar(O)) + return + + if(istype(O, /obj/item/weapon/reagent_containers/glass)) + if(!panel_open) + if(beaker) + user << "A container is already loaded into the machine." + else + user.unEquip(O) + O.loc = src + beaker = O + user << "You add the container to the machine." + update_icon() + updateUsrDialog() + return 1 //no afterattack + else if(istype(O, /obj/item/weapon/storage/bag/plants)) + var/obj/item/weapon/storage/bag/plants/PB = O var/i = 0 for(var/obj/item/weapon/reagent_containers/food/snacks/grown/G in contents) i++ if(i >= max_items) user << "The biogenerator is already full! Activate it." else - for(var/obj/item/weapon/reagent_containers/food/snacks/grown/G in O.contents) + for(var/obj/item/weapon/reagent_containers/food/snacks/grown/G in PB.contents) if(i >= max_items) break - G.loc = src + PB.remove_from_storage(G, src) i++ if(iYou empty the plant bag into the biogenerator.
" - else if(O.contents.len == 0) + else if(PB.contents.len == 0) user << "You empty the plant bag into the biogenerator, filling it to its capacity." else user << "You fill the biogenerator to its capacity." + return 1 //no afterattack - - else if(!istype(O, /obj/item/weapon/reagent_containers/food/snacks/grown)) - user << "You cannot put this in [src.name]!" - else + else if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/grown)) var/i = 0 for(var/obj/item/weapon/reagent_containers/food/snacks/grown/G in contents) i++ @@ -97,21 +116,12 @@ user.unEquip(O) O.loc = src user << "You put [O.name] in [src.name]" + return 1 //no afterattack - if(!processing) - if(default_deconstruction_screwdriver(user, "biogen-empty-o", "biogen-empty", O)) - if(beaker) - var/obj/item/weapon/reagent_containers/glass/B = beaker - B.loc = loc - beaker = null - - if(exchange_parts(user, O)) - return - - default_deconstruction_crowbar(O) - - update_icon() - return + else if(user.a_intent != "harm") + user << "You cannot put this in [src.name]!" + else + return ..() /obj/machinery/biogenerator/interact(mob/user) if(stat & BROKEN || panel_open) diff --git a/code/modules/hydroponics/seed_extractor.dm b/code/modules/hydroponics/seed_extractor.dm index 7e479069c3c..d30378251f5 100644 --- a/code/modules/hydroponics/seed_extractor.dm +++ b/code/modules/hydroponics/seed_extractor.dm @@ -6,12 +6,16 @@ else t_max = rand(1,4) + var/seedloc = O.loc + if(extractor) + seedloc = extractor.loc + if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/grown/)) var/obj/item/weapon/reagent_containers/food/snacks/grown/F = O if(F.seed) while(t_amount < t_max) var/obj/item/seeds/t_prod = F.seed.Copy() - t_prod.loc = O.loc + t_prod.loc = seedloc t_amount++ qdel(O) return 1 @@ -21,19 +25,12 @@ if(F.seed) while(t_amount < t_max) var/obj/item/seeds/t_prod = F.seed.Copy() - t_prod.loc = O.loc + t_prod.loc = seedloc t_amount++ qdel(O) return 1 - /*else if(istype(O, /obj/item/stack/tile/grass)) - var/obj/item/stack/tile/grass/S = O - new /obj/item/seeds/grassseed(O.loc) - S.use(1) - return 1*/ - - else - return 0 + return 0 /obj/machinery/seed_extractor @@ -75,9 +72,7 @@ if(default_unfasten_wrench(user, O)) return - default_deconstruction_crowbar(O) - - if(isrobot(user)) + if(default_deconstruction_crowbar(O)) return if (istype(O,/obj/item/weapon/storage/bag/plants)) @@ -87,7 +82,7 @@ if(contents.len >= max_seeds) break ++loaded - add(G) + add_seed(G) if (loaded) user << "You put the seeds from \the [O.name] into [src]." else @@ -98,19 +93,18 @@ user << "\The [O] is stuck to your hand, you cannot put it in the seed extractor!" return - if(O && O.loc) - O.loc = src.loc - - if(seedify(O,-1)) + else if(seedify(O,-1, src)) user << "You extract some seeds." return else if (istype(O,/obj/item/seeds)) - add(O) + add_seed(O) user << "You add [O] to [src.name]." updateUsrDialog() return - else + else if(user.a_intent != "harm") user << "You can't extract any seeds from \the [O.name]!" + else + return ..() /datum/seed_pile var/name = "" @@ -187,7 +181,7 @@ src.updateUsrDialog() return -/obj/machinery/seed_extractor/proc/add(obj/item/seeds/O) +/obj/machinery/seed_extractor/proc/add_seed(obj/item/seeds/O) if(contents.len >= 999) usr << "\The [src] is full." return 0 diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm index 12ec53f1011..7d52a164b8c 100644 --- a/code/modules/mining/equipment_locker.dm +++ b/code/modules/mining/equipment_locker.dm @@ -93,7 +93,7 @@ if (!powered()) return if(istype(W,/obj/item/weapon/card/id)) - var/obj/item/weapon/card/id/I = usr.get_active_hand() + var/obj/item/weapon/card/id/I = user.get_active_hand() if(istype(I) && !istype(inserted_id)) if(!user.drop_item()) return @@ -112,12 +112,13 @@ if(default_deconstruction_screwdriver(user, "ore_redemption-open", "ore_redemption", W)) updateUsrDialog() return - if(panel_open) - if(istype(W, /obj/item/weapon/crowbar)) - empty_content() - default_deconstruction_crowbar(W) - return 1 - ..() + if(default_deconstruction_crowbar(W)) + return + + return ..() + +/obj/machinery/mineral/ore_redemption/deconstruction() + empty_content() /obj/machinery/mineral/ore_redemption/proc/SmeltMineral(obj/item/weapon/ore/O) if(O.refined_type) @@ -407,11 +408,9 @@ if(default_deconstruction_screwdriver(user, "mining-open", "mining", I)) updateUsrDialog() return - if(panel_open) - if(istype(I, /obj/item/weapon/crowbar)) - default_deconstruction_crowbar(I) - return 1 - ..() + if(default_deconstruction_crowbar(I)) + return + return ..() /obj/machinery/mineral/equipment_vendor/proc/RedeemVoucher(obj/item/weapon/mining_voucher/voucher, mob/redeemer) var/selection = input(redeemer, "Pick your equipment", "Mining Voucher Redemption") as null|anything in list("Two Survival Capsules", "Resonator", "Mining Drone", "Advanced Scanner") @@ -767,8 +766,8 @@ icon_state = "door_electronics" icon = 'icons/obj/module.dmi' -/obj/item/device/mine_bot_ugprade/afterattack(mob/living/simple_animal/hostile/mining_drone/M, mob/user) - if(!istype(M)) +/obj/item/device/mine_bot_ugprade/afterattack(mob/living/simple_animal/hostile/mining_drone/M, mob/user, proximity) + if(!istype(M) || !proximity) return upgrade_bot(M, user) diff --git a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm index 9a3849e202e..a2b9add6e23 100644 --- a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm +++ b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm @@ -20,20 +20,29 @@ It is possible to destroy the net by the occupant or someone else. -/obj/effect/energy_net/proc/healthcheck() +/obj/effect/energy_net/proc/take_damage(damage, damage_type = BRUTE, sound_effect = 1) + switch(damage_type) + if(BRUTE) + if(sound_effect) + playsound(src.loc, 'sound/weapons/slash.ogg', 80, 1) + if(BURN) + if(sound_effect) + playsound(src.loc, 'sound/weapons/slash.ogg', 80, 1) + else + return + health -= damage if(health <=0) - density = 0 - if(affecting) - var/mob/living/carbon/M = affecting - M.anchored = 0 - for(var/mob/O in viewers(src, 3)) - O.show_message("[M.name] was recovered from the energy net!", 1, "You hear a grunt.", 2) - if(!isnull(master))//As long as they still exist. - master << "ERROR: unable to initiate transport protocol. Procedure terminated." qdel(src) - return - +/obj/effect/energy_net/Destroy() + if(affecting) + var/mob/living/carbon/M = affecting + M.anchored = 0 + for(var/mob/O in viewers(src, 3)) + O.show_message("[M.name] was recovered from the energy net!", 1, "You hear a grunt.", 2) + if(master)//As long as they still exist. + master << "ERROR: unable to initiate transport protocol. Procedure terminated." + return ..() /obj/effect/energy_net/process(mob/living/carbon/M) var/check = 30//30 seconds before teleportation. Could be extended I guess. @@ -98,53 +107,39 @@ It is possible to destroy the net by the occupant or someone else. /obj/effect/energy_net/bullet_act(obj/item/projectile/Proj) - health -= Proj.damage - healthcheck() - ..() + . = ..() + take_damage(Proj.damage, Proj.damage_type) /obj/effect/energy_net/ex_act(severity, target) switch(severity) if(1) - health-=50 + qdel(src) if(2) - health-=50 + qdel(src) if(3) - health-=prob(50)?50:25 - healthcheck() - return - - + take_damage(rand(10,25), BRUTE, 0) /obj/effect/energy_net/blob_act() - health-=50 - healthcheck() - return + qdel(src) - - -/obj/effect/energy_net/hitby(AM as mob|obj) +/obj/effect/energy_net/hitby(atom/movable/AM) ..() var/tforce = 0 if(ismob(AM)) tforce = 10 - else - tforce = AM:throwforce - playsound(src.loc, 'sound/weapons/slash.ogg', 80, 1) - health = max(0, health - tforce) - healthcheck() - ..() - return - + else if(isobj(AM)) + var/obj/O = AM + tforce = O.throwforce + take_damage(tforce) /obj/effect/energy_net/attack_hulk(mob/living/carbon/human/user) ..(user, 1) user.visible_message("[user] rips the energy net apart!", \ "You easily destroy the energy net.") - health-=50 - healthcheck() + qdel(src) @@ -155,25 +150,17 @@ It is possible to destroy the net by the occupant or someone else. /obj/effect/energy_net/attack_alien(mob/living/user) user.do_attack_animation(src) - if (islarva(user)) - return + user.changeNext_move(CLICK_CD_MELEE) playsound(src.loc, 'sound/weapons/slash.ogg', 80, 1) - health -= rand(10, 20) - if(health > 0) - user.visible_message("[user] claws at the energy net!", \ - "\green You claw at the net.") - else - user.visible_message("[user] slices the energy net apart!", \ + user.visible_message("[user] slices the energy net apart!", \ "\green You slice the energy net to pieces.") - healthcheck() - return + qdel(src) -/obj/effect/energy_net/attackby(obj/item/weapon/W, mob/user, params) - var/aforce = W.force - health = max(0, health - aforce) - healthcheck() +/obj/effect/energy_net/attacked_by(obj/item/weapon/W, mob/user) ..() - return + take_damage(W.force, W.damtype) + + diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm index d21ac7a912c..71117b114db 100644 --- a/code/modules/paperwork/paperbin.dm +++ b/code/modules/paperwork/paperbin.dm @@ -78,19 +78,19 @@ add_fingerprint(user) -/obj/item/weapon/paper_bin/attackby(obj/item/weapon/paper/i, mob/user, params) - if(!istype(i)) +/obj/item/weapon/paper_bin/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/weapon/paper)) + var/obj/item/weapon/paper/P = I + if(!user.unEquip(P)) + return + P.loc = src + user << "You put [P] in [src]." + papers.Add(P) + amount++ + update_icon() + else return ..() - if(!user.unEquip(i)) - return - i.loc = src - user << "You put [i] in [src]." - papers.Add(i) - amount++ - update_icon() - - /obj/item/weapon/paper_bin/examine(mob/user) ..() if(amount) diff --git a/code/modules/power/antimatter/control.dm b/code/modules/power/antimatter/control.dm index 985247e2203..3f10566dde8 100644 --- a/code/modules/power/antimatter/control.dm +++ b/code/modules/power/antimatter/control.dm @@ -127,9 +127,10 @@ /obj/machinery/power/am_control_unit/bullet_act(obj/item/projectile/Proj) + . = ..() if(Proj.flag != "bullet") stability -= Proj.force - return 0 + check_stability() /obj/machinery/power/am_control_unit/power_change() @@ -158,15 +159,14 @@ else if(!linked_shielding.len > 0) playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) user.visible_message("[user.name] unsecures the [src.name].", \ - "YYou remove the anchor bolts.", \ + "You remove the anchor bolts.", \ "You hear a ratchet.") src.anchored = 0 disconnect_from_network() else user << "Once bolted and linked to a shielding unit it the [src.name] is unable to be moved!" - return - if(istype(W, /obj/item/weapon/am_containment)) + else if(istype(W, /obj/item/weapon/am_containment)) if(fueljar) user << "There is already a [fueljar] inside!" return @@ -179,20 +179,29 @@ user.visible_message("[user.name] loads an [W.name] into the [src.name].", \ "You load an [W.name].", \ "You hear a thunk.") - return + else + return ..() - if(W.force >= 20) - stability -= W.force/2 +/obj/machinery/power/am_control_unit/take_damage(damage, damage_type = BRUTE, sound_effect = 1) + switch(damage_type) + if(BRUTE) + if(sound_effect) + if(damage) + playsound(loc, 'sound/weapons/smash.ogg', 50, 1) + else + playsound(loc, 'sound/weapons/tap.ogg', 50, 1) + if(BURN) + if(sound_effect) + playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) + else + return + if(damage >= 20) + stability -= damage/2 check_stability() - ..() - - /obj/machinery/power/am_control_unit/attack_hand(mob/user) if(anchored) interact(user) - return - /obj/machinery/power/am_control_unit/proc/add_shielding(obj/machinery/am_shielding/AMS, AMS_linking = 0) if(!istype(AMS)) diff --git a/code/modules/power/antimatter/shielding.dm b/code/modules/power/antimatter/shielding.dm index 1fa86b2fb12..f4cc4163c7d 100644 --- a/code/modules/power/antimatter/shielding.dm +++ b/code/modules/power/antimatter/shielding.dm @@ -112,9 +112,10 @@ /obj/machinery/am_shielding/bullet_act(obj/item/projectile/Proj) + . = ..() if(Proj.flag != "bullet") stability -= Proj.force/2 - return 0 + check_stability() /obj/machinery/am_shielding/update_icon() @@ -132,11 +133,22 @@ shutdown_core() -/obj/machinery/am_shielding/attackby(obj/item/W, mob/user, params) - if(W.force > 10) - stability -= W.force/2 +/obj/machinery/am_shielding/take_damage(damage, damage_type = BRUTE, sound_effect = 1) + switch(damage_type) + if(BRUTE) + if(sound_effect) + if(damage) + playsound(loc, 'sound/weapons/smash.ogg', 50, 1) + else + playsound(loc, 'sound/weapons/tap.ogg', 50, 1) + if(BURN) + if(sound_effect) + playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) + else + return + if(damage >= 10) + stability -= damage/2 check_stability() - ..() //Call this to link a detected shilding unit to the controller @@ -219,6 +231,5 @@ if(istype(I, /obj/item/device/multitool) && istype(src.loc,/turf)) new/obj/machinery/am_shielding(src.loc) qdel(src) - return - ..() - return \ No newline at end of file + else + return ..() diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index bb6b4f5fd45..47b0d481de9 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -114,7 +114,7 @@ transfer_fingerprints_to(newlight) qdel(src) return - ..() + return ..() /obj/machinery/light_construct/small @@ -148,6 +148,7 @@ // this is used to calc the probability the light burns out var/rigged = 0 // true if rigged to explode + var/health = 20 // the smaller bulb light fixture @@ -158,6 +159,7 @@ brightness = 4 desc = "A small lighting fixture." light_type = /obj/item/weapon/light/bulb + health = 15 /obj/machinery/light/Move() @@ -276,16 +278,12 @@ //Light replacer code if(istype(W, /obj/item/device/lightreplacer)) var/obj/item/device/lightreplacer/LR = W - if(isliving(user)) - var/mob/living/U = user - LR.ReplaceLight(src, U) - return + LR.ReplaceLight(src, user) // attempt to insert light - if(istype(W, /obj/item/weapon/light)) + else if(istype(W, /obj/item/weapon/light)) if(status != LIGHT_EMPTY) user << "There is a [fitting] already inserted!" - return else src.add_fingerprint(user) var/obj/item/weapon/light/L = W @@ -306,28 +304,6 @@ explode() else user << "This type of light requires a [fitting]!" - return - - // attempt to break the light - //If xenos decide they want to smash a light bulb with a toolbox, who am I to stop them? /N - - else if(status != LIGHT_BROKEN && status != LIGHT_EMPTY) - user.changeNext_move(CLICK_CD_MELEE) - user.do_attack_animation(src) - if(W.damtype == STAMINA) - return - if(prob(1+W.force * 5)) - - user.visible_message("[user.name] smashed the light!", \ - "You hit the light, and it smashes!", \ - "You hear a tinkle of breaking glass.") - if(on && (W.flags & CONDUCT)) - if (prob(12)) - electrocute_mob(user, get_area(src), src, 0.3) - broken() - - else - user.visible_message("[user.name] hits the light!") // attempt to stick weapon into light socket else if(status == LIGHT_EMPTY) @@ -348,15 +324,43 @@ newlight.stage = 2 transfer_fingerprints_to(newlight) qdel(src) - return + else + user << "You stick \the [W] into the light socket!" + if(has_power() && (W.flags & CONDUCT)) + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread + s.set_up(3, 1, src) + s.start() + if (prob(75)) + electrocute_mob(user, get_area(src), src, rand(0.7,1.0)) + else + return ..() - user << "You stick \the [W] into the light socket!" - if(has_power() && (W.flags & CONDUCT)) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, src) - s.start() - if (prob(75)) - electrocute_mob(user, get_area(src), src, rand(0.7,1.0)) +/obj/machinery/light/attacked_by(obj/item/I, mob/living/user) + ..() + if(status == LIGHT_BROKEN || status == LIGHT_EMPTY) + if(on && (I.flags & CONDUCT)) + if(prob(12)) + electrocute_mob(user, get_area(src), src, 0.3) + +/obj/machinery/light/take_damage(damage, damage_type = BRUTE, sound_effect = 1) + switch(damage_type) + if(BRUTE) + if(sound_effect) + switch(status) + if(LIGHT_EMPTY) + playsound(loc, 'sound/weapons/smash.ogg', 50, 1) + if(LIGHT_BROKEN) + playsound(loc, 'sound/effects/hit_on_shattered_glass.ogg', 90, 1) + else + playsound(loc, 'sound/effects/Glasshit.ogg', 90, 1) + if(BURN) + if(sound_effect) + playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) + else + return + health -= damage + if(health <= 0) + broken() // returns whether this light has power @@ -385,28 +389,20 @@ src.flicker(1) return -// Aliens smash the bulb but do not get electrocuted./N -/obj/machinery/light/attack_alien(mob/living/carbon/alien/humanoid/user)//So larva don't go breaking light bulbs. - if(status == LIGHT_EMPTY||status == LIGHT_BROKEN) - user << "\green That object is useless to you." - return - else if (status == LIGHT_OK||status == LIGHT_BURNED) - user.do_attack_animation(src) - visible_message("[user.name] smashed the light!", "You hear a tinkle of breaking glass.") - broken() - return +/obj/machinery/light/bullet_act(obj/item/projectile/P) + . = ..() + take_damage(P.damage, P.damage_type, 0) + +/obj/machinery/light/hitby(AM as mob|obj) + ..() + var/tforce = 0 + if(ismob(AM)) + tforce = 40 + else if(isobj(AM)) + var/obj/item/I = AM + tforce = I.throwforce + take_damage(tforce) -/obj/machinery/light/attack_animal(mob/living/simple_animal/M) - if(M.melee_damage_upper == 0) - return - if(status == LIGHT_EMPTY||status == LIGHT_BROKEN) - M << "That object is useless to you." - return - else if (status == LIGHT_OK||status == LIGHT_BURNED) - M.do_attack_animation(src) - visible_message("[M.name] smashed the light!", "You hear a tinkle of breaking glass.") - broken() - return // attack with hand - remove tube/bulb // if hands aren't protected and the light is on, burn the player @@ -584,8 +580,8 @@ brightness = 4 /obj/item/weapon/light/throw_impact(atom/hit_atom) - ..() - shatter() + if(!..()) //not caught by a mob + shatter() // update the icon state and description of the light @@ -625,17 +621,12 @@ ..() return -// called after an attack with a light item -// shatter light, unless it was an attempt to put it in a light socket -// now only shatter if the intent was harm - -/obj/item/weapon/light/afterattack(atom/target, mob/user,proximity) - if(!proximity) return - if(istype(target, /obj/machinery/light)) - return - if(user.a_intent != "harm") - return +/obj/item/weapon/light/attack(mob/living/M, mob/living/user, def_zone) + ..() + shatter() +/obj/item/weapon/light/attack_obj(obj/O, mob/living/user) + ..() shatter() /obj/item/weapon/light/proc/shatter() diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm index 304e5a37a1f..60a44a6f8bc 100644 --- a/code/modules/power/singularity/collector.dm +++ b/code/modules/power/singularity/collector.dm @@ -10,7 +10,7 @@ var/global/list/rad_collectors = list() density = 1 req_access = list(access_engine_equip) // use_power = 0 - var/obj/item/weapon/tank/internals/plasma/P = null + var/obj/item/weapon/tank/internals/plasma/loaded_tank = null var/last_power = 0 var/active = 0 var/locked = 0 @@ -25,13 +25,13 @@ var/global/list/rad_collectors = list() return ..() /obj/machinery/power/rad_collector/process() - if(P) - if(!P.air_contents.gases["plasma"]) + if(loaded_tank) + if(!loaded_tank.air_contents.gases["plasma"]) investigate_log("out of fuel.","singulo") eject() else - P.air_contents.gases["plasma"][MOLES] -= 0.001*drainratio - P.air_contents.garbage_collect() + loaded_tank.air_contents.gases["plasma"][MOLES] -= 0.001*drainratio + loaded_tank.air_contents.garbage_collect() return @@ -43,7 +43,7 @@ var/global/list/rad_collectors = list() toggle_power() user.visible_message("[user.name] turns the [src.name] [active? "on":"off"].", \ "You turn the [src.name] [active? "on":"off"].") - investigate_log("turned [active?"on":"off"] by [user.key]. [P?"Fuel: [round(P.air_contents.gases["plasma"][MOLES]/0.29)]%":"It is empty"].","singulo") + investigate_log("turned [active?"on":"off"] by [user.key]. [loaded_tank?"Fuel: [round(loaded_tank.air_contents.gases["plasma"][MOLES]/0.29)]%":"It is empty"].","singulo") return else user << "The controls are locked!" @@ -55,26 +55,26 @@ var/global/list/rad_collectors = list() if(istype(W, /obj/item/device/multitool)) user << "The [W.name] detects that [last_power]W were recently produced." return 1 - else if(istype(W, /obj/item/device/analyzer) && P) - atmosanalyzer_scan(P.air_contents, user) + else if(istype(W, /obj/item/device/analyzer) && loaded_tank) + atmosanalyzer_scan(loaded_tank.air_contents, user) else if(istype(W, /obj/item/weapon/tank/internals/plasma)) - if(!src.anchored) + if(!anchored) user << "The [src] needs to be secured to the floor first!" return 1 - if(src.P) + if(loaded_tank) user << "There's already a plasma tank loaded!" return 1 if(!user.drop_item()) return 1 - src.P = W + loaded_tank = W W.loc = src update_icons() else if(istype(W, /obj/item/weapon/crowbar)) - if(P && !src.locked) + if(loaded_tank && !src.locked) eject() return 1 else if(istype(W, /obj/item/weapon/wrench)) - if(P) + if(loaded_tank) user << "Remove the plasma tank first!" return 1 if(!anchored && !isinspace()) @@ -91,20 +91,18 @@ var/global/list/rad_collectors = list() "You unsecure the external bolts.", \ "You hear a ratchet.") disconnect_from_network() - else if(istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) - if (src.allowed(user)) + else if(W.GetID()) + if(allowed(user)) if(active) - src.locked = !src.locked - user << "You [src.locked ? "lock" : "unlock"] the controls." + locked = !locked + user << "You [locked ? "lock" : "unlock"] the controls." else - src.locked = 0 //just in case it somehow gets locked user << "The controls can only be locked when \the [src] is active!" else user << "Access denied." return 1 else - ..() - return 1 + return ..() /obj/machinery/power/rad_collector/ex_act(severity, target) @@ -116,20 +114,20 @@ var/global/list/rad_collectors = list() /obj/machinery/power/rad_collector/proc/eject() locked = 0 - var/obj/item/weapon/tank/internals/plasma/Z = src.P + var/obj/item/weapon/tank/internals/plasma/Z = src.loaded_tank if (!Z) return Z.loc = get_turf(src) Z.layer = initial(Z.layer) - src.P = null + src.loaded_tank = null if(active) toggle_power() else update_icons() /obj/machinery/power/rad_collector/proc/receive_pulse(pulse_strength) - if(P && active) - var/power_produced = P.air_contents.gases["plasma"] ? P.air_contents.gases["plasma"][MOLES] : 0 + if(loaded_tank && active) + var/power_produced = loaded_tank.air_contents.gases["plasma"] ? loaded_tank.air_contents.gases["plasma"][MOLES] : 0 power_produced *= pulse_strength*20 add_avail(power_produced) last_power = power_produced @@ -139,7 +137,7 @@ var/global/list/rad_collectors = list() /obj/machinery/power/rad_collector/proc/update_icons() overlays.Cut() - if(P) + if(loaded_tank) overlays += image('icons/obj/singularity.dmi', "ptank") if(stat & (NOPOWER|BROKEN)) return diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm index 836cfc8853a..9b953b22373 100644 --- a/code/modules/power/solar.dm +++ b/code/modules/power/solar.dm @@ -12,7 +12,7 @@ idle_power_usage = 0 active_power_usage = 0 var/id = 0 - var/health = 10 + var/health = 20 var/obscured = 0 var/sunfrac = 0 var/adir = SOUTH // actual dir @@ -66,24 +66,46 @@ playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) user.visible_message("[user] takes the glass off the solar panel.", "You take the glass off the solar panel.") qdel(src) - return - else if (W) - src.add_fingerprint(user) - src.health -= W.force - src.healthcheck() + else + return ..() + +/obj/machinery/power/solar/bullet_act(obj/item/projectile/P) + . = ..() + take_damage(P.damage, P.damage_type) + +/obj/machinery/power/solar/hitby(AM as mob|obj) ..() + var/tforce = 0 + if(ismob(AM)) + tforce = 20 + else if(isobj(AM)) + var/obj/item/I = AM + tforce = I.throwforce + take_damage(tforce) -/obj/machinery/power/solar/proc/healthcheck() - if (src.health <= 0) - if(!(stat & BROKEN)) - set_broken() +/obj/machinery/power/solar/take_damage(damage, damage_type = BRUTE, sound_effect = 1) + switch(damage_type) + if(BRUTE) + if(sound_effect) + if(stat & BROKEN) + playsound(loc, 'sound/effects/hit_on_shattered_glass.ogg', 60, 1) + else + playsound(loc, 'sound/effects/Glasshit.ogg', 90, 1) + if(BURN) + if(sound_effect) + playsound(loc, 'sound/items/Welder.ogg', 100, 1) else - new /obj/item/weapon/shard(src.loc) - new /obj/item/weapon/shard(src.loc) - qdel(src) return - return - + health -= damage + if(health <= 0) + playsound(src, "shatter", 70, 1) + new /obj/item/weapon/shard(src.loc) + new /obj/item/weapon/shard(src.loc) + qdel(src) + else if(health <= 10) + if(!(stat & BROKEN)) + playsound(loc, 'sound/effects/Glassbr3.ogg', 100, 1) + set_broken() /obj/machinery/power/solar/update_icon() ..() @@ -132,7 +154,6 @@ stat |= BROKEN unset_control() update_icon() - return /obj/machinery/power/solar/ex_act(severity, target) @@ -140,11 +161,9 @@ if(!qdeleted(src)) switch(severity) if(2) - if(prob(50)) - set_broken() + take_damage(rand(10,20), BRUTE, 0) if(3) - if(prob(25)) - set_broken() + take_damage(rand(5,15), BRUTE, 0) /obj/machinery/power/solar/fake/New(var/turf/loc, var/obj/item/solar_assembly/S) ..(loc, S, 0) @@ -255,7 +274,7 @@ tracker = 0 user.visible_message("[user] takes out the electronics from the solar assembly.", "You take out the electronics from the solar assembly.") return 1 - ..() + return ..() // // Solar Control Computer @@ -270,6 +289,7 @@ density = 1 use_power = 1 idle_power_usage = 250 + var/health = 25 var/icon_screen = "solar" var/icon_keyboard = "power_key" var/id = 0 @@ -443,9 +463,33 @@ A.icon_state = "4" A.anchored = 1 qdel(src) - else + else if(user.a_intent != "harm" && !(I.flags & NOBLUDGEON)) src.attack_hand(user) - return + else + return ..() + +/obj/machinery/power/solar_control/bullet_act(obj/item/projectile/P) + . = ..() + take_damage(P.damage, P.damage_type) + +/obj/machinery/power/solar_control/take_damage(damage, damage_type = BRUTE, sound_effect = 1) + switch(damage_type) + if(BRUTE) + if(sound_effect) + if(stat & BROKEN) + playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1) + else + playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1) + if(BURN) + if(sound_effect) + playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) + else + return + health -= damage + if(health <= 0 && !(stat & BROKEN)) + playsound(loc, 'sound/effects/Glassbr3.ogg', 100, 1) + stat |= BROKEN + update_icon() /obj/machinery/power/solar_control/process() lastgen = gen @@ -489,11 +533,9 @@ if(!qdeleted(src)) switch(severity) if(2) - if(prob(50)) - set_broken() + take_damage(rand(20,30), BRUTE, 0) if(3) - if(prob(25)) - set_broken() + take_damage(rand(10,20), BRUTE, 0) /obj/machinery/power/solar_control/blob_act() if (prob(75)) diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index 7a3c9eb472f..758a41d0d64 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -147,28 +147,28 @@ if(default_unfasten_wrench(user, I)) return - if(isrobot(user)) - return + if(istype(I, /obj/item/weapon/reagent_containers) && (I.flags & OPENCONTAINER)) + var/obj/item/weapon/reagent_containers/B = I + . = 1 //no afterattack + if(beaker) + user << "A container is already loaded into the machine!" + return - var/obj/item/weapon/reagent_containers/B = I // Get a beaker from it? - if(!istype(B)) - return // Not a beaker? + if(!user.drop_item()) // Can't let go? + return - if(beaker) - user << "A beaker is already loaded into the machine!" - return + beaker = B + beaker.loc = src + user << "You add \the [B] to the machine." - if(!user.drop_item()) // Can't let go? - return - - beaker = B - beaker.loc = src - user << "You add the beaker to the machine." - - if(!icon_beaker) - icon_beaker = image('icons/obj/chemical.dmi', src, "disp_beaker") //randomize beaker overlay position. - icon_beaker.pixel_x = rand(-10,5) - overlays += icon_beaker + if(!icon_beaker) + icon_beaker = image('icons/obj/chemical.dmi', src, "disp_beaker") //randomize beaker overlay position. + icon_beaker.pixel_x = rand(-10,5) + overlays += icon_beaker + else if(user.a_intent != "harm") + user << "You can't load \the [I] into the machine!" + else + return ..() /obj/machinery/chem_dispenser/constructable name = "portable chem dispenser" @@ -252,7 +252,7 @@ dispensable_reagents |= dispensable_reagent_tiers[i] dispensable_reagents = sortList(dispensable_reagents) -/obj/machinery/chem_dispenser/constructable/attackby(var/obj/item/I, var/mob/user, params) +/obj/machinery/chem_dispenser/constructable/attackby(obj/item/I, mob/user, params) ..() if(default_deconstruction_screwdriver(user, "minidispenser-o", "minidispenser", I)) return @@ -260,13 +260,14 @@ if(exchange_parts(user, I)) return - if(panel_open) - if(istype(I, /obj/item/weapon/crowbar)) - if(beaker) - beaker.loc = loc - beaker = null - default_deconstruction_crowbar(I) - return 1 + if(default_deconstruction_crowbar(I)) + return + return ..() + +/obj/machinery/chem_dispenser/constructable/deconstruction() + if(beaker) + beaker.loc = loc + beaker = null /obj/machinery/chem_dispenser/drinks name = "soda dispenser" @@ -296,20 +297,6 @@ "lemonjuice" ) -/obj/machinery/chem_dispenser/drinks/attackby(obj/item/I, mob/user) - if(default_unfasten_wrench(user, I)) - return - - if(istype(I, /obj/item/weapon/reagent_containers) && (I.flags & OPENCONTAINER)) - if (beaker) - return 1 - else - if(!user.drop_item()) - return 1 - src.beaker = I - beaker.loc = src - update_icon() - return /obj/machinery/chem_dispenser/drinks/beer name = "booze dispenser" diff --git a/code/modules/reagents/chemistry/machinery/chem_heater.dm b/code/modules/reagents/chemistry/machinery/chem_heater.dm index 092953d1243..edd2c9dd055 100644 --- a/code/modules/reagents/chemistry/machinery/chem_heater.dm +++ b/code/modules/reagents/chemistry/machinery/chem_heater.dm @@ -39,10 +39,17 @@ beaker.reagents.handle_reactions() /obj/machinery/chem_heater/attackby(obj/item/I, mob/user, params) - if(isrobot(user)) + if(default_deconstruction_screwdriver(user, "mixer0b", "mixer0b", I)) + return + + if(exchange_parts(user, I)) + return + + if(default_deconstruction_crowbar(I)) return if(istype(I, /obj/item/weapon/reagent_containers) && (I.flags & OPENCONTAINER)) + . = 1 //no afterattack if(beaker) user << "A beaker is already loaded into the machine!" return @@ -53,18 +60,11 @@ I.loc = src user << "You add the beaker to the machine." icon_state = "mixer1b" - - if(default_deconstruction_screwdriver(user, "mixer0b", "mixer0b", I)) return + return ..() - if(exchange_parts(user, I)) - return - - if(panel_open) - if(istype(I, /obj/item/weapon/crowbar)) - eject_beaker() - default_deconstruction_crowbar(I) - return 1 +/obj/machinery/chem_heater/deconstruction() + eject_beaker() /obj/machinery/chem_heater/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \ datum/tgui/master_ui = null, datum/ui_state/state = default_state) diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm index 9d6337baf4a..3343bee85cd 100644 --- a/code/modules/reagents/chemistry/machinery/chem_master.dm +++ b/code/modules/reagents/chemistry/machinery/chem_master.dm @@ -37,10 +37,12 @@ return if(istype(I, /obj/item/weapon/reagent_containers) && (I.flags & OPENCONTAINER)) - if(isrobot(user)) + . = 1 // no afterattack + if(panel_open) + user << "You can't use the [src.name] while its panel is opened!" return if(beaker) - user << "A beaker is already loaded into the machine!" + user << "A container is already loaded in the machine!" return if(!user.drop_item()) return @@ -62,8 +64,8 @@ bottle.loc = src user << "You add the pill bottle into the dispenser slot." src.updateUsrDialog() - - return + else + return ..() /obj/machinery/chem_master/Topic(href, href_list) if(..()) @@ -341,7 +343,6 @@ component_parts += new /obj/item/weapon/reagent_containers/glass/beaker(null) /obj/machinery/chem_master/constructable/attackby(obj/item/B, mob/user, params) - if(default_deconstruction_screwdriver(user, "mixer0_nopower", "mixer0", B)) if(beaker) beaker.loc = src.loc @@ -352,40 +353,9 @@ bottle = null return - if(exchange_parts(user, B)) + else if(exchange_parts(user, B)) return - - if(panel_open) - if(istype(B, /obj/item/weapon/crowbar)) - default_deconstruction_crowbar(B) - return 1 - else - user << "You can't use the [src.name] while it's panel is opened!" - return 1 - - if(istype(B, /obj/item/weapon/reagent_containers) && (B.flags & OPENCONTAINER)) - if(beaker) - user << "A beaker is already loaded into the machine!" - return - if(!user.drop_item()) - return - - beaker = B - beaker.loc = src - user << "You add the beaker to the machine." - src.updateUsrDialog() - icon_state = "mixer1" - - else if(!condi && istype(B, /obj/item/weapon/storage/pill_bottle)) - if(bottle) - user << "A pill bottle is already loaded into the machine!" - return - if(!user.drop_item()) - return - - src.bottle = B - B.loc = src - user << "You add the pill bottle into the dispenser slot." - src.updateUsrDialog() - - return + else if(default_deconstruction_crowbar(B)) + return + else + return ..() \ No newline at end of file diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index 2e12d38cbf6..c15e48ea344 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -122,22 +122,19 @@ transfer_fingerprints_to(C) user << "You remove the conveyor belt." qdel(src) - return - if(istype(I, /obj/item/weapon/wrench)) + + else if(istype(I, /obj/item/weapon/wrench)) if(!(stat & BROKEN)) playsound(loc, 'sound/items/Ratchet.ogg', 50, 1) dir = turn(dir,-45) update_move_direction() user << "You rotate [src]." - return - if(isrobot(user)) - return //Carn: fix for borgs dropping their modules on conveyor belts - if(!user.drop_item()) - user << "\The [I] is stuck to your hand, you cannot place it on the conveyor!" - return - if(I && I.loc) - I.loc = src.loc - return + + else if(user.a_intent != "harm") + if(user.drop_item()) + I.loc = src.loc + else + return ..() // attack with hand, move pulled object onto conveyor /obj/machinery/conveyor/attack_hand(mob/user) diff --git a/code/modules/recycling/disposal-construction.dm b/code/modules/recycling/disposal-construction.dm index 74e52fc92c8..dd7ae2b0f36 100644 --- a/code/modules/recycling/disposal-construction.dm +++ b/code/modules/recycling/disposal-construction.dm @@ -27,7 +27,7 @@ dir = direction // update iconstate and dpdir due to dir and type -/obj/structure/disposalconstruct/proc/update() +/obj/structure/disposalconstruct/update_icon() var/flip = turn(dir, 180) var/left = turn(dir, 90) var/right = turn(dir, -90) @@ -87,7 +87,7 @@ // change visibility status and force update of icon /obj/structure/disposalconstruct/hide(var/intact) invisibility = (intact && level==1) ? 101: 0 // hide if floor is intact - update() + update_icon() // flip and rotate verbs @@ -104,7 +104,7 @@ return dir = turn(dir, -90) - update() + update_icon() /obj/structure/disposalconstruct/AltClick(mob/user) ..() @@ -138,7 +138,7 @@ if(DISP_SORTJUNCTION_FLIP) ptype = DISP_SORTJUNCTION - update() + update_icon() // returns the type path of disposalpipe corresponding to this item dtype /obj/structure/disposalconstruct/proc/dpipetype() @@ -210,7 +210,7 @@ return else if(CP) - update() + update_icon() var/pdir = CP.dpdir if(istype(CP, /obj/structure/disposalpipe/broken)) pdir = CP.dir @@ -223,7 +223,7 @@ density = 0 user << "You attach the [nicetype] to the underfloor." playsound(loc, 'sound/items/Ratchet.ogg', 100, 1) - update() + update_icon() else if(istype(I, /obj/item/weapon/weldingtool)) if(anchored) @@ -235,7 +235,7 @@ if(!loc || !W.isOn()) return user << "The [nicetype] has been welded in place." - update() // TODO: Make this neat + update_icon() // TODO: Make this neat if(ispipe) var/pipetype = dpipetype() diff --git a/code/modules/recycling/disposal-structures.dm b/code/modules/recycling/disposal-structures.dm index b13585f9c1d..3f00548adba 100644 --- a/code/modules/recycling/disposal-structures.dm +++ b/code/modules/recycling/disposal-structures.dm @@ -358,24 +358,27 @@ //weldingtool: unfasten and convert to obj/disposalconstruct /obj/structure/disposalpipe/attackby(obj/item/I, mob/user, params) - var/turf/T = src.loc if(T.intact) return // prevent interaction with T-scanner revealed pipes - src.add_fingerprint(user) + add_fingerprint(user) if(istype(I, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/W = I + if(can_be_deconstructed(user)) + if(W.remove_fuel(0,user)) + playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1) + user << "You start slicing the disposal pipe..." + // check if anything changed over 2 seconds + if(do_after(user,30, target = src)) + if(!src || !W.isOn()) return + Deconstruct() + user << "You slice the disposal pipe." + else + return ..() - if(W.remove_fuel(0,user)) - playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1) - user << "You start slicing the disposal pipe..." - // check if anything changed over 2 seconds - if(do_after(user,30, target = src)) - if(!src || !W.isOn()) return - Deconstruct() - user << "You slice the disposal pipe." - else - return +//checks if something is blocking the deconstruction (e.g. trunk with a bin still linked to it) +/obj/structure/disposalpipe/proc/can_be_deconstructed() + . = 1 // called when pipe is cut with welder /obj/structure/disposalpipe/Deconstruct() @@ -386,7 +389,7 @@ stored.dir = dir stored.density = 0 stored.anchored = 1 - stored.update() + stored.update_icon() ..() /obj/structure/disposalpipe/singularity_pull(S, current_size) @@ -514,9 +517,6 @@ return /obj/structure/disposalpipe/sortjunction/attackby(obj/item/I, mob/user, params) - if(..()) - return - if(istype(I, /obj/item/device/destTagger)) var/obj/item/device/destTagger/O = I @@ -528,6 +528,8 @@ sortTypes |= O.currTag user << "Added \"[TAGGERLOCATIONS[O.currTag]]\" filter." playsound(src.loc, 'sound/machines/twobeep.ogg', 100, 1) + else + return ..() // next direction to move @@ -635,47 +637,11 @@ update() return - // Override attackby so we disallow trunkremoval when somethings ontop -/obj/structure/disposalpipe/trunk/attackby(obj/item/I, mob/user, params) - - //Disposal bins or chutes - /* - These shouldn't be required - var/obj/machinery/disposal/D = locate() in src.loc - if(D && D.anchored) - return - - //Disposal outlet - var/obj/structure/disposaloutlet/O = locate() in src.loc - if(O && O.anchored) - return - */ - - //Disposal constructors - var/obj/structure/disposalconstruct/C = locate() in src.loc - if(C && C.anchored) - return - - var/turf/T = src.loc - if(T.intact) - return // prevent interaction with T-scanner revealed pipes - src.add_fingerprint(user) - if(istype(I, /obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/W = I - - if(linked) - user << "You need to deconstruct disposal machinery above this pipe!" - return - - if(W.remove_fuel(0,user)) - playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1) - user << "You start slicing the disposal pipe..." - if(do_after(user,30/I.toolspeed, target = src)) - if(!src || !W.isOn()) return - Deconstruct() - user << "You slice the disposal pipe." - else - return +/obj/structure/disposalpipe/trunk/can_be_deconstructed(mob/user) + if(linked) + user << "You need to deconstruct disposal machinery above this pipe!" + else + . = 1 // would transfer to next pipe segment, but we are in a trunk // if not entering from disposal bin, @@ -781,20 +747,17 @@ return /obj/structure/disposaloutlet/attackby(obj/item/I, mob/user, params) - if(!I || !user) - return - src.add_fingerprint(user) + add_fingerprint(user) if(istype(I, /obj/item/weapon/screwdriver)) if(mode==0) mode=1 playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) user << "You remove the screws around the power connection." - return else if(mode==1) mode=0 playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) user << "You attach the screws around the power connection." - return + else if(istype(I,/obj/item/weapon/weldingtool) && mode==1) var/obj/item/weapon/weldingtool/W = I if(W.remove_fuel(0,user)) @@ -805,13 +768,12 @@ user << "You slice the floorweld off \the [src]." stored.loc = loc src.transfer_fingerprints_to(stored) - stored.update() + stored.update_icon() stored.anchored = 0 stored.density = 1 qdel(src) - return - else - return + else + return ..() diff --git a/code/modules/recycling/disposal-unit.dm b/code/modules/recycling/disposal-unit.dm index d71557e4518..b2296e9c746 100644 --- a/code/modules/recycling/disposal-unit.dm +++ b/code/modules/recycling/disposal-unit.dm @@ -34,7 +34,7 @@ air_contents = new/datum/gas_mixture() //gas.volume = 1.05 * CELLSTANDARD - update() + update_icon() /obj/machinery/disposal/proc/trunk_check() trunk = locate() in src.loc @@ -66,11 +66,8 @@ trunk_check() /obj/machinery/disposal/attackby(obj/item/I, mob/user, params) - if(stat & BROKEN || !I || !user) - return - add_fingerprint(user) - if(mode<=0) // It's off + if(mode<=0) if(istype(I, /obj/item/weapon/screwdriver)) if(contents.len > 0) user << "Eject the items first!" @@ -96,7 +93,21 @@ user << "You slice the floorweld off \the [src]." Deconstruct() return - return 1 + + if(user.a_intent != "harm") + if(!user.drop_item() || (I.flags & ABSTRACT)) + return + place_item_in_disposal(I, user) + update_icon() + return 1 //no afterattack + else + return ..() + +/obj/machinery/disposal/proc/place_item_in_disposal(obj/item/I, mob/user) + I.loc = src + user.visible_message("[user.name] places \the [I] into \the [src].", \ + "You place \the [I] into \the [src].") + // mouse drop another mob or self @@ -133,7 +144,7 @@ "[user] has placed [target] in [src].") add_logs(user, target, "stuffed", addition="into [src]") target.LAssailant = user - update() + update_icon() // can breath normally in the disposal /obj/machinery/disposal/alter_health() @@ -157,7 +168,7 @@ user.loc = src.loc user.reset_perspective(null) - update() + update_icon() return @@ -166,7 +177,7 @@ if(stat & BROKEN) return flush = !flush - update() + update_icon() // ai as human but can't flush /obj/machinery/disposal/attack_ai(mob/user) @@ -198,10 +209,10 @@ for(var/atom/movable/AM in src) AM.forceMove(T) AM.pipe_eject(0) - update() + update_icon() // update the icon & overlays to reflect mode & status -/obj/machinery/disposal/proc/update() +/obj/machinery/disposal/update_icon() return /obj/machinery/disposal/proc/flush() @@ -222,12 +233,6 @@ flushing = 0 flush = 0 -/obj/machinery/disposal/bin/flush() - ..() - if(mode == 2) - mode = 1 - update() - /obj/machinery/disposal/proc/newHolderDestination(obj/structure/disposalholder/H) for(var/obj/item/smallDelivery/O in src) H.tomail = 1 @@ -239,7 +244,7 @@ // called when area power changes /obj/machinery/disposal/power_change() ..() // do default setting/reset of stat NOPOWER bit - update() // update icon + update_icon() // update icon return @@ -267,7 +272,7 @@ src.transfer_fingerprints_to(stored) stored.anchored = 0 stored.density = 1 - stored.update() + stored.update_icon() ..() //How disposal handles getting a storage dump from a storage object @@ -294,26 +299,15 @@ // attack by item places it in to disposal /obj/machinery/disposal/bin/attackby(obj/item/I, mob/user, params) - if(!..()) - return - if(istype(I, /obj/item/weapon/storage/bag/trash)) var/obj/item/weapon/storage/bag/trash/T = I user << "You empty the bag." for(var/obj/item/O in T.contents) T.remove_from_storage(O,src) T.update_icon() - update() - return - - if(!user.drop_item() || I.flags & ABSTRACT) // Dunno why this wasn't here before? - return - - I.loc = src - user.visible_message("[user.name] places \the [I] into \the [src].", \ - "You place \the [I] into \the [src].") - - update() + update_icon() + else + return ..() // user interaction /obj/machinery/disposal/bin/interact(mob/user, ai=0) @@ -373,11 +367,11 @@ mode = 1 else mode = 0 - update() + update_icon() if(href_list["handle"]) flush = text2num(href_list["handle"]) - update() + update_icon() if(href_list["eject"]) eject() @@ -391,14 +385,20 @@ if(prob(75)) I.loc = src visible_message("\the [I] lands in \the [src].") - update() + update_icon() else visible_message("\the [I] bounces off of \the [src]'s rim!") return 0 else return ..(mover, target, height) -/obj/machinery/disposal/bin/update() +/obj/machinery/disposal/bin/flush() + ..() + if(mode == 2) + mode = 1 + update_icon() + +/obj/machinery/disposal/bin/update_icon() overlays.Cut() if(stat & BROKEN) mode = 0 @@ -473,7 +473,7 @@ // if full enough, switch to ready mode if(air_contents.return_pressure() >= SEND_PRESSURE) mode = 2 - update() + update_icon() return /obj/machinery/disposal/bin/get_remote_view_fullscreens(mob/user) @@ -498,6 +498,11 @@ if(trunk) trunk.linked = src // link the pipe trunk to self +/obj/machinery/disposal/deliveryChute/place_item_in_disposal(obj/item/I, mob/user) + if(I.disposalEnterTry()) + ..() + flush() + /obj/machinery/disposal/deliveryChute/Bumped(atom/movable/AM) //Go straight into the chute if(!AM.disposalEnterTry()) return diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index 77e9d350cd3..ec75e1a1d75 100644 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -44,6 +44,8 @@ icon_state = "gift[icon_state]" else user << "You need more paper!" + else + return ..() /obj/structure/bigDelivery/relay_container_resist(mob/living/user, obj/O) if(istype(loc, /atom/movable)) diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm index 3b40c550c27..86a65b89bbf 100644 --- a/code/modules/research/circuitprinter.dm +++ b/code/modules/research/circuitprinter.dm @@ -74,71 +74,55 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis). /obj/machinery/r_n_d/circuit_imprinter/proc/TotalMaterials() return g_amount + gold_amount + diamond_amount -/obj/machinery/r_n_d/circuit_imprinter/attackby(obj/item/O, mob/user, params) - if (shocked) - shock(user,50) - if (default_deconstruction_screwdriver(user, "circuit_imprinter_t", "circuit_imprinter", O)) - if(linked_console) - linked_console.linked_imprinter = null - linked_console = null - return +//we drop the minerals in the machine onto the ground when deconstructed. +/obj/machinery/r_n_d/circuit_imprinter/deconstruction() + for(var/obj/item/weapon/reagent_containers/glass/G in component_parts) + reagents.trans_to(G, G.reagents.maximum_volume) + if(g_amount >= MINERAL_MATERIAL_AMOUNT) + var/obj/item/stack/sheet/glass/G = new /obj/item/stack/sheet/glass(src.loc) + G.amount = round(g_amount / MINERAL_MATERIAL_AMOUNT) + if(gold_amount >= MINERAL_MATERIAL_AMOUNT) + var/obj/item/stack/sheet/mineral/gold/G = new /obj/item/stack/sheet/mineral/gold(src.loc) + G.amount = round(gold_amount / MINERAL_MATERIAL_AMOUNT) + if(diamond_amount >= MINERAL_MATERIAL_AMOUNT) + var/obj/item/stack/sheet/mineral/diamond/G = new /obj/item/stack/sheet/mineral/diamond(src.loc) + G.amount = round(diamond_amount / MINERAL_MATERIAL_AMOUNT) + ..() - if(exchange_parts(user, O)) - return +/obj/machinery/r_n_d/circuit_imprinter/Insert_Item(obj/item/O, mob/user) - if (panel_open) - if(istype(O, /obj/item/weapon/crowbar)) - for(var/obj/item/weapon/reagent_containers/glass/G in component_parts) - reagents.trans_to(G, G.reagents.maximum_volume) - if(g_amount >= MINERAL_MATERIAL_AMOUNT) - var/obj/item/stack/sheet/glass/G = new /obj/item/stack/sheet/glass(src.loc) - G.amount = round(g_amount / MINERAL_MATERIAL_AMOUNT) - if(gold_amount >= MINERAL_MATERIAL_AMOUNT) - var/obj/item/stack/sheet/mineral/gold/G = new /obj/item/stack/sheet/mineral/gold(src.loc) - G.amount = round(gold_amount / MINERAL_MATERIAL_AMOUNT) - if(diamond_amount >= MINERAL_MATERIAL_AMOUNT) - var/obj/item/stack/sheet/mineral/diamond/G = new /obj/item/stack/sheet/mineral/diamond(src.loc) - G.amount = round(diamond_amount / MINERAL_MATERIAL_AMOUNT) - default_deconstruction_crowbar(O) - return - else - user << "You can't load the [src.name] while it's opened!" - return - if (disabled) - return - if (!linked_console) - user << "The [name] must be linked to an R&D console first!" + if (O.is_open_container()) //inserting reagents into the machine return 1 - if (O.is_open_container()) - return - if (!istype(O, /obj/item/stack/sheet/glass) && !istype(O, /obj/item/stack/sheet/mineral/gold) && !istype(O, /obj/item/stack/sheet/mineral/diamond)) + + if (istype(O, /obj/item/stack/sheet/glass) || istype(O, /obj/item/stack/sheet/mineral/gold) || istype(O, /obj/item/stack/sheet/mineral/diamond)) + . = 1 + if(!is_insertion_ready(user)) + return + var/obj/item/stack/sheet/stack = O + if ((TotalMaterials() + stack.perunit) > max_material_amount) + user << "The [name] is full! Please remove glass from the protolathe in order to insert more." + return + + var/amount = round(input("How many sheets do you want to add?") as num) + if(amount <= 0 || stack.amount <= 0) + return + if(amount > stack.amount) + amount = min(stack.amount, round((max_material_amount-TotalMaterials())/stack.perunit)) + + busy = 1 + use_power(max(1000, (MINERAL_MATERIAL_AMOUNT*amount/10))) + user << "You add [amount] sheets to the [src.name]." + if(istype(stack, /obj/item/stack/sheet/glass)) + g_amount += amount * MINERAL_MATERIAL_AMOUNT + else if(istype(stack, /obj/item/stack/sheet/mineral/gold)) + gold_amount += amount * MINERAL_MATERIAL_AMOUNT + else if(istype(stack, /obj/item/stack/sheet/mineral/diamond)) + diamond_amount += amount * MINERAL_MATERIAL_AMOUNT + stack.use(amount) + busy = 0 + src.updateUsrDialog() + + else if(user.a_intent != "harm") user << "You cannot insert this item into the [name]!" - return - if (stat) - return - if (busy) - user << "The [name] is busy! Please wait for completion of previous operation." - return - var/obj/item/stack/sheet/stack = O - if ((TotalMaterials() + stack.perunit) > max_material_amount) - user << "The [name] is full! Please remove glass from the protolathe in order to insert more." - return - - var/amount = round(input("How many sheets do you want to add?") as num) - if(amount <= 0 || stack.amount <= 0) - return - if(amount > stack.amount) - amount = min(stack.amount, round((max_material_amount-TotalMaterials())/stack.perunit)) - - busy = 1 - use_power(max(1000, (MINERAL_MATERIAL_AMOUNT*amount/10))) - user << "You add [amount] sheets to the [src.name]." - if(istype(stack, /obj/item/stack/sheet/glass)) - g_amount += amount * MINERAL_MATERIAL_AMOUNT - else if(istype(stack, /obj/item/stack/sheet/mineral/gold)) - gold_amount += amount * MINERAL_MATERIAL_AMOUNT - else if(istype(stack, /obj/item/stack/sheet/mineral/diamond)) - diamond_amount += amount * MINERAL_MATERIAL_AMOUNT - stack.use(amount) - busy = 0 - src.updateUsrDialog() + else + return 0 \ No newline at end of file diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm index 6fef356857b..76a65f9015d 100644 --- a/code/modules/research/destructive_analyzer.dm +++ b/code/modules/research/destructive_analyzer.dm @@ -11,7 +11,6 @@ Note: Must be placed within 3 tiles of the R&D Console name = "Destructive Analyzer" desc = "Learn science by destroying things!" icon_state = "d_analyzer" - var/obj/item/weapon/loaded_item = null var/decon_mod = 0 /obj/machinery/r_n_d/destructive_analyzer/New() @@ -36,30 +35,11 @@ Note: Must be placed within 3 tiles of the R&D Console temp_list[O] = text2num(temp_list[O]) return temp_list - -/obj/machinery/r_n_d/destructive_analyzer/attackby(obj/item/O, mob/user, params) - if (shocked) - shock(user,50) - if (default_deconstruction_screwdriver(user, "d_analyzer_t", "d_analyzer", O)) - if(linked_console) - linked_console.linked_destroy = null - linked_console = null - return - - if(exchange_parts(user, O)) - return - - default_deconstruction_crowbar(O) - - if (disabled) - return - if (!linked_console) - user << "The [src.name] must be linked to an R&D console first!" - return - if (busy) - user << "The [src.name] is busy right now." - return - if (istype(O, /obj/item) && !loaded_item) +/obj/machinery/r_n_d/destructive_analyzer/Insert_Item(obj/item/O, mob/user) + if(user.a_intent != "harm") + . = 1 + if(!is_insertion_ready(user)) + return if(!O.origin_tech) user << "This doesn't seem to have a tech origin!" return @@ -75,7 +55,4 @@ Note: Must be placed within 3 tiles of the R&D Console O.loc = src user << "You add the [O.name] to the [src.name]!" flick("d_analyzer_la", src) - spawn(10) - icon_state = "d_analyzer_l" - busy = 0 - return + diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index d37f8715f1f..7ae08a0338b 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -25,7 +25,6 @@ var/recentlyExperimented = 0 var/mob/trackedIan var/mob/trackedRuntime - var/obj/item/loaded_item = null var/badThingCoeff = 0 var/resetTime = 15 var/cloneMode = FALSE @@ -111,36 +110,14 @@ return FALSE return TRUE -/obj/machinery/r_n_d/experimentor/attackby(obj/item/O, mob/user, params) - if (shocked) - shock(user,50) - - if (default_deconstruction_screwdriver(user, "h_lathe_maint", "h_lathe", O)) - if(linked_console) - linked_console.linked_destroy = null - linked_console = null - return - - if(exchange_parts(user, O)) - return - - if(panel_open && istype(O, /obj/item/weapon/crowbar)) - default_deconstruction_crowbar(O) - return - - if(!checkCircumstances(O)) - user << "The [O] is not yet valid for the [src] and must be completed!" - return - - if (disabled) - return - if (!linked_console) - user << "The [src] must be linked to an R&D console first!" - return - if (loaded_item) - user << "The [src] is already loaded." - return - if (istype(O, /obj/item)) +/obj/machinery/r_n_d/experimentor/Insert_Item(obj/item/O, mob/user) + if(user.a_intent != "harm") + . = 1 + if(!is_insertion_ready(user)) + return + if(!checkCircumstances(O)) + user << "The [O] is not yet valid for the [src] and must be completed!" + return if(!O.origin_tech) user << "This doesn't seem to have a tech origin!" return @@ -158,7 +135,7 @@ user << "You add the [O.name] to the machine." flick("h_lathe_load", src) - return + /obj/machinery/r_n_d/experimentor/default_deconstruction_crowbar(obj/item/O) ejectItem() @@ -640,7 +617,7 @@ spawn(cooldownMax) cooldown = FALSE else - user << "You aren't quite sure what to do with this yet." + user << "You aren't quite sure what to do with this, yet." //////////////// RELIC PROCS ///////////////////////////// diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm index 0d390b517de..428ee5947a4 100644 --- a/code/modules/research/protolathe.dm +++ b/code/modules/research/protolathe.dm @@ -72,61 +72,45 @@ Note: Must be placed west/left of and R&D console to function. A = A / max(1, (being_built.materials[M])) return A -/obj/machinery/r_n_d/protolathe/attackby(obj/item/O, mob/user, params) - if (shocked) - shock(user,50) - if (default_deconstruction_screwdriver(user, "protolathe_t", "protolathe", O)) - if(linked_console) - linked_console.linked_lathe = null - linked_console = null - return +//we eject the materials upon deconstruction. +/obj/machinery/r_n_d/protolathe/deconstruction() + for(var/obj/item/weapon/reagent_containers/glass/G in component_parts) + reagents.trans_to(G, G.reagents.maximum_volume) + materials.retrieve_all() + ..() - if(exchange_parts(user, O)) - return +/obj/machinery/r_n_d/protolathe/Insert_Item(obj/item/O, mob/user) - if (panel_open) - if(istype(O, /obj/item/weapon/crowbar)) - for(var/obj/item/weapon/reagent_containers/glass/G in component_parts) - reagents.trans_to(G, G.reagents.maximum_volume) - materials.retrieve_all() - default_deconstruction_crowbar(O) + if(O.is_open_container()) //inserting reagents into the machine + return 1 + + if(istype(O,/obj/item/stack/sheet)) + . = 1 + if(!is_insertion_ready(user)) + return + if(!materials.has_space( materials.get_item_material_amount(O) )) + user << "The [src.name]'s material bin is full! Please remove material before adding more." + return 1 + + var/obj/item/stack/sheet/stack = O + var/amount = round(input("How many sheets do you want to add?") as num)//No decimals + if(!in_range(src, stack) || !user.Adjacent(src)) + return + var/amount_inserted = materials.insert_stack(O,amount) + if(!amount_inserted) return 1 else - user << "You can't load the [src.name] while it's opened!" - return 1 - if (disabled) - return - if (!linked_console) - user << "The [src.name] must be linked to an R&D console first!" - return 1 - if (busy) - user << "The [src.name] is busy! Please wait for completion of previous operation." - return 1 - if (O.is_open_container()) - return - if (stat) - return 1 - if(!istype(O,/obj/item/stack/sheet)) - return 1 + var/stack_name = stack.name + busy = 1 + use_power(max(1000, (MINERAL_MATERIAL_AMOUNT*amount_inserted/10))) + user << "You add [amount_inserted] sheets to the [src.name]." + overlays += "protolathe_[stack_name]" + sleep(10) + overlays -= "protolathe_[stack_name]" + busy = 0 + updateUsrDialog() - if(!materials.has_space( materials.get_item_material_amount(O) )) - user << "The [src.name]'s material bin is full! Please remove material before adding more." - return 1 - - var/obj/item/stack/sheet/stack = O - var/amount = round(input("How many sheets do you want to add?") as num)//No decimals - if(!in_range(src, stack) || !user.Adjacent(src)) - return - var/amount_inserted = materials.insert_stack(O,amount) - if(!amount_inserted) - return 1 + else if(user.a_intent != "harm") + user << "You cannot insert this item into the [name]!" else - var/stack_name = stack.name - busy = 1 - use_power(max(1000, (MINERAL_MATERIAL_AMOUNT*amount_inserted/10))) - user << "You add [amount_inserted] sheets to the [src.name]." - overlays += "protolathe_[stack_name]" - sleep(10) - overlays -= "protolathe_[stack_name]" - busy = 0 - updateUsrDialog() + return 0 \ No newline at end of file diff --git a/code/modules/research/rdmachines.dm b/code/modules/research/rdmachines.dm index db4337bf670..7fb6e811822 100644 --- a/code/modules/research/rdmachines.dm +++ b/code/modules/research/rdmachines.dm @@ -14,6 +14,7 @@ var/disabled = 0 var/shocked = 0 var/obj/machinery/computer/rdconsole/linked_console + var/obj/item/loaded_item = null //the item loaded inside the machine (currently only used by experimentor and destructive analyzer) /obj/machinery/r_n_d/New() ..() @@ -39,9 +40,62 @@ /obj/machinery/r_n_d/attack_hand(mob/user) if(shocked) - shock(user,50) + if(shock(user,50)) + return if(panel_open) wires.interact(user) +/obj/machinery/r_n_d/attackby(obj/item/O, mob/user, params) + if (shocked) + if(shock(user,50)) + return 1 + if (default_deconstruction_screwdriver(user, "[initial(icon_state)]_t", initial(icon_state), O)) + if(linked_console) + linked_console.linked_lathe = null + linked_console = null + return + if(exchange_parts(user, O)) + return + if(default_deconstruction_crowbar(O)) + return + if(Insert_Item(O, user)) + return 1 + else + return ..() + +//proc used to handle inserting items or reagents into r_n_d machines +/obj/machinery/r_n_d/proc/Insert_Item(obj/item/I, mob/user) + return + +//whether the machine can have an item inserted in its current state. +/obj/machinery/r_n_d/proc/is_insertion_ready(mob/user) + if(panel_open) + user << "You can't load the [src.name] while it's opened!" + return + if (disabled) + return + if (!linked_console) + user << "The [name] must be linked to an R&D console first!" + return + if (busy) + user << "The [src.name] is busy right now." + return + if(stat & BROKEN) + user << "The [src.name] is broken." + return + if(stat & NOPOWER) + user << "The [src.name] has no power." + return + if(loaded_item) + user << "The [src] is already loaded." + return + return 1 + + +//we eject the loaded item when deconstructing the machine +/obj/machinery/r_n_d/deconstruction() + if(loaded_item) + loaded_item.loc = loc + ..() \ No newline at end of file diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index d60c092f25e..9377ac45165 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -124,20 +124,10 @@ env.merge(removed) air_update_turf() -/obj/machinery/r_n_d/server/attackby(obj/item/O, mob/user, params) - if (disabled) - return - if (shocked) - shock(user,50) - if (default_deconstruction_screwdriver(user, "server_o", "server", O)) - return - if(exchange_parts(user, O)) - return - if (panel_open) - if(istype(O, /obj/item/weapon/crowbar)) - griefProtection() - default_deconstruction_crowbar(O) - return 1 +//called when the server is deconstructed. +/obj/machinery/r_n_d/server/deconstruction() + griefProtection() + ..() /obj/machinery/r_n_d/server/attack_hand(mob/user as mob) // I guess only exists to stop ninjas or hell does it even work I dunno. See also ninja gloves. if (disabled) @@ -323,9 +313,8 @@ return /obj/machinery/computer/rdservercontrol/attackby(obj/item/weapon/D, mob/user, params) - ..() + . = ..() src.updateUsrDialog() - return /obj/machinery/computer/rdservercontrol/emag_act(mob/user) if(!emagged) diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm index 764f3d3fa45..1a12c3eb759 100644 --- a/code/modules/shuttle/emergency.dm +++ b/code/modules/shuttle/emergency.dm @@ -7,46 +7,31 @@ var/list/authorized = list() -/obj/machinery/computer/emergency_shuttle/attackby(obj/item/weapon/card/W, mob/user, params) - if(stat & (BROKEN|NOPOWER)) - return - if(!istype(W, /obj/item/weapon/card)) - return - if(SSshuttle.emergency.mode != SHUTTLE_DOCKED) - return - if(!user) - return - if(SSshuttle.emergency.timeLeft() < 11) - return - if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) - if (istype(W, /obj/item/device/pda)) - var/obj/item/device/pda/pda = W - W = pda.id - if (!W:access) //no access - user << "The access level of [W:registered_name]\'s card is not high enough. " +/obj/machinery/computer/emergency_shuttle/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/weapon/card/id)) + var/obj/item/weapon/card/id/ID = I + if(stat & (BROKEN|NOPOWER)) return - - var/list/cardaccess = W:access - if(!istype(cardaccess, /list) || !cardaccess.len) //no access - user << "The access level of [W:registered_name]\'s card is not high enough. " + if(SSshuttle.emergency.mode != SHUTTLE_DOCKED) + return + if(SSshuttle.emergency.timeLeft() < 11) + return + if(!(access_heads in ID.access)) //doesn't have this access + user << "The access level of [ID.registered_name]\'s card is not high enough. " return - - if(!(access_heads in W:access)) //doesn't have this access - user << "The access level of [W:registered_name]\'s card is not high enough. " - return 0 var/choice = alert(user, text("Would you like to (un)authorize a shortened launch time? [] authorization\s are still needed. Use abort to cancel all authorizations.", src.auth_need - src.authorized.len), "Shuttle Launch", "Authorize", "Repeal", "Abort") - if(SSshuttle.emergency.mode != SHUTTLE_DOCKED || user.get_active_hand() != W) - return 0 + if(SSshuttle.emergency.mode != SHUTTLE_DOCKED || user.get_active_hand() != ID) + return var/seconds = SSshuttle.emergency.timeLeft() if(seconds <= 10) - return 0 + return switch(choice) if("Authorize") - if(!authorized.Find(W:registered_name)) - authorized += W:registered_name + if(!authorized.Find(ID.registered_name)) + authorized += ID.registered_name if(auth_need - authorized.len > 0) message_admins("[key_name_admin(user.client)](?) (FLW) has authorized early shuttle launch ",0,1) log_game("[key_name(user)] has authorized early shuttle launch in ([x],[y],[z])") @@ -58,13 +43,15 @@ SSshuttle.emergency.setTimer(100) if("Repeal") - if(authorized.Remove(W:registered_name)) + if(authorized.Remove(ID.registered_name)) minor_announce("[auth_need - authorized.len] authorizations needed until shuttle is launched early") if("Abort") if(authorized.len) minor_announce("All authorizations to launch the shuttle early have been revoked.") authorized.Cut() + else + return ..() /obj/machinery/computer/emergency_shuttle/emag_act(mob/user) if(!emagged && SSshuttle.emergency.mode == SHUTTLE_DOCKED) diff --git a/code/modules/telesci/telepad.dm b/code/modules/telesci/telepad.dm index 45d0a39adf9..8e640ed006d 100644 --- a/code/modules/telesci/telepad.dm +++ b/code/modules/telesci/telepad.dm @@ -40,7 +40,10 @@ if(exchange_parts(user, I)) return - default_deconstruction_crowbar(I) + if(default_deconstruction_crowbar(I)) + return + + return ..() //CARGO TELEPAD// @@ -64,7 +67,7 @@ else if(!anchored) anchored = 1 user << "\The [src] is now secured." - if(istype(W, /obj/item/weapon/screwdriver)) + else if(istype(W, /obj/item/weapon/screwdriver)) if(stage == 0) playsound(src, 'sound/items/Screwdriver.ogg', 50, 1) user << "You unscrew the telepad's tracking beacon." @@ -73,12 +76,20 @@ playsound(src, 'sound/items/Screwdriver.ogg', 50, 1) user << "You screw in the telepad's tracking beacon." stage = 0 - if(istype(W, /obj/item/weapon/weldingtool) && stage == 1) - playsound(src, 'sound/items/Welder.ogg', 50, 1) - user << "You disassemble the telepad." - new /obj/item/stack/sheet/metal(get_turf(src)) - new /obj/item/stack/sheet/glass(get_turf(src)) - qdel(src) + else if(istype(W, /obj/item/weapon/weldingtool) && stage == 1) + var/obj/item/weapon/weldingtool/WT = W + if(WT.remove_fuel(0,user)) + playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1) + user << "You start disassembling [src]..." + if(do_after(user,20/WT.toolspeed, target = src)) + if(!WT.isOn()) + return + user << "You disassemble [src]." + new /obj/item/stack/sheet/metal(get_turf(src)) + new /obj/item/stack/sheet/glass(get_turf(src)) + qdel(src) + else + return ..() ///TELEPAD CALLER/// /obj/item/device/telepad_beacon diff --git a/icons/obj/machines/research.dmi b/icons/obj/machines/research.dmi index de0b2780af913dd55f4cbdfd458fff27cd83d940..741f770f68641540b296a16d1f8ba187f310646c 100644 GIT binary patch delta 84 zcmV-a0IUDMlmWn$0gxmCZ?Ppe0YKKn{TZC Date: Sun, 24 Apr 2016 20:38:33 +0200 Subject: [PATCH 114/265] Same things but with structures now. --- code/datums/martial.dm | 59 ++--- code/game/gamemodes/handofgod/structures.dm | 95 ++++--- .../gamemodes/miniantags/bot_swarm/swarmer.dm | 49 ++-- code/game/mecha/mech_fabricator.dm | 20 +- code/game/mecha/mecha_defense.dm | 35 +-- code/game/objects/effects/aliens.dm | 164 +++++------- code/game/objects/effects/spiders.dm | 51 ++-- code/game/objects/items/devices/PDA/PDA.dm | 28 +- .../objects/items/devices/laserpointer.dm | 17 +- code/game/objects/items/robot/robot_parts.dm | 58 ++-- code/game/objects/items/toys.dm | 97 ++++--- code/game/objects/items/weapons/RSF.dm | 207 +++------------ .../objects/items/weapons/holosign_creator.dm | 50 ++-- .../objects/items/weapons/pneumaticCannon.dm | 43 ++- code/game/objects/structures/ai_core.dm | 22 +- .../structures/beds_chairs/alien_nest.dm | 24 +- .../structures/crates_lockers/closets.dm | 38 +-- .../crates_lockers/closets/secure/personal.dm | 37 ++- .../crates_lockers/closets/statue.dm | 26 +- code/game/objects/structures/displaycase.dm | 135 ++++++---- code/game/objects/structures/false_walls.dm | 39 +-- code/game/objects/structures/fireaxe.dm | 83 +++--- code/game/objects/structures/grille.dm | 101 +++---- code/game/objects/structures/guncase.dm | 9 +- code/game/objects/structures/mineral_doors.dm | 17 +- code/game/objects/structures/mirror.dm | 104 ++++---- code/game/objects/structures/signs.dm | 26 +- code/game/objects/structures/statues.dm | 77 +++--- code/game/objects/structures/tables_racks.dm | 249 ++++++++++-------- .../structures/transit_tubes/station.dm | 28 +- code/game/objects/structures/watercloset.dm | 70 ++--- code/game/objects/structures/window.dm | 137 ++++------ code/modules/vehicles/pimpin_ride.dm | 25 +- 33 files changed, 1050 insertions(+), 1170 deletions(-) diff --git a/code/datums/martial.dm b/code/datums/martial.dm index d69b28cd0b1..d1b498f5070 100644 --- a/code/datums/martial.dm +++ b/code/datums/martial.dm @@ -540,38 +540,35 @@ if(C.stat) user << "It would be dishonorable to attack a foe while they cannot retaliate." return - switch(user.a_intent) - if("disarm") - if(!wielded) - return ..() - if(!ishuman(target)) - return ..() - var/mob/living/carbon/human/H = target - var/list/fluffmessages = list("[user] clubs [H] with [src]!", \ - "[user] smacks [H] with the butt of [src]!", \ - "[user] broadsides [H] with [src]!", \ - "[user] smashes [H]'s head with [src]!", \ - "[user] beats [H] with front of [src]!", \ - "[user] twirls and slams [H] with [src]!") - H.visible_message("[pick(fluffmessages)]", \ - "[pick(fluffmessages)]") - playsound(get_turf(user), 'sound/effects/woodhit.ogg', 75, 1, -1) - H.adjustStaminaLoss(rand(13,20)) - if(prob(10)) - H.visible_message("[H] collapses!", \ - "Your legs give out!") - H.Weaken(4) - if(H.staminaloss && !H.sleeping) - var/total_health = (H.health - H.staminaloss) - if(total_health <= config.health_threshold_crit && !H.stat) - H.visible_message("[user] delivers a heavy hit to [H]'s head, knocking them out cold!", \ - "[user] knocks you unconscious!") - H.SetSleeping(30) - H.adjustBrainLoss(25) - return - else + if(user.a_intent == "disarm") + if(!wielded) return ..() - return ..() + if(!ishuman(target)) + return ..() + var/mob/living/carbon/human/H = target + var/list/fluffmessages = list("[user] clubs [H] with [src]!", \ + "[user] smacks [H] with the butt of [src]!", \ + "[user] broadsides [H] with [src]!", \ + "[user] smashes [H]'s head with [src]!", \ + "[user] beats [H] with front of [src]!", \ + "[user] twirls and slams [H] with [src]!") + H.visible_message("[pick(fluffmessages)]", \ + "[pick(fluffmessages)]") + playsound(get_turf(user), 'sound/effects/woodhit.ogg', 75, 1, -1) + H.adjustStaminaLoss(rand(13,20)) + if(prob(10)) + H.visible_message("[H] collapses!", \ + "Your legs give out!") + H.Weaken(4) + if(H.staminaloss && !H.sleeping) + var/total_health = (H.health - H.staminaloss) + if(total_health <= config.health_threshold_crit && !H.stat) + H.visible_message("[user] delivers a heavy hit to [H]'s head, knocking them out cold!", \ + "[user] knocks you unconscious!") + H.SetSleeping(30) + H.adjustBrainLoss(25) + else + return ..() /obj/item/weapon/twohanded/bostaff/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance) if(wielded) diff --git a/code/game/gamemodes/handofgod/structures.dm b/code/game/gamemodes/handofgod/structures.dm index 309efa87a89..f86f4630683 100644 --- a/code/game/gamemodes/handofgod/structures.dm +++ b/code/game/gamemodes/handofgod/structures.dm @@ -52,15 +52,8 @@ return ..() -/obj/structure/divine/proc/healthcheck() - if(!health) - visible_message("\The [src] was destroyed!") - qdel(src) - /obj/structure/divine/attackby(obj/item/I, mob/user) - if(!I || (I.flags & ABSTRACT)) - return 0 //Structure conversion/capture if(istype(I, /obj/item/weapon/godstaff)) @@ -71,35 +64,52 @@ if(G.god && deity != G.god) assign_deity(G.god, alert_old_deity = TRUE) visible_message("\The [src] has been captured by [user]!") - return + else + return ..() +/obj/structure/divine/attacked_by(obj/item/I, mob/living/user) + ..() + take_damage(I.force, I.damtype, 1) + +/obj/structure/divine/proc/take_damage(damage, damage_type = BRUTE, sound_effect = 1) + switch(damage_type) + if(BRUTE) + if(sound_effect) + if(damage) + playsound(loc, 'sound/weapons/smash.ogg', 50, 1) + else + playsound(loc, 'sound/weapons/tap.ogg', 50, 1) + if(BURN) + if(sound_effect) + playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) + else + return + health -= damage + if(!health) + visible_message("\The [src] was destroyed!") + qdel(src) + + +/obj/structure/divine/bullet_act(obj/item/projectile/P) + . = ..() + take_damage(P.damage, P.damage_type, 0) + + +/obj/structure/divine/attack_alien(mob/living/carbon/alien/humanoid/user) user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src) - playsound(get_turf(src), I.hitsound, 50, 1) - visible_message("\The [src] has been attacked with \the [I][(user ? " by [user]" : ".")]!") - health = max(0, health-I.force) - healthcheck() + add_hiddenprint(user) + visible_message("\The [user] slashes at [src]!") + playsound(src.loc, 'sound/weapons/slash.ogg', 100, 1) + take_damage(20, BRUTE, 0) - -/obj/structure/divine/bullet_act(obj/item/projectile/Proj) - if(!Proj) - return 0 - - if(Proj.damage_type == BRUTE || Proj.damage_type == BURN) - health = max(0, health-Proj.damage) - healthcheck() - - -/obj/structure/divine/attack_animal(mob/living/simple_animal/M) - if(!M) - return 0 - - visible_message("\The [src] has been attacked by \the [M]!") - var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) - if(!damage) - return - health = max(0, health-damage) - healthcheck() +/obj/machinery/attack_animal(mob/living/simple_animal/M) + M.changeNext_move(CLICK_CD_MELEE) + M.do_attack_animation(src) + if(M.melee_damage_upper > 0) + M.visible_message("[M.name] smashes against \the [src.name].",\ + "You smash against the [src.name].") + take_damage(rand(M.melee_damage_lower,M.melee_damage_upper), M.melee_damage_type, 1) /obj/structure/divine/proc/assign_deity(mob/camera/god/new_deity, alert_old_deity = TRUE) @@ -199,7 +209,8 @@ user << "\The [src] does not require any more greater gems!" return - ..() + else + return ..() /obj/structure/divine/construction_holder/proc/check_completion() @@ -239,11 +250,22 @@ /obj/structure/divine/nexus/ex_act() return - -/obj/structure/divine/nexus/healthcheck() +/obj/structure/divine/nexus/take_damage(damage, damage_type = BRUTE, sound_effect = 1) + switch(damage_type) + if(BRUTE) + if(sound_effect) + if(damage) + playsound(loc, 'sound/weapons/smash.ogg', 50, 1) + else + playsound(loc, 'sound/weapons/tap.ogg', 50, 1) + if(BURN) + if(sound_effect) + playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) + else + return + health -= damage if(deity) deity.update_health_hud() - if(!health) if(!qdeleted(deity) && deity.nexus_required) deity << "Your nexus was destroyed. You feel yourself fading..." @@ -257,7 +279,6 @@ /obj/structure/divine/nexus/process() - healthcheck() if(deity) deity.update_followers() deity.add_faith(faith_regen_rate + (powerpylons.len / 5) + (deity.alive_followers / 3)) diff --git a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm index f0c72d39e2a..4bebddd1564 100644 --- a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm +++ b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm @@ -371,44 +371,47 @@ mouse_opacity = 1 var/health = 30 -/obj/effect/swarmer/destructible/proc/TakeDamage(damage) +/obj/effect/swarmer/destructible/proc/take_damage(damage, damage_type = BRUTE, sound_effect = 1) + switch(damage_type) + if(BRUTE) + if(sound_effect) + playsound(loc, 'sound/weapons/Egloves.ogg', 80, 1) + if(BURN) + if(sound_effect) + playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) + else + return health -= damage if(health <= 0) qdel(src) -/obj/effect/swarmer/destructible/bullet_act(obj/item/projectile/Proj) - if(Proj.damage) - if((Proj.damage_type == BRUTE || Proj.damage_type == BURN)) - TakeDamage(Proj.damage) - ..() +/obj/effect/swarmer/destructible/bullet_act(obj/item/projectile/P) + . = ..() + take_damage(P.damage, P.damage_type) -/obj/effect/swarmer/destructible/attackby(obj/item/weapon/I, mob/living/user, params) - if(istype(I, /obj/item/weapon)) - user.changeNext_move(CLICK_CD_MELEE) - user.do_attack_animation(src) - TakeDamage(I.force) - return +/obj/effect/swarmer/destructible/attacked_by(obj/item/I, mob/living/user) + ..() + take_damage(I.force, I.damtype) /obj/effect/swarmer/destructible/ex_act() qdel(src) - return /obj/effect/swarmer/destructible/blob_act() qdel(src) - return /obj/effect/swarmer/destructible/emp_act() qdel(src) - return -/obj/effect/swarmer/destructible/attack_animal(mob/living/user) - if(isanimal(user)) - var/mob/living/simple_animal/S = user - S.do_attack_animation(src) - user.changeNext_move(CLICK_CD_MELEE) - if(S.melee_damage_type == BRUTE || S.melee_damage_type == BURN) - TakeDamage(rand(S.melee_damage_lower, S.melee_damage_upper)) - return +/obj/effect/swarmer/destructible/attack_alien(mob/living/user) + user.do_attack_animation(src) + user.changeNext_move(CLICK_CD_MELEE) + take_damage(rand(20,30)) + +/obj/effect/swarmer/destructible/attack_animal(mob/living/simple_animal/S) + S.do_attack_animation(src) + S.changeNext_move(CLICK_CD_MELEE) + if(S.melee_damage_upper) + take_damage(rand(S.melee_damage_lower, S.melee_damage_upper), S.melee_damage_type) /mob/living/simple_animal/hostile/swarmer/proc/CreateTrap() set name = "Create trap" diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 5ef0cfdb794..5748be75618 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -459,6 +459,9 @@ return result +/obj/machinery/mecha_part_fabricator/deconstruction() + for(var/material in resources) + remove_material(material, resources[material]/MINERAL_MATERIAL_AMOUNT) /obj/machinery/mecha_part_fabricator/attackby(obj/W, mob/user, params) if(default_deconstruction_screwdriver(user, "fab-o", "fab-idle", W)) @@ -467,17 +470,13 @@ if(exchange_parts(user, W)) return - if(panel_open) - if(istype(W, /obj/item/weapon/crowbar)) - for(var/material in resources) - remove_material(material, resources[material]/MINERAL_MATERIAL_AMOUNT) - default_deconstruction_crowbar(W) - return 1 - else - user << "You can't load \the [name] while it's opened!" - return 1 + if(default_deconstruction_crowbar(W)) + return 1 if(istype(W, /obj/item/stack)) + if(panel_open) + user << "You can't load \the [name] while it's opened!" + return 1 var/material switch(W.type) if(/obj/item/stack/sheet/mineral/gold) @@ -519,7 +518,8 @@ overlays -= "fab-load-[material2name(material)]" //No matter what the overlay shall still be deleted else user << "\The [src] cannot hold any more [sname] sheet\s!" - return + else + return ..() /obj/machinery/mecha_part_fabricator/proc/material2name(ID) return copytext(ID,2) diff --git a/code/game/mecha/mecha_defense.dm b/code/game/mecha/mecha_defense.dm index 9b0fc6d69e6..badf0ee4804 100644 --- a/code/game/mecha/mecha_defense.dm +++ b/code/game/mecha/mecha_defense.dm @@ -183,7 +183,7 @@ else user << "You were unable to attach [W] to [src]!" return - if(istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) + if(W.GetID()) if(add_req_access || maint_access) if(internals_access_allowed(user)) var/obj/item/weapon/card/id/id_card @@ -223,7 +223,7 @@ else user << "You need two lengths of cable to fix this mech!" return - else if(istype(W, /obj/item/weapon/screwdriver)) + else if(istype(W, /obj/item/weapon/screwdriver) && user.a_intent != "harm") if(internal_damage & MECHA_INT_TEMP_CONTROL) clearInternalDamage(MECHA_INT_TEMP_CONTROL) user << "You repair the damaged temperature controller." @@ -278,22 +278,25 @@ W.forceMove(src) user.visible_message("[user] attaches [W] to [src].", "You attach [W] to [src].") return + else + return ..() - else if(!(W.flags&NOBLUDGEON)) - user.changeNext_move(CLICK_CD_MELEE) // Ugh. Ideally we shouldn't be setting cooldowns outside of click code. - user.do_attack_animation(src) - log_message("Attacked by [W]. Attacker - [user]") - var/deflection = 1 - var/dam_coeff = 1 - for(var/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster/B in equipment) - if(B.attack_react(user)) - deflection *= B.deflect_coeff - dam_coeff *= B.damage_coeff - break - user.visible_message("[user] hits [src] with [W].", "You hit [src] with [W].") - take_damage(round(W.force*dam_coeff),W.damtype, user.dir, deflection, dam_coeff) +/obj/mecha/attacked_by(obj/item/I, mob/living/user) + log_message("Attacked by [I]. Attacker - [user]") + var/deflection = deflect_chance + var/dam_coeff = 1 + for(var/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster/B in equipment) + if(B.attack_react(user)) + deflection *= B.deflect_coeff + dam_coeff *= B.damage_coeff + break + if(prob(deflection)) + user << "\The [I.name] bounces off [name]'s armor." + log_append_to_last("Armor saved.") + else + user.visible_message("[user] hits [src] with [I].", "You hit [src] with [I].") + take_damage(round(I.force*dam_coeff),I.damtype) check_for_internal_damage(list(MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST)) - return 1 /obj/mecha/proc/mech_toxin_damage(mob/living/target) diff --git a/code/game/objects/effects/aliens.dm b/code/game/objects/effects/aliens.dm index cc816f1d8f1..21ae2c75996 100644 --- a/code/game/objects/effects/aliens.dm +++ b/code/game/objects/effects/aliens.dm @@ -9,6 +9,40 @@ /obj/structure/alien icon = 'icons/mob/alien.dmi' + var/health = 100 + +/obj/structure/alien/attacked_by(obj/item/I, mob/user) + ..() + var/damage = I.force + switch(I.damtype) + if(BRUTE) + damage *= 0.25 + if(BURN) + damage *= 2 + else + damage = 0 //stamina damage does no damage + take_damage(damage, I.damtype) + +/obj/structure/alien/proc/take_damage(amount, damage_type = BRUTE, sound_effect = 1) + switch(damage_type) + if(BRUTE) + if(sound_effect) + playsound(loc, 'sound/effects/attackblob.ogg', 100, 1) + if(BURN) + if(sound_effect) + playsound(loc, 'sound/items/Welder.ogg', 100, 1) + else + return + health = max(health - amount, 0) + if(!health) + Break() + +/obj/structure/alien/proc/Break() + qdel(src) + +/obj/structure/alien/bullet_act(obj/item/projectile/P) + . = ..() + take_damage(P.damage, P.damage_type) /* * Resin @@ -22,9 +56,10 @@ opacity = 1 anchored = 1 canSmoothWith = list(/obj/structure/alien/resin) - var/health = 200 - var/resintype = null + health = 200 smooth = SMOOTH_TRUE + var/resintype = null + /obj/structure/alien/resin/New(location) @@ -66,32 +101,17 @@ resintype = "membrane" canSmoothWith = list(/obj/structure/alien/resin/wall, /obj/structure/alien/resin/membrane) -/obj/structure/alien/resin/proc/healthcheck() - if(health <=0) - qdel(src) - - -/obj/structure/alien/resin/bullet_act(obj/item/projectile/Proj) - health -= Proj.damage - ..() - healthcheck() - - /obj/structure/alien/resin/ex_act(severity, target) switch(severity) if(1) - health -= 150 + take_damage(150, BRUTE, 0) if(2) - health -= 100 + take_damage(100, BRUTE, 0) if(3) - health -= 50 - healthcheck() - - -/obj/structure/alien/resin/blob_act() - health -= 50 - healthcheck() + take_damage(50, BRUTE, 0) +/obj/structure/alien/blob_act() + take_damage(50, BRUTE, 0) /obj/structure/alien/resin/hitby(atom/movable/AM) ..() @@ -101,16 +121,12 @@ else var/obj/O = AM tforce = O.throwforce - playsound(loc, 'sound/effects/attackblob.ogg', 100, 1) - health -= tforce - healthcheck() + take_damage(tforce) /obj/structure/alien/resin/attack_hulk(mob/living/carbon/human/user) ..(user, 1) - user.do_attack_animation(src) user.visible_message("[user] destroys [src]!") - health = 0 - healthcheck() + take_damage(200) /obj/structure/alien/resin/attack_paw(mob/user) return attack_hand(user) @@ -119,23 +135,16 @@ /obj/structure/alien/resin/attack_alien(mob/living/user) user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src) - if(islarva(user)) - return user.visible_message("[user] claws at the resin!") - playsound(loc, 'sound/effects/attackblob.ogg', 100, 1) - health -= 50 - if(health <= 0) - user.visible_message("[user] slices the [name] apart!") - healthcheck() - - -/obj/structure/alien/resin/attackby(obj/item/I, mob/living/user, params) - user.changeNext_move(CLICK_CD_MELEE) - health -= I.force - playsound(loc, 'sound/effects/attackblob.ogg', 100, 1) - healthcheck() - ..() + take_damage(50) +/obj/structure/alien/resin/attack_animal(mob/living/simple_animal/M) + M.changeNext_move(CLICK_CD_MELEE) + M.do_attack_animation(src) + if(M.melee_damage_upper == 0 || (M.melee_damage_type != BRUTE && M.melee_damage_type != BURN)) + return + visible_message("[M] [M.attacktext] [src]!") + take_damage(M.melee_damage_upper, M.melee_damage_type) /obj/structure/alien/resin/CanPass(atom/movable/mover, turf/target, height=0) return !density @@ -155,7 +164,7 @@ density = 0 layer = TURF_LAYER + 0.09 icon_state = "weeds" - var/health = 15 + health = 15 var/obj/structure/alien/weeds/node/linked_node = null canSmoothWith = list(/obj/structure/alien/weeds, /turf/closed/wall) smooth = SMOOTH_MORE @@ -208,33 +217,9 @@ qdel(src) -/obj/structure/alien/weeds/attackby(obj/item/I, mob/user, params) - user.changeNext_move(CLICK_CD_MELEE) - if(I.attack_verb.len) - visible_message("[user] has [pick(I.attack_verb)] [src] with [I]!") - else - visible_message("[user] has attacked [src] with [I]!") - - var/damage = I.force / 4 - if(istype(I, /obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/WT = I - if(WT.remove_fuel(0, user)) - damage = 15 - playsound(loc, 'sound/items/Welder.ogg', 100, 1) - - health -= damage - healthcheck() - - -/obj/structure/alien/weeds/proc/healthcheck() - if(health <= 0) - qdel(src) - - /obj/structure/alien/weeds/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > 300) - health -= 5 - healthcheck() + take_damage(5, BURN, 0) //Weed nodes @@ -271,7 +256,7 @@ icon_state = "egg_growing" density = 0 anchored = 1 - var/health = 100 + health = 100 var/status = GROWING //can be GROWING, GROWN or BURST; all mutually exclusive layer = MOB_LAYER @@ -340,43 +325,16 @@ remove_from_proximity_list(src, 1) ..() -/obj/structure/alien/egg/bullet_act(obj/item/projectile/Proj) - health -= Proj.damage - ..() - healthcheck() - - -/obj/structure/alien/egg/attackby(obj/item/I, mob/user, params) - if(I.attack_verb.len) - visible_message("[user] has [pick(I.attack_verb)] [src] with [I]!") - else - visible_message("[user] has attacked [src] with [I]!") - - var/damage = I.force / 4 - if(istype(I, /obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/WT = I - - if(WT.remove_fuel(0, user)) - damage = 15 - playsound(loc, 'sound/items/Welder.ogg', 100, 1) - - health -= damage - user.changeNext_move(CLICK_CD_MELEE) - healthcheck() - - -/obj/structure/alien/egg/proc/healthcheck() - if(health <= 0) - if(status != BURST && status != BURSTING) - Burst() - else if(status == BURST && prob(50)) - qdel(src) //Remove the egg after it has been hit after bursting. +/obj/structure/alien/egg/Break() + if(status != BURST && status != BURSTING) + Burst() + else if(status == BURST) + qdel(src) //Remove the egg after it has been hit after bursting. /obj/structure/alien/egg/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > 500) - health -= 5 - healthcheck() + take_damage(5, BURN, 0) /obj/structure/alien/egg/HasProximity(atom/movable/AM) diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm index 528ccafa5b9..b8d0a99bba9 100644 --- a/code/game/objects/effects/spiders.dm +++ b/code/game/objects/effects/spiders.dm @@ -19,37 +19,32 @@ qdel(src) return -/obj/effect/spider/attackby(obj/item/weapon/W, mob/user, params) - if(W.attack_verb.len) - visible_message("[user] has [pick(W.attack_verb)] \the [src] with \the [W]!") - else - visible_message("[user] has attacked \the [src] with \the [W]!") - - var/damage = W.force / 4 - - if(istype(W, /obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/WT = W - - if(WT.remove_fuel(0, user)) - damage = 15 - playsound(loc, 'sound/items/Welder.ogg', 100, 1) - - health -= damage - healthcheck() - -/obj/effect/spider/bullet_act(obj/item/projectile/Proj) +/obj/effect/spider/attacked_by(obj/item/I, mob/user) ..() - health -= Proj.damage - healthcheck() + var/damage = I.force + take_damage(damage, I.damtype, 1) -/obj/effect/spider/proc/healthcheck() +/obj/effect/spider/bullet_act(obj/item/projectile/P) + . = ..() + take_damage(P.damage, P.damage_type, 0) + +/obj/effect/spider/proc/take_damage(damage, damage_type = BRUTE, sound_effect = 1) + switch(damage_type) + if(BURN) + damage *= 2 + if(sound_effect) + playsound(loc, 'sound/items/Welder.ogg', 100, 1) + if(BRUTE)//the stickiness of the web mutes all attack sounds except fire damage type + damage *= 0.25 + else + return + health -= damage if(health <= 0) qdel(src) /obj/effect/spider/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > 300) - health -= 5 - healthcheck() + take_damage(5, BURN, 0) /obj/effect/spider/stickyweb icon_state = "stickyweb1" @@ -125,14 +120,6 @@ else ..() -/obj/effect/spider/spiderling/proc/die() - visible_message("[src] dies!") - qdel(src) - -/obj/effect/spider/spiderling/healthcheck() - if(health <= 0) - die() - /obj/effect/spider/spiderling/process() if(travelling_in_vent) if(istype(src.loc, /turf)) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 33760586938..ebd6e3d05c1 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -10,6 +10,7 @@ var/global/list/obj/item/device/pda/PDAs = list() icon = 'icons/obj/pda.dmi' icon_state = "pda" item_state = "electronic" + flags = NOBLUDGEON //phil235 test it w_class = 1 slot_flags = SLOT_ID | SLOT_BELT origin_tech = "programming=2" @@ -728,7 +729,6 @@ var/global/list/obj/item/device/pda/PDAs = list() // access to status display signals /obj/item/device/pda/attackby(obj/item/C, mob/user, params) - ..() if(istype(C, /obj/item/weapon/cartridge) && !cartridge) cartridge = C if(!user.unEquip(C)) @@ -777,7 +777,8 @@ var/global/list/obj/item/device/pda/PDAs = list() var/obj/item/weapon/photo/P = C photo = P.img user << "You scan \the [C]." - return + else + return ..() /obj/item/device/pda/attack(mob/living/carbon/C, mob/living/user) if(istype(C)) @@ -821,23 +822,26 @@ var/global/list/obj/item/device/pda/PDAs = list() var/obj/item/weapon/tank/T = A atmosanalyzer_scan(T.air_contents, user, T) else if (istype(A, /obj/machinery/portable_atmospherics)) - var/obj/machinery/portable_atmospherics/T = A - atmosanalyzer_scan(T.air_contents, user, T) + var/obj/machinery/portable_atmospherics/PA = A + atmosanalyzer_scan(PA.air_contents, user, PA) else if (istype(A, /obj/machinery/atmospherics/pipe)) - var/obj/machinery/atmospherics/pipe/T = A - atmosanalyzer_scan(T.parent.air, user, T) + var/obj/machinery/atmospherics/pipe/P = A + atmosanalyzer_scan(P.parent.air, user, P) else if (istype(A, /obj/machinery/power/rad_collector)) - var/obj/machinery/power/rad_collector/T = A - if(T.P) atmosanalyzer_scan(T.P.air_contents, user, T) + var/obj/machinery/power/rad_collector/RC = A + if(RC.loaded_tank) + atmosanalyzer_scan(RC.loaded_tank.air_contents, user, RC) else if (istype(A, /obj/item/weapon/flamethrower)) - var/obj/item/weapon/flamethrower/T = A - if(T.ptank) atmosanalyzer_scan(T.ptank.air_contents, user, T) + var/obj/item/weapon/flamethrower/F = A + if(F.ptank) + atmosanalyzer_scan(F.ptank.air_contents, user, F) if (!scanmode && istype(A, /obj/item/weapon/paper) && owner) - if (!A:info) + var/obj/item/weapon/paper/PP = A + if (!PP.info) user << "Unable to scan! Paper is blank." return - notehtml = A:info + notehtml = PP.info note = replacetext(notehtml, "
", "\[br\]") note = replacetext(note, "
  • ", "\[*\]") note = replacetext(note, "
      ", "\[list\]") diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm index a5a5e2f5d0b..6ec1518cd18 100644 --- a/code/game/objects/items/devices/laserpointer.dm +++ b/code/game/objects/items/devices/laserpointer.dm @@ -5,7 +5,7 @@ icon_state = "pointer" item_state = "pen" var/pointer_icon_state - flags = CONDUCT + flags = CONDUCT | NOBLUDGEON slot_flags = SLOT_BELT materials = list(MAT_METAL=500, MAT_GLASS=500) w_class = 2 //Increased to 2, because diodes are w_class 2. Conservation of matter. @@ -38,11 +38,6 @@ ..() diode = new /obj/item/weapon/stock_parts/micro_laser/ultra - - -/obj/item/device/laser_pointer/attack(mob/living/M, mob/user) - laser_act(M, user) - /obj/item/device/laser_pointer/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/weapon/stock_parts/micro_laser)) if(!diode) @@ -53,20 +48,16 @@ user << "You install a [diode.name] in [src]." else user << "[src] already has a diode installed." - return else if(istype(W, /obj/item/weapon/screwdriver)) if(diode) user << "You remove the [diode.name] from \the [src]." diode.loc = get_turf(src.loc) diode = null - return - ..() - return + else + return ..() /obj/item/device/laser_pointer/afterattack(atom/target, mob/living/user, flag, params) - if(flag) //we're placing the object on a table or in backpack - return laser_act(target, user, params) /obj/item/device/laser_pointer/proc/laser_act(atom/target, mob/living/user, params) @@ -165,7 +156,7 @@ recharging = 1 SSobj.processing |= src if(energy <= 0) - user << "The [src]'s battery is overused, it needs time to recharge!" + user << "[src]'s battery is overused, it needs time to recharge!" recharge_locked = 1 flick_overlay(I, showto, 10) diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index d33c5a274e2..3be12d0b94f 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -86,21 +86,22 @@ return 0 /obj/item/robot_parts/robot_suit/attackby(obj/item/W, mob/user, params) - ..() - if(istype(W, /obj/item/stack/sheet/metal) && !l_arm && !r_arm && !l_leg && !r_leg && !chest && !head) + + if(istype(W, /obj/item/stack/sheet/metal)) var/obj/item/stack/sheet/metal/M = W - if (M.use(1)) - var/obj/item/weapon/ed209_assembly/B = new /obj/item/weapon/ed209_assembly - B.loc = get_turf(src) - user << "You arm the robot frame." - if (user.get_inactive_hand()==src) - user.unEquip(src) - user.put_in_inactive_hand(B) - qdel(src) - else - user << "You need one sheet of metal to start building ED-209!" - return - if(istype(W, /obj/item/robot_parts/l_leg)) + if(!l_arm && !r_arm && !l_leg && !r_leg && !chest && !head) + if (M.use(1)) + var/obj/item/weapon/ed209_assembly/B = new /obj/item/weapon/ed209_assembly + B.loc = get_turf(src) + user << "You arm the robot frame." + if (user.get_inactive_hand()==src) + user.unEquip(src) + user.put_in_inactive_hand(B) + qdel(src) + else + user << "You need one sheet of metal to start building ED-209!" + return + else if(istype(W, /obj/item/robot_parts/l_leg)) if(src.l_leg) return if(!user.unEquip(W)) @@ -109,7 +110,7 @@ src.l_leg = W src.updateicon() - if(istype(W, /obj/item/robot_parts/r_leg)) + else if(istype(W, /obj/item/robot_parts/r_leg)) if(src.r_leg) return if(!user.unEquip(W)) @@ -118,7 +119,7 @@ src.r_leg = W src.updateicon() - if(istype(W, /obj/item/robot_parts/l_arm)) + else if(istype(W, /obj/item/robot_parts/l_arm)) if(src.l_arm) return if(!user.unEquip(W)) @@ -127,7 +128,7 @@ src.l_arm = W src.updateicon() - if(istype(W, /obj/item/robot_parts/r_arm)) + else if(istype(W, /obj/item/robot_parts/r_arm)) if(src.r_arm) return if(!user.unEquip(W)) @@ -136,7 +137,7 @@ src.r_arm = W src.updateicon() - if(istype(W, /obj/item/robot_parts/chest)) + else if(istype(W, /obj/item/robot_parts/chest)) if(src.chest) return if(W:wired && W:cell) @@ -150,7 +151,7 @@ else user << "You need to attach a cell to it first!" - if(istype(W, /obj/item/robot_parts/head)) + else if(istype(W, /obj/item/robot_parts/head)) if(src.head) return if(W:flash2 && W:flash1) @@ -162,13 +163,13 @@ else user << "You need to attach a flash to it first!" - if (istype(W, /obj/item/device/multitool)) + else if (istype(W, /obj/item/device/multitool)) if(check_completion()) Interact(user) else user << "The endoskeleton must be assembled before debugging can begin!" - if(istype(W, /obj/item/device/mmi)) + else if(istype(W, /obj/item/device/mmi)) var/obj/item/device/mmi/M = W if(check_completion()) if(!istype(loc,/turf)) @@ -254,9 +255,10 @@ else user << "The MMI must go in after everything else!" - if(istype(W,/obj/item/weapon/pen)) + else if(istype(W,/obj/item/weapon/pen)) user << "You need to use a multitool to name [src]!" - return + else + return ..() /obj/item/robot_parts/robot_suit/proc/Interact(mob/user) var/t1 = text("Designation: [(created_name ? "[created_name]" : "Default Cyborg")]
      \n",src) @@ -308,7 +310,6 @@ return /obj/item/robot_parts/chest/attackby(obj/item/W, mob/user, params) - ..() if(istype(W, /obj/item/weapon/stock_parts/cell)) if(src.cell) user << "You have already inserted a cell!" @@ -319,7 +320,7 @@ W.loc = src src.cell = W user << "You insert the cell." - if(istype(W, /obj/item/stack/cable_coil)) + else if(istype(W, /obj/item/stack/cable_coil)) if(src.wired) user << "You have already inserted wire!" return @@ -329,10 +330,10 @@ user << "You insert the wire." else user << "You need one length of coil to wire it!" - return + else + return ..() /obj/item/robot_parts/head/attackby(obj/item/W, mob/user, params) - ..() if(istype(W, /obj/item/device/assembly/flash/handheld)) var/obj/item/device/assembly/flash/handheld/F = W if(src.flash1 && src.flash2) @@ -350,5 +351,6 @@ else src.flash1 = F user << "You insert the flash into the eye socket." - return + else + return ..() diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 1a4cea9c3b1..3b13f07ac98 100755 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -60,28 +60,40 @@ desc = "A translucent balloon with some form of liquid sloshing around in it." update_icon() -/obj/item/toy/balloon/attackby(obj/O, mob/user, params) - if(istype(O, /obj/item/weapon/reagent_containers/glass)) - if(O.reagents) - if(O.reagents.total_volume <= 0) - user << "[O] is empty." +/obj/item/toy/balloon/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/weapon/reagent_containers/glass)) + if(I.reagents) + if(I.reagents.total_volume <= 0) + user << "[I] is empty." else if(reagents.total_volume >= 10) user << "[src] is full." else desc = "A translucent balloon with some form of liquid sloshing around in it." - user << "You fill the balloon with the contents of [O]." - O.reagents.trans_to(src, 10) + user << "You fill the balloon with the contents of [I]." + I.reagents.trans_to(src, 10) update_icon() + else if(is_sharp(I)) + balloon_burst() + else + return ..() /obj/item/toy/balloon/throw_impact(atom/hit_atom) if(!..()) //was it caught by a mob? - if(reagents.total_volume >= 1) - visible_message("[src] bursts!","You hear a pop and a splash.") - reagents.reaction(get_turf(hit_atom)) - for(var/atom/A in get_turf(hit_atom)) - reagents.reaction(A) - icon_state = "burst" - qdel(src) + balloon_burst(hit_atom) + +/obj/item/toy/balloon/proc/balloon_burst(atom/AT) + if(reagents.total_volume >= 1) + var/turf/T + if(AT) + T = get_turf(AT) + else + T = get_turf(src) + T.visible_message("[src] bursts!","You hear a pop and a splash.") + reagents.reaction(T) + for(var/atom/A in T) + reagents.reaction(A) + icon_state = "burst" + qdel(src) /obj/item/toy/balloon/update_icon() if(src.reagents.total_volume >= 1) @@ -136,7 +148,7 @@ /obj/item/toy/gun/attackby(obj/item/toy/ammo/gun/A, mob/user, params) - if (istype(A, /obj/item/toy/ammo/gun)) + if(istype(A, /obj/item/toy/ammo/gun)) if (src.bullets >= 7) user << "It's already fully loaded!" return 1 @@ -153,7 +165,8 @@ src.bullets = 7 A.update_icon() return 1 - return + else + return ..() /obj/item/toy/gun/afterattack(atom/target as mob|obj|turf|area, mob/user, flag) if (flag) @@ -221,11 +234,9 @@ item_state = "sword0" w_class = 2 add_fingerprint(user) - return // Copied from /obj/item/weapon/melee/energy/sword/attackby /obj/item/toy/sword/attackby(obj/item/weapon/W, mob/living/user, params) - ..() if(istype(W, /obj/item/toy/sword)) if(W == src) user << "You try to attach the end of the plastic sword to... itself. You're not very smart, are you?" @@ -259,6 +270,8 @@ user.update_inv_l_hand(0) else user << "It's already fabulous!" + else + return ..() /* * Foam armblade @@ -816,44 +829,43 @@ user.visible_message("[user] shuffles the deck.", "You shuffle the deck.") cooldown = world.time -/obj/item/toy/cards/deck/attackby(obj/item/toy/cards/singlecard/C, mob/living/user, params) - ..() - if(istype(C)) - if(C.parentdeck == src) - if(!user.unEquip(C)) +/obj/item/toy/cards/deck/attackby(obj/item/I, mob/living/user, params) + if(istype(I, /obj/item/toy/cards/singlecard)) + var/obj/item/toy/cards/singlecard/SC = I + if(SC.parentdeck == src) + if(!user.unEquip(SC)) user << "The card is stuck to your hand, you can't add it to the deck!" return - src.cards += C.cardname + cards += SC.cardname user.visible_message("[user] adds a card to the bottom of the deck.","You add the card to the bottom of the deck.") - qdel(C) + qdel(SC) else user << "You can't mix cards from other decks!" if(cards.len > 26) - src.icon_state = "deck_[deckstyle]_full" + icon_state = "deck_[deckstyle]_full" else if(cards.len > 10) - src.icon_state = "deck_[deckstyle]_half" + icon_state = "deck_[deckstyle]_half" else if(cards.len > 1) - src.icon_state = "deck_[deckstyle]_low" - - -/obj/item/toy/cards/deck/attackby(obj/item/toy/cards/cardhand/C, mob/living/user, params) - ..() - if(istype(C)) - if(C.parentdeck == src) - if(!user.unEquip(C)) + icon_state = "deck_[deckstyle]_low" + else if(istype(I, /obj/item/toy/cards/cardhand)) + var/obj/item/toy/cards/cardhand/CH = I + if(CH.parentdeck == src) + if(!user.unEquip(CH)) user << "The hand of cards is stuck to your hand, you can't add it to the deck!" return - src.cards += C.currenthand + cards += CH.currenthand user.visible_message("[user] puts their hand of cards in the deck.", "You put the hand of cards in the deck.") - qdel(C) + qdel(CH) else user << "You can't mix cards from other decks!" if(cards.len > 26) - src.icon_state = "deck_[deckstyle]_full" + icon_state = "deck_[deckstyle]_full" else if(cards.len > 10) - src.icon_state = "deck_[deckstyle]_half" + icon_state = "deck_[deckstyle]_half" else if(cards.len > 1) - src.icon_state = "deck_[deckstyle]_low" + icon_state = "deck_[deckstyle]_low" + else + return ..() /obj/item/toy/cards/deck/MouseDrop(atom/over_object) var/mob/M = usr @@ -960,6 +972,8 @@ qdel(C) else user << "You can't mix cards from other decks!" + else + return ..() /obj/item/toy/cards/cardhand/apply_card_vars(obj/item/toy/cards/newobj,obj/item/toy/cards/sourceobj) ..() @@ -1049,7 +1063,8 @@ qdel(src) else user << "You can't mix cards from other decks!" - + else + return ..() /obj/item/toy/cards/singlecard/attack_self(mob/user) if(usr.stat || !ishuman(usr) || !usr.canmove || usr.restrained()) diff --git a/code/game/objects/items/weapons/RSF.dm b/code/game/objects/items/weapons/RSF.dm index 8b34ab841b5..38ba595e717 100644 --- a/code/game/objects/items/weapons/RSF.dm +++ b/code/game/objects/items/weapons/RSF.dm @@ -11,6 +11,7 @@ RSF opacity = 0 density = 0 anchored = 0 + flags = NOBLUDGEON var/matter = 0 var/mode = 1 w_class = 3 @@ -20,8 +21,7 @@ RSF return /obj/item/weapon/rsf/attackby(obj/item/weapon/W, mob/user, params) - ..() - if (istype(W, /obj/item/weapon/rcd_ammo)) + if(istype(W, /obj/item/weapon/rcd_ammo)) if ((matter + 10) > 30) user << "The RSF can't hold any more matter." return @@ -30,7 +30,8 @@ RSF playsound(src.loc, 'sound/machines/click.ogg', 10, 1) user << "The RSF now holds [matter]/30 fabrication-units." desc = "A RSF. It currently holds [matter]/30 fabrication-units." - return + else + return ..() /obj/item/weapon/rsf/attack_self(mob/user) playsound(src.loc, 'sound/effects/pop.ogg', 50, 0) @@ -60,175 +61,53 @@ RSF return // Change mode -/obj/item/weapon/rsf/afterattack(atom/A, mob/user, proximity) +/obj/item/weapon/rsf/afterattack(atom/A, mob/user, proximity) //phil235 shitty proc, rewrite. if(!proximity) return if (!(istype(A, /obj/structure/table) || istype(A, /turf/open/floor))) return - if (istype(A, /obj/structure/table) && mode == 1) - if (istype(A, /obj/structure/table) && matter >= 1) + if(matter < 1) + user << "\The [src] doesn't have enough matter left." + return + if(isrobot(user)) + var/mob/living/silicon/robot/R = user + if(!R.cell || R.cell.charge < 200) + user << "You do not have enough power to use [src]." + return + + var/turf/T = get_turf(A) + playsound(src.loc, 'sound/machines/click.ogg', 10, 1) + switch(mode) + if(1) user << "Dispensing Dosh..." - playsound(src.loc, 'sound/machines/click.ogg', 10, 1) - new /obj/item/stack/spacecash/c10( A.loc ) - if (isrobot(user)) - var/mob/living/silicon/robot/engy = user - engy.cell.charge -= 200 //once money becomes useful, I guess changing this to a high ammount, like 500 units a kick, till then, enjoy dosh! - else - matter-- - user << "The RSF now holds [matter]/30 fabrication-units." - desc = "A RSF. It currently holds [matter]/30 fabrication-units." - return - - else if (istype(A, /turf/open/floor) && mode == 1) - if (istype(A, /turf/open/floor) && matter >= 1) - user << "Dispensing Dosh..." - playsound(src.loc, 'sound/machines/click.ogg', 10, 1) - new /obj/item/stack/spacecash/c10( A ) - if (isrobot(user)) - var/mob/living/silicon/robot/engy = user - engy.cell.charge -= 200 //once money becomes useful, I guess changing this to a high ammount, like 500 units a kick, till then, enjoy dosh! - else - matter-- - user << "The RSF now holds [matter]/30 fabrication-units." - desc = "A RSF. It currently holds [matter]/30 fabrication-units." - return - - else if (istype(A, /obj/structure/table) && mode == 2) - if (istype(A, /obj/structure/table) && matter >= 1) + new /obj/item/stack/spacecash/c10(T) + use_matter(200, user) + if(2) user << "Dispensing Drinking Glass..." - playsound(src.loc, 'sound/machines/click.ogg', 10, 1) - new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass( A.loc ) - if (isrobot(user)) - var/mob/living/silicon/robot/engy = user - engy.cell.charge -= 50 - else - matter-- - user << "The RSF now holds [matter]/30 fabrication-units." - desc = "A RSF. It currently holds [matter]/30 fabrication-units." - return - - else if (istype(A, /turf/open/floor) && mode == 2) - if (istype(A, /turf/open/floor) && matter >= 1) - user << "Dispensing Drinking Glass..." - playsound(src.loc, 'sound/machines/click.ogg', 10, 1) - new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass( A ) - if (isrobot(user)) - var/mob/living/silicon/robot/engy = user - engy.cell.charge -= 50 - else - matter-- - user << "The RSF now holds [matter]/30 fabrication-units." - desc = "A RSF. It currently holds [matter]/30 fabrication-units." - return - - else if (istype(A, /obj/structure/table) && mode == 3) - if (istype(A, /obj/structure/table) && matter >= 1) + new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass(T) + use_matter(20, user) + if(3) user << "Dispensing Paper Sheet..." - playsound(src.loc, 'sound/machines/click.ogg', 10, 1) - new /obj/item/weapon/paper( A.loc ) - if (isrobot(user)) - var/mob/living/silicon/robot/engy = user - engy.cell.charge -= 10 - else - matter-- - user << "The RSF now holds [matter]/30 fabrication-units." - desc = "A RSF. It currently holds [matter]/30 fabrication-units." - return - - else if (istype(A, /turf/open/floor) && mode == 3) - if (istype(A, /turf/open/floor) && matter >= 1) - user << "Dispensing Paper Sheet..." - playsound(src.loc, 'sound/machines/click.ogg', 10, 1) - new /obj/item/weapon/paper( A ) - if (isrobot(user)) - var/mob/living/silicon/robot/engy = user - engy.cell.charge -= 10 - else - matter-- - user << "The RSF now holds [matter]/30 fabrication-units." - desc = "A RSF. It currently holds [matter]/30 fabrication-units." - return - - else if (istype(A, /obj/structure/table) && mode == 4) - if (istype(A, /obj/structure/table) && matter >= 1) + new /obj/item/weapon/paper(T) + use_matter(10, user) + if(4) user << "Dispensing Pen..." - playsound(src.loc, 'sound/machines/click.ogg', 10, 1) - new /obj/item/weapon/pen( A.loc ) - if (isrobot(user)) - var/mob/living/silicon/robot/engy = user - engy.cell.charge -= 50 - else - matter-- - user << "The RSF now holds [matter]/30 fabrication-units." - desc = "A RSF. It currently holds [matter]/30 fabrication-units." - return - - else if (istype(A, /turf/open/floor) && mode == 4) - if (istype(A, /turf/open/floor) && matter >= 1) - user << "Dispensing Pen..." - playsound(src.loc, 'sound/machines/click.ogg', 10, 1) - new /obj/item/weapon/pen( A ) - if (isrobot(user)) - var/mob/living/silicon/robot/engy = user - engy.cell.charge -= 50 - else - matter-- - user << "The RSF now holds [matter]/30 fabrication-units." - desc = "A RSF. It currently holds [matter]/30 fabrication-units." - return - - else if (istype(A, /obj/structure/table) && mode == 5) - if (istype(A, /obj/structure/table) && matter >= 1) + new /obj/item/weapon/pen(T) + use_matter(50, user) + if(5) user << "Dispensing Dice Pack..." - playsound(src.loc, 'sound/machines/click.ogg', 10, 1) - new /obj/item/weapon/storage/pill_bottle/dice( A.loc ) - if (isrobot(user)) - var/mob/living/silicon/robot/engy = user - engy.cell.charge -= 200 - else - matter-- - user << "The RSF now holds [matter]/30 fabrication-units." - desc = "A RSF. It currently holds [matter]/30 fabrication-units." - return - - else if (istype(A, /turf/open/floor) && mode == 5) - if (istype(A, /turf/open/floor) && matter >= 1) - user << "Dispensing Dice Pack..." - playsound(src.loc, 'sound/machines/click.ogg', 10, 1) - new /obj/item/weapon/storage/pill_bottle/dice( A ) - if (isrobot(user)) - var/mob/living/silicon/robot/engy = user - engy.cell.charge -= 200 - else - matter-- - user << "The RSF now holds [matter]/30 fabrication-units." - desc = "A RSF. It currently holds [matter]/30 fabrication-units." - return - - else if (istype(A, /obj/structure/table) && mode == 6) - if (istype(A, /obj/structure/table) && matter >= 1) + new /obj/item/weapon/storage/pill_bottle/dice(T) + use_matter(200, user) + if(6) user << "Dispensing Cigarette..." - playsound(src.loc, 'sound/machines/click.ogg', 10, 1) - new /obj/item/clothing/mask/cigarette( A.loc ) - if (isrobot(user)) - var/mob/living/silicon/robot/engy = user - engy.cell.charge -= 10 - else - matter-- - user << "The RSF now holds [matter]/30 fabrication-units." - desc = "A RSF. It currently holds [matter]/30 fabrication-units." - return + new /obj/item/clothing/mask/cigarette(T) + use_matter(10, user) - else if (istype(A, /turf/open/floor) && mode == 6) - if (istype(A, /turf/open/floor) && matter >= 1) - user << "Dispensing Cigarette..." - playsound(src.loc, 'sound/machines/click.ogg', 10, 1) - new /obj/item/clothing/mask/cigarette( A ) - if (isrobot(user)) - var/mob/living/silicon/robot/engy = user - engy.cell.charge -= 10 - else - matter-- - user << "The RSF now holds [matter]/30 fabrication-units." - desc = "A RSF. It currently holds [matter]/30 fabrication-units." - return \ No newline at end of file +/obj/item/weapon/rsf/proc/use_matter(charge, mob/user) + if (isrobot(user)) + var/mob/living/silicon/robot/R = user + R.cell.charge -= charge + else + matter-- + user << "The RSF now holds [matter]/30 fabrication-units." + desc = "A RSF. It currently holds [matter]/30 fabrication-units." \ No newline at end of file diff --git a/code/game/objects/items/weapons/holosign_creator.dm b/code/game/objects/items/weapons/holosign_creator.dm index e33bb121435..4c2288041bb 100644 --- a/code/game/objects/items/weapons/holosign_creator.dm +++ b/code/game/objects/items/weapons/holosign_creator.dm @@ -84,25 +84,23 @@ anchored = 1 var/holo_integrity = 1 -/obj/effect/overlay/holograph/attackby(obj/item/weapon/W, mob/user, params) - if(!W.force || (W.flags & (ABSTRACT|NOBLUDGEON))) - return - if(W.force >= 10) - take_damage(3, user) - else - take_damage(1, user) +/obj/effect/overlay/holograph/attacked_by(obj/item/I, mob/user) + ..() + take_damage(I.force * 0.5, I.damtype) /obj/effect/overlay/holograph/blob_act() qdel(src) /obj/effect/overlay/holograph/attack_animal(mob/living/simple_animal/M) - take_damage(5, M) + if(!M.melee_damage_upper) + return + attack_generic(5, M) /obj/effect/overlay/holograph/attack_alien(mob/living/carbon/alien/A) - take_damage(5, A) + attack_generic(5, A) /obj/effect/overlay/holograph/attack_hand(mob/living/user) - take_damage(1, user) + attack_generic(1, user) /obj/effect/overlay/holograph/mech_melee_attack(obj/mecha/M) playsound(loc, 'sound/weapons/Egloves.ogg', 80, 1) @@ -111,17 +109,28 @@ /obj/effect/overlay/holograph/attack_slime(mob/living/simple_animal/slime/S) if(S.is_adult) - take_damage(5, S) + attack_generic(5, S) else - take_damage(2, S) + attack_generic(2, S) -/obj/effect/overlay/holograph/proc/take_damage(amount, mob/living/user) +/obj/effect/overlay/holograph/proc/attack_generic(damage_amount, mob/user) user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src) - playsound(loc, 'sound/weapons/Egloves.ogg', 80, 1) user.visible_message("[user] hits [src].", \ "You hit [src]." ) - holo_integrity -= amount + take_damage(damage_amount) + +/obj/effect/overlay/holograph/proc/take_damage(damage, damage_type = BRUTE, sound_effect = 1) + switch(damage_type) + if(BRUTE) + if(damage && sound_effect) + playsound(loc, 'sound/weapons/Egloves.ogg', 80, 1) + if(BURN) + if(damage && sound_effect) + playsound(loc, 'sound/weapons/Egloves.ogg', 80, 1) + else + return + holo_integrity -= damage if(holo_integrity <= 0) qdel(src) @@ -133,16 +142,11 @@ else if(isobj(AM)) var/obj/item/I = AM tforce = max(1, I.throwforce * 0.2) - playsound(loc, 'sound/weapons/Egloves.ogg', 80, 1) - holo_integrity -= tforce - if(holo_integrity <= 0) - qdel(src) + take_damage(tforce) /obj/effect/overlay/holograph/bullet_act(obj/item/projectile/P) - if((P.damage_type == BRUTE || P.damage_type == BURN)) - holo_integrity -= P.damage * 0.5 - if(holo_integrity <= 0) - qdel(src) + . = ..() + take_damage(P.damage * 0.5, P.damage_type) /obj/effect/overlay/holograph/wetsign name = "wet floor sign" diff --git a/code/game/objects/items/weapons/pneumaticCannon.dm b/code/game/objects/items/weapons/pneumaticCannon.dm index a3fee8b4079..3937889f8c1 100644 --- a/code/game/objects/items/weapons/pneumaticCannon.dm +++ b/code/game/objects/items/weapons/pneumaticCannon.dm @@ -29,17 +29,16 @@ /obj/item/weapon/pneumatic_cannon/attackby(obj/item/weapon/W, mob/user, params) - ..() - if(istype(W, /obj/item/weapon/tank/internals/) && !tank) - if(istype(W, /obj/item/weapon/tank/internals/emergency_oxygen)) - user << "\The [W] is too small for \the [src]." - return - updateTank(W, 0, user) - return - if(W.type == type) + if(istype(W, /obj/item/weapon/tank/internals)) + if(!tank) + var/obj/item/weapon/tank/internals/IT = W + if(IT.volume <= 3) + user << "\The [IT] is too small for \the [src]." + return + updateTank(W, 0, user) + else if(W.type == type) user << "You're fairly certain that putting a pneumatic cannon inside another pneumatic cannon would cause a spacetime disruption." - return - if(istype(W, /obj/item/weapon/wrench)) + else if(istype(W, /obj/item/weapon/wrench)) switch(pressureSetting) if(1) pressureSetting = 2 @@ -48,14 +47,12 @@ if(3) pressureSetting = 1 user << "You tweak \the [src]'s pressure output to [pressureSetting]." - return - if(istype(W, /obj/item/weapon/screwdriver) && tank) - updateTank(tank, 1, user) - return - if(loadedWeightClass >= maxWeightClass) + else if(istype(W, /obj/item/weapon/screwdriver)) + if(tank) + updateTank(tank, 1, user) + else if(loadedWeightClass >= maxWeightClass) user << "\The [src] can't hold any more items!" - return - if(istype(W, /obj/item)) + else if(istype(W, /obj/item)) var/obj/item/IW = W if((loadedWeightClass + IW.w_class) > maxWeightClass) user << "\The [IW] won't fit into \the [src]!" @@ -69,18 +66,14 @@ loadedItems.Add(IW) loadedWeightClass += IW.w_class IW.loc = src - return + /obj/item/weapon/pneumatic_cannon/afterattack(atom/target, mob/living/carbon/human/user, flag, params) - if(istype(target, /obj/item/weapon/storage)) //So you can store it in backpacks - return ..() - if(istype(target, /obj/structure/closet)) //So you can store it in closets - return ..() - if(istype(target, /obj/structure/rack)) //So you can store it on racks - return ..() + if(flag && user.a_intent == "harm") //melee attack + return if(!istype(user)) - return ..() + return Fire(user, target) diff --git a/code/game/objects/structures/ai_core.dm b/code/game/objects/structures/ai_core.dm index 383a065041b..ef533fe16a1 100644 --- a/code/game/objects/structures/ai_core.dm +++ b/code/game/objects/structures/ai_core.dm @@ -20,6 +20,7 @@ user << "You wrench the frame into place." anchored = 1 state = 1 + return if(istype(P, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/WT = P if(!WT.isOn()) @@ -32,6 +33,7 @@ user << "You deconstruct the frame." new /obj/item/stack/sheet/plasteel( loc, 4) qdel(src) + return if(1) if(istype(P, /obj/item/weapon/wrench)) playsound(loc, 'sound/items/Ratchet.ogg', 50, 1) @@ -40,6 +42,7 @@ user << "You unfasten the frame." anchored = 0 state = 0 + return if(istype(P, /obj/item/weapon/circuitboard/aicore) && !circuit) if(!user.drop_item()) return @@ -48,11 +51,13 @@ icon_state = "1" circuit = P P.loc = src + return if(istype(P, /obj/item/weapon/screwdriver) && circuit) playsound(loc, 'sound/items/Screwdriver.ogg', 50, 1) user << "You screw the circuit board into place." state = 2 icon_state = "2" + return if(istype(P, /obj/item/weapon/crowbar) && circuit) playsound(loc, 'sound/items/Crowbar.ogg', 50, 1) user << "You remove the circuit board." @@ -60,12 +65,14 @@ icon_state = "0" circuit.loc = loc circuit = null + return if(2) if(istype(P, /obj/item/weapon/screwdriver) && circuit) playsound(loc, 'sound/items/Screwdriver.ogg', 50, 1) user << "You unfasten the circuit board." state = 1 icon_state = "1" + return if(istype(P, /obj/item/stack/cable_coil)) var/obj/item/stack/cable_coil/C = P if(C.get_amount() >= 5) @@ -79,7 +86,7 @@ icon_state = "3" else user << "You need five lengths of cable to wire the AI core!" - return + return if(3) if(istype(P, /obj/item/weapon/wirecutters)) if (brain) @@ -91,6 +98,7 @@ icon_state = "2" var/obj/item/stack/cable_coil/A = new /obj/item/stack/cable_coil( loc ) A.amount = 5 + return if(istype(P, /obj/item/stack/sheet/rglass)) var/obj/item/stack/sheet/rglass/G = P @@ -105,11 +113,12 @@ icon_state = "4" else user << "You need two sheets of reinforced glass to insert them into AI core!" - return + return if(istype(P, /obj/item/weapon/aiModule)) var/obj/item/weapon/aiModule/module = P module.install(laws, user) + return if(istype(P, /obj/item/device/mmi)) var/obj/item/device/mmi/M = P @@ -148,6 +157,7 @@ brain = M user << "Added a brain." icon_state = "3b" + return if(istype(P, /obj/item/weapon/crowbar) && brain) playsound(loc, 'sound/items/Crowbar.ogg', 50, 1) @@ -155,6 +165,7 @@ brain.loc = loc brain = null icon_state = "3" + return if(4) if(istype(P, /obj/item/weapon/crowbar)) @@ -176,6 +187,8 @@ new /mob/living/silicon/ai (loc, laws, brain) feedback_inc("cyborg_ais_created",1) qdel(src) + return + return ..() /obj/structure/AIcore/deactivated name = "inactive AI" @@ -187,7 +200,7 @@ /obj/structure/AIcore/deactivated/attackby(obj/item/A, mob/user, params) if(istype(A, /obj/item/device/aicard))//Is it? A.transfer_ai("INACTIVE","AICARD",src,user) - if(istype(A, /obj/item/weapon/wrench)) + else if(istype(A, /obj/item/weapon/wrench)) playsound(loc, 'sound/items/Ratchet.ogg', 50, 1) user.visible_message("[user] [anchored ? "fastens" : "unfastens"] [src].", \ "You start to [anchored ? "fasten [src] to" : "unfasten [src] from"] the floor...") @@ -200,7 +213,8 @@ if(do_after(user, 20, target = src)) user << "You unfasten the core." anchored = 0 - return + else + return ..() /* This is a good place for AI-related object verbs so I'm sticking it here. diff --git a/code/game/objects/structures/beds_chairs/alien_nest.dm b/code/game/objects/structures/beds_chairs/alien_nest.dm index 56f0ac6b166..c196e946244 100644 --- a/code/game/objects/structures/beds_chairs/alien_nest.dm +++ b/code/game/objects/structures/beds_chairs/alien_nest.dm @@ -10,6 +10,7 @@ can_be_unanchored = 0 canSmoothWith = null buildstacktype = null + flags = NODECONSTRUCT var/image/nest_overlay /obj/structure/bed/nest/New() @@ -80,15 +81,22 @@ M.layer = initial(M.layer) overlays -= nest_overlay -/obj/structure/bed/nest/attackby(obj/item/weapon/W, mob/user, params) - var/aforce = W.force - health = max(0, health - aforce) - playsound(loc, 'sound/effects/attackblob.ogg', 100, 1) - visible_message("[user] hits [src] with [W]!") - healthcheck() +/obj/structure/bed/nest/attacked_by(obj/item/I, mob/user) + ..() + take_damage(I.force, I.damtype) -/obj/structure/bed/nest/proc/healthcheck() +/obj/structure/bed/nest/proc/take_damage(damage, damage_type = BRUTE, sound_effect = 1) + switch(damage_type) + if(BRUTE) + if(sound_effect) + playsound(loc, 'sound/effects/attackblob.ogg', 100, 1) + if(BURN) + if(sound_effect) + playsound(loc, 'sound/items/Welder.ogg', 100, 1) + else + return + health -= damage if(health <=0) density = 0 qdel(src) - return + diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 3b70fd76585..a22be184b38 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -215,28 +215,30 @@ var/turf/T = get_turf(src) new material_drop(T) qdel(src) + return 0 else if(user.drop_item()) W.Move(loc) - else - if(istype(W, /obj/item/stack/packageWrap)) + return 1 + else if(istype(W, /obj/item/weapon/weldingtool) && can_weld_shut) + var/obj/item/weapon/weldingtool/WT = W + if(!WT.remove_fuel(0, user)) return - else if(istype(W, /obj/item/weapon/weldingtool) && can_weld_shut) - var/obj/item/weapon/weldingtool/WT = W - if(!WT.remove_fuel(0, user)) + user << "You begin [welded ? "unwelding":"welding"] \the [src]..." + playsound(loc, 'sound/items/Welder2.ogg', 40, 1) + if(do_after(user, 40/WT.toolspeed, 1, target = src)) + if(opened || !WT.isOn()) return - user << "You begin [welded ? "unwelding":"welding"] \the [src]..." - playsound(loc, 'sound/items/Welder2.ogg', 40, 1) - if(do_after(user, 40/WT.toolspeed, 1, target = src)) - if(opened || !WT.isOn()) - return - playsound(loc, 'sound/items/welder.ogg', 50, 1) - welded = !welded - visible_message("[user] [welded ? "welds shut" : "unweldeds"] \the [src].", - "You [welded ? "weld" : "unwelded"] \the [src] with \the [WT].", - "You hear welding.") - update_icon() - else - togglelock(user) + playsound(loc, 'sound/items/welder.ogg', 50, 1) + welded = !welded + visible_message("[user] [welded ? "welds shut" : "unweldeds"] \the [src].", + "You [welded ? "weld" : "unwelded"] \the [src] with \the [WT].", + "You hear welding.") + update_icon() + else if(user.a_intent != "harm" && !(W.flags & NOBLUDGEON)) + togglelock(user) + return 1 + else + return ..() /obj/structure/closet/MouseDrop_T(atom/movable/O, mob/living/user) if(!istype(O) || O.anchored || istype(O, /obj/screen)) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm index aa5e743cbc2..b0e80393e4a 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm @@ -35,27 +35,22 @@ new /obj/item/device/radio/headset( src ) /obj/structure/closet/secure_closet/personal/attackby(obj/item/W, mob/user, params) + var/obj/item/weapon/card/id/I = W.GetID() + if(istype(I)) + if(broken) + user << "It appears to be broken." + return + if(!I || !I.registered_name) + return + if(allowed(user) || !registered_name || (istype(I) && (registered_name == I.registered_name))) + //they can open all lockers, or nobody owns this, or they own this locker + locked = !locked + update_icon() - if(istype(W)) - var/obj/item/weapon/card/id/I = W.GetID() - if(istype(I)) - if(src.broken) - user << "It appears to be broken." - return - if(!I || !I.registered_name) - return - if(src.allowed(user) || !src.registered_name || (istype(I) && (src.registered_name == I.registered_name))) - //they can open all lockers, or nobody owns this, or they own this locker - src.locked = !( src.locked ) - update_icon() - - if(!src.registered_name) - src.registered_name = I.registered_name - src.desc = "Owned by [I.registered_name]." - else - user << "Access Denied." + if(!registered_name) + registered_name = I.registered_name + desc = "Owned by [I.registered_name]." else - ..() + user << "Access Denied." else - ..() - return \ No newline at end of file + return ..() \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/closets/statue.dm b/code/game/objects/structures/crates_lockers/closets/statue.dm index 936ad5713f2..69c639694f2 100644 --- a/code/game/objects/structures/crates_lockers/closets/statue.dm +++ b/code/game/objects/structures/crates_lockers/closets/statue.dm @@ -114,27 +114,21 @@ /obj/structure/closet/statue/bullet_act(obj/item/projectile/Proj) health -= Proj.damage if(health <= 0) - for(var/mob/M in src) - shatter(M) - - return + shatter() /obj/structure/closet/statue/attack_animal(mob/living/simple_animal/user) if(user.environment_smash) - for(var/mob/M in src) - shatter(M) + shatter() /obj/structure/closet/statue/blob_act() - for(var/mob/M in src) - shatter(M) + shatter() -/obj/structure/closet/statue/attackby(obj/item/I, mob/user, params) - user.changeNext_move(CLICK_CD_MELEE) - health -= I.force +/obj/structure/closet/statue/attacked_by(obj/item/I, mob/living/user) + if(I.damtype != STAMINA) + health -= I.force visible_message("[user] strikes [src] with [I].") if(health <= 0) - for(var/mob/M in src) - shatter(M) + shatter() /obj/structure/closet/statue/MouseDrop_T() return @@ -151,9 +145,9 @@ /obj/structure/closet/statue/update_icon() return -/obj/structure/closet/statue/proc/shatter(mob/user) - if(user) - user.dust() +/obj/structure/closet/statue/proc/shatter() + for(var/mob/living/M in src) + M.dust() dump_contents() visible_message("[src] shatters!.") qdel(src) diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index c83ffc2513c..6ca97bb58a3 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -27,13 +27,9 @@ dump() qdel(src) if (2) - if (prob(50)) - src.health -= 15 - src.healthcheck() + take_damage(rand(10,20), BRUTE, 0) if (3) - if (prob(50)) - src.health -= 5 - src.healthcheck() + take_damage(5, BRUTE, 0) /obj/structure/displaycase/examine(mob/user) ..() @@ -43,12 +39,9 @@ user << "Hooked up with an anti-theft system." -/obj/structure/displaycase/bullet_act(obj/item/projectile/Proj) - if((Proj.damage_type == BRUTE || Proj.damage_type == BURN)) - health -= Proj.damage - ..() - src.healthcheck() - return +/obj/structure/displaycase/bullet_act(obj/item/projectile/P) + . = ..() + take_damage(P.damage, P.damage_type, 0) /obj/structure/displaycase/proc/dump() if (showpiece) @@ -61,24 +54,36 @@ dump() qdel(src) -/obj/structure/displaycase/proc/healthcheck() - if (src.health <= 0) - if (!( src.destroyed )) - src.density = 0 - src.destroyed = 1 - new /obj/item/weapon/shard( src.loc ) - playsound(src, "shatter", 70, 1) - update_icon() +/obj/structure/displaycase/hitby(atom/movable/AM) + ..() + if(isobj(AM)) + var/obj/item/I = AM + take_damage(I.throwforce * 0.2) - //Activate Anti-theft - if(alert) - var/area/alarmed = get_area(src) - alarmed.burglaralert(src) - playsound(src, "sound/effects/alert.ogg", 50, 1) +/obj/structure/displaycase/proc/take_damage(damage, damage_type = BRUTE, sound_effect = 1) + switch(damage_type) + if(BRUTE) + if(sound_effect) + playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1) + if(BURN) + if(sound_effect) + playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) + else + return + health = max( health - damage, 0) + if(!health && !destroyed) + density = 0 + destroyed = 1 + new /obj/item/weapon/shard( src.loc ) + playsound(src, "shatter", 70, 1) + update_icon() + + //Activate Anti-theft + if(alert) + var/area/alarmed = get_area(src) + alarmed.burglaralert(src) + playsound(src, "sound/effects/alert.ogg", 50, 1) - else - playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1) - return /obj/structure/displaycase/proc/is_directional(atom/A) try @@ -115,23 +120,28 @@ return /obj/structure/displaycase/attackby(obj/item/weapon/W, mob/user, params) - if(istype(W, /obj/item/weapon/card) && electronics && !destroyed && allowed(user)) - user << "You [open ? "close":"open"] the [src]" - open = !open - update_icon() - return - if(!alert && istype(W,/obj/item/weapon/crowbar)) - if(destroyed && !showpiece) - user << "You remove the destroyed case" - qdel(src) - return - user << "You start to [open ? "close":"open"] the [src]" - if(do_after(user, 20/W.toolspeed, target = src)) + if(W.GetID() && electronics && !destroyed) + if(allowed(user)) user << "You [open ? "close":"open"] the [src]" open = !open update_icon() + else + user << "Access denied." + else if(!alert && istype(W,/obj/item/weapon/crowbar)) + if(destroyed) + if(showpiece) + user << "Remove the displayed object first." + else + user << "You remove the destroyed case" + qdel(src) + else + user << "You start to [open ? "close":"open"] the [src]" + if(do_after(user, 20/W.toolspeed, target = src)) + user << "You [open ? "close":"open"] the [src]" + open = !open + update_icon() else if(open && !showpiece) - if(user.unEquip(W)) + if(user.drop_item()) W.loc = src showpiece = W user << "You put [W] on display" @@ -148,15 +158,30 @@ health = initial(health) update_icon() else - user.changeNext_move(CLICK_CD_MELEE) - src.health -= W.force - src.healthcheck() - ..() - return + return ..() + +/obj/structure/displaycase/attacked_by(obj/item/weapon/W, mob/living/user) + ..() + take_damage(W.force, W.damtype) /obj/structure/displaycase/attack_paw(mob/user) return src.attack_hand(user) +/obj/structure/displaycase/attack_alien(mob/living/carbon/alien/humanoid/user) + user.changeNext_move(CLICK_CD_MELEE) + user.do_attack_animation(src) + visible_message("\The [user] slashes at [src]!") + playsound(src.loc, 'sound/weapons/slash.ogg', 100, 1) + take_damage(20, BRUTE, 0) + +/obj/structure/displaycase/attack_animal(mob/living/simple_animal/M) + M.changeNext_move(CLICK_CD_MELEE) + M.do_attack_animation(src) + if(M.melee_damage_upper > 0) + M.visible_message("[M.name] smashes against \the [src.name].",\ + "You smash against the [src.name].") + take_damage(M.melee_damage_upper, M.melee_damage_type, 1) + /obj/structure/displaycase/attack_hand(mob/user) user.changeNext_move(CLICK_CD_MELEE) if (showpiece && (destroyed || open)) @@ -166,11 +191,11 @@ update_icon() return else + user.do_attack_animation(src) user.visible_message("[user] kicks the display case.", \ "You kick the display case.") - src.health -= 2 - healthcheck() - return + take_damage(2) + /obj/structure/displaycase_chassis @@ -191,16 +216,16 @@ playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) new /obj/item/stack/sheet/mineral/wood(get_turf(src)) qdel(src) - return - if(istype(I, /obj/item/weapon/electronics/airlock)) + + else if(istype(I, /obj/item/weapon/electronics/airlock)) user << "You start installing the electronics into [src]..." playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) if(user.unEquip(I) && do_after(user, 30, target = src)) I.loc = src electronics = I user << "You install the airlock electronics." - return - if(istype(I, /obj/item/stack/sheet/glass)) + + else if(istype(I, /obj/item/stack/sheet/glass)) var/obj/item/stack/sheet/glass/G = I if(G.get_amount() < 10) user << "You need ten glass sheets to do this!" @@ -217,8 +242,8 @@ else display.req_access = electronics.accesses qdel(src) - return - return + else + return ..() /obj/structure/displaycase/captain diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm index d150c78f75d..09fbd8a08d4 100644 --- a/code/game/objects/structures/false_walls.dm +++ b/code/game/objects/structures/false_walls.dm @@ -79,31 +79,32 @@ user << "You must wait until the door has stopped moving!" return - if(density) - var/turf/T = get_turf(src) - if(T.density) - user << "[src] is blocked!" - return - if(istype(W, /obj/item/weapon/screwdriver)) - if (!istype(T, /turf/open/floor)) + if(istype(W, /obj/item/weapon/screwdriver)) + if(density) + var/turf/T = get_turf(src) + if(T.density) + user << "[src] is blocked!" + return + if(!istype(T, /turf/open/floor)) user << "[src] bolts must be tightened on the floor!" return user.visible_message("[user] tightens some bolts on the wall.", "You tighten the bolts on the wall.") ChangeToWall() - if(istype(W, /obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/WT = W - if(WT.remove_fuel(0,user)) - dismantle(user) - else - user << "You can't reach, close it first!" + else + user << "You can't reach, close it first!" - if(istype(W, /obj/item/weapon/gun/energy/plasmacutter)) + else if(istype(W, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = W + if(WT.remove_fuel(0,user)) + dismantle(user) + else if(istype(W, /obj/item/weapon/gun/energy/plasmacutter)) dismantle(user) - - if(istype(W, /obj/item/weapon/pickaxe/drill/jackhammer)) + else if(istype(W, /obj/item/weapon/pickaxe/drill/jackhammer)) var/obj/item/weapon/pickaxe/drill/jackhammer/D = W D.playDigSound() dismantle(user) + else + return ..() /obj/structure/falsewall/proc/dismantle(mob/user) user.visible_message("[user] dismantles the false wall.", "You dismantle the false wall.") @@ -160,7 +161,7 @@ /obj/structure/falsewall/uranium/attackby(obj/item/weapon/W, mob/user, params) radiate() - ..() + return ..() /obj/structure/falsewall/uranium/attack_hand(mob/user) radiate() @@ -222,8 +223,8 @@ message_admins("Plasma falsewall ignited by [key_name_admin(user)](?) (FLW) in ([x],[y],[z] - JMP)",0,1) log_game("Plasma falsewall ignited by [key_name(user)] in ([x],[y],[z])") burnbabyburn() - return - ..() + else + return ..() /obj/structure/falsewall/plasma/proc/burnbabyburn(user) playsound(src, 'sound/items/Welder.ogg', 100, 1) diff --git a/code/game/objects/structures/fireaxe.dm b/code/game/objects/structures/fireaxe.dm index 9a53e50cd94..dbc85a06870 100644 --- a/code/game/objects/structures/fireaxe.dm +++ b/code/game/objects/structures/fireaxe.dm @@ -8,7 +8,7 @@ density = 0 var/locked = 1 var/open = 0 - var/glass_hp = 60 + var/health = 60 /obj/structure/fireaxecabinet/New() ..() @@ -18,7 +18,7 @@ if(isrobot(user) || istype(I,/obj/item/device/multitool)) toggle_lock(user) return - if(open || glass_hp <= 0) + if(open || health <= 0) if(istype(I, /obj/item/weapon/twohanded/fireaxe) && !fireaxe) var/obj/item/weapon/twohanded/fireaxe/F = I if(F.wielded) @@ -31,42 +31,56 @@ user << "You place the [F.name] back in the [name]." update_icon() return - else if(glass_hp > 0) + else if(health > 0) toggle_open() + else + return ..() - else if(istype(I, /obj/item/weapon)) - user.changeNext_move(CLICK_CD_MELEE) - var/obj/item/weapon/W = I - user.do_attack_animation(src) - playsound(src, 'sound/effects/Glasshit.ogg', 100, 1) - if(W.force >= 10) - glass_hp -= W.force - if(glass_hp <= 0) - playsound(src, 'sound/effects/Glassbr3.ogg', 100, 1) - update_icon() +/obj/structure/fireaxecabinet/attacked_by(obj/item/I, mob/living/user) + ..() + take_damage(I.force, I.damtype) + +/obj/structure/fireaxecabinet/proc/take_damage(damage, damage_type, sound_effect = 1) + if(open) + return + switch(damage_type) + if(BRUTE) + if(sound_effect) + if(health <= 0) + playsound(loc, 'sound/effects/hit_on_shattered_glass.ogg', 90, 1) + else + playsound(loc, 'sound/effects/Glasshit.ogg', 90, 1) + if(BURN) + if(sound_effect) + playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) else - user << "The [name]'s protective glass glances off the hit." + return + if(damage < 10) + return + if(health > 0) + health -= damage + update_icon() + if(health <= 0) + playsound(src, 'sound/effects/Glassbr3.ogg', 100, 1) + /obj/structure/fireaxecabinet/ex_act(severity, target) switch(severity) if(1) qdel(src) - return if(2) if(prob(50) && fireaxe) fireaxe.loc = src.loc qdel(src) - return + else + take_damage(rand(30,70), BRUTE, 0) if(3) - return + take_damage(rand(10,30), BRUTE, 0) + +/obj/structure/fireaxecabinet/bullet_act(obj/item/projectile/P) + . = ..() + take_damage(P.damage, P.damage_type, 0) -/obj/structure/fireaxecabinet/bullet_act(obj/item/projectile/Proj) - if((Proj.damage_type == BRUTE || Proj.damage_type == BURN)) - if(Proj.damage) - glass_hp -= Proj.damage - if(glass_hp <= 0) - playsound(src, 'sound/effects/Glassbr3.ogg', 100, 1) - update_icon() /obj/structure/fireaxecabinet/blob_act() if(fireaxe) @@ -74,7 +88,7 @@ qdel(src) /obj/structure/fireaxecabinet/attack_hand(mob/user) - if(open || glass_hp <= 0) + if(open || health <= 0) if(fireaxe) user.put_in_hands(fireaxe) fireaxe = null @@ -90,10 +104,19 @@ update_icon() return -/obj/structure/fireaxecabinet/attack_paw(mob/user) - if(ismonkey(user)) //no fire-axe wielding aliens allowed - attack_hand(user) - return +/obj/structure/fireaxecabinet/attack_paw(mob/living/user) + attack_hand(user) + +/obj/structure/fireaxecabinet/attack_alien(mob/living/user) + user.visible_message("[user] slashes [src].") + take_damage(20) + +/obj/structure/fireaxecabinet/attack_animal(mob/living/simple_animal/M) + if(!M.melee_damage_upper) + return + M.visible_message("[M] smashes against [src].", \ + "You smash against [src].") + take_damage(M.melee_damage_upper, M.melee_damage_type) /obj/structure/fireaxecabinet/attack_ai(mob/user) toggle_lock(user) @@ -104,7 +127,7 @@ if(fireaxe) overlays += "axe" if(!open) - switch(glass_hp) + switch(health) if(-INFINITY to 0) overlays += "glass4" if(1 to 20) diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 59bc6451075..d34a261a8f2 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -17,13 +17,18 @@ stored.amount = 2 /obj/structure/grille/ex_act(severity, target) - qdel(src) + switch(severity) + if(1) + qdel(src) + else + take_damage(rand(5,10), BRUTE, 0) /obj/structure/grille/blob_act() qdel(src) /obj/structure/grille/Bumped(atom/user) - if(ismob(user)) shock(user, 70) + if(ismob(user)) + shock(user, 70) /obj/structure/grille/attack_paw(mob/user) @@ -32,37 +37,25 @@ /obj/structure/grille/attack_hulk(mob/living/carbon/human/user) ..(user, 1) shock(user, 70) - health -= 5 - healthcheck() + take_damage(5) /obj/structure/grille/attack_hand(mob/living/user) user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src) - playsound(loc, 'sound/effects/grillehit.ogg', 80, 1) user.visible_message("[user] hits [src].", \ "You hit [src].", \ "You hear twisting metal.") - - if(shock(user, 70)) - return - else - health -= rand(1,2) - healthcheck() + if(!shock(user, 70)) + take_damage(rand(1,2)) /obj/structure/grille/attack_alien(mob/living/user) user.do_attack_animation(src) - if(istype(user, /mob/living/carbon/alien/larva)) - return user.changeNext_move(CLICK_CD_MELEE) - playsound(loc, 'sound/effects/grillehit.ogg', 80, 1) user.visible_message("[user] mangles [src].", \ "You mangle [src].", \ "You hear twisting metal.") - if(!shock(user, 70)) - health -= 5 - healthcheck() - return + take_damage(5) /obj/structure/grille/attack_slime(mob/living/simple_animal/slime/user) user.changeNext_move(CLICK_CD_MELEE) @@ -70,36 +63,25 @@ if(!user.is_adult) return - playsound(loc, 'sound/effects/grillehit.ogg', 80, 1) user.visible_message("[user] smashes against [src].", \ "You smash against [src].", \ "You hear twisting metal.") - - health -= rand(1,2) - healthcheck() - return + take_damage(rand(1,2)) /obj/structure/grille/attack_animal(var/mob/living/simple_animal/M) M.changeNext_move(CLICK_CD_MELEE) if(M.melee_damage_upper == 0 || (M.melee_damage_type != BRUTE && M.melee_damage_type != BURN)) return M.do_attack_animation(src) - playsound(loc, 'sound/effects/grillehit.ogg', 80, 1) M.visible_message("[M] smashes against [src].", \ "You smash against [src].", \ "You hear twisting metal.") - - health -= M.melee_damage_upper - healthcheck() - return + take_damage(M.melee_damage_upper, M.melee_damage_type) /obj/structure/grille/mech_melee_attack(obj/mecha/M) if(..()) - playsound(loc, 'sound/effects/grillehit.ogg', 80, 1) - health -= M.force * 0.5 - healthcheck() - + take_damage(M.force * 0.5, M.damtype) /obj/structure/grille/CanPass(atom/movable/mover, turf/target, height=0) if(height==0) return 1 @@ -118,13 +100,8 @@ . = . || mover.checkpass(PASSGRILLE) /obj/structure/grille/bullet_act(var/obj/item/projectile/Proj) - if(!Proj) - return - ..() - if((Proj.damage_type != STAMINA)) //Grilles can't be exhausted to death - src.health -= Proj.damage*0.3 - healthcheck() - return + . = ..() + take_damage(Proj.damage*0.3, Proj.damage_type) /obj/structure/grille/Deconstruct() if(!loc) //if already qdel'd somehow, we do nothing @@ -169,8 +146,6 @@ icon_state = "grille" R.use(1) return - else if(istype(W, /obj/item/weapon/rcd) && istype(loc, /turf)) //Do not attack the grille if the user is holding an RCD - return //window placing begin else if(istype(W, /obj/item/stack/sheet/rglass) || istype(W, /obj/item/stack/sheet/glass)) @@ -206,32 +181,35 @@ return //window placing end - else if(istype(W, /obj/item/weapon/shard)) - playsound(loc, 'sound/effects/grillehit.ogg', 80, 1) - health -= W.force * 0.1 - else if(!shock(user, 70)) - switch(W.damtype) - if(STAMINA) - return - if(BURN) - playsound(loc, 'sound/items/welder.ogg', 80, 1) - else - playsound(loc, 'sound/effects/grillehit.ogg', 80, 1) - health -= W.force * 0.3 + else if(istype(W, /obj/item/weapon/shard) || !shock(user, 70)) + return ..() - healthcheck() + +/obj/structure/grille/attacked_by(obj/item/I, mob/living/user) ..() - return + take_damage(I.force * 0.3, I.damtype) - -/obj/structure/grille/proc/healthcheck() +/obj/structure/grille/proc/take_damage(damage, damage_type = BRUTE, sound_effect = 1) + switch(damage_type) + if(BURN) + if(sound_effect) + playsound(loc, 'sound/items/welder.ogg', 80, 1) + if(BRUTE) + if(sound_effect) + if(damage) + playsound(loc, 'sound/effects/grillehit.ogg', 80, 1) + else + playsound(loc, 'sound/weapons/tap.ogg', 50, 1) + else + return + health -= damage if(health <= 0) if(!destroyed) Break() else if(health <= -6) Deconstruct() - return + // shock user with probability prb (if all connections & power are working) // returns 1 if shocked, 0 otherwise @@ -258,8 +236,7 @@ /obj/structure/grille/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(!destroyed) if(exposed_temperature > T0C + 1500) - health -= 1 - healthcheck() + take_damage(1) ..() /obj/structure/grille/hitby(AM as mob|obj) @@ -277,9 +254,7 @@ if(C) playsound(src.loc, 'sound/magic/LightningShock.ogg', 100, 1, extrarange = 5) tesla_zap(src, 3, C.powernet.avail * 0.08) //ZAP for 1/5000 of the amount of power, which is from 15-25 with 200000W - playsound(loc, 'sound/effects/grillehit.ogg', 80, 1) - health = max(0, health - tforce) - healthcheck() + take_damage(tforce) /obj/structure/grille/storage_contents_dump_act(obj/item/weapon/storage/src_object, mob/user) return 0 diff --git a/code/game/objects/structures/guncase.dm b/code/game/objects/structures/guncase.dm index ae8c5b4e861..920f1534b69 100644 --- a/code/game/objects/structures/guncase.dm +++ b/code/game/objects/structures/guncase.dm @@ -46,11 +46,14 @@ update_icon() return - open = !open - update_icon() + else if(user.a_intent != "harm") + open = !open + update_icon() + else + return ..() /obj/structure/guncase/attack_hand(mob/user) - if(isrobot(usr) || isalien(usr)) + if(isrobot(user) || isalien(user)) return if(contents.len && open) ShowWindow(user) diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index 970abe0decf..bd4e5504385 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -129,14 +129,16 @@ if(do_after(user,digTool.digspeed*hardness, target = src) && src) user << "You finish digging." Dismantle() - else if(istype(W,/obj/item/weapon)) //not sure, can't not just weapons get passed to this proc? - hardness -= W.force/100 - user << "You hit the [name] with your [W.name]!" - CheckHardness() - else + else if(user.a_intent != "harm") attack_hand(user) - return + else + return ..() +/obj/structure/mineral_door/attacked_by(obj/item/I, mob/user) + ..() + if(I.damtype != STAMINA) + hardness -= I.force/100 + CheckHardness() /obj/structure/mineral_door/bullet_act(obj/item/projectile/Proj) hardness -= Proj.damage @@ -222,7 +224,8 @@ message_admins("Plasma mineral door ignited by [key_name_admin(user)](?) (FLW) in ([x],[y],[z] - JMP)",0,1) log_game("Plasma mineral door ignited by [key_name(user)] in ([x],[y],[z])") TemperatureAct(100) - ..() + else + return ..() /obj/structure/mineral_door/transparent/plasma/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > 300) diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm index 20d6a7a63e6..e2d7d3f1d47 100644 --- a/code/game/objects/structures/mirror.dm +++ b/code/game/objects/structures/mirror.dm @@ -42,32 +42,21 @@ /obj/structure/mirror/proc/shatter() - if(shattered) - return - shattered = 1 icon_state = "mirror_broke" playsound(src, "shatter", 70, 1) desc = "Oh no, seven years of bad luck!" -/obj/structure/mirror/bullet_act(obj/item/projectile/Proj) - if(prob(Proj.damage * 2)) - if((Proj.damage_type == BRUTE || Proj.damage_type == BURN)) - if(!shattered) - shatter() - else - playsound(src, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1) - ..() +/obj/structure/mirror/bullet_act(obj/item/projectile/P) + . = ..() + take_damage(P.damage, P.damage_type, 0) /obj/structure/mirror/attackby(obj/item/I, mob/living/user, params) - user.changeNext_move(CLICK_CD_MELEE) - user.do_attack_animation(src) - if(I.damtype == STAMINA) - return - if(shattered) - if(istype(I, /obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/WT = I + if(istype(I, /obj/item/weapon/weldingtool) && user.a_intent != "harm") + var/obj/item/weapon/weldingtool/WT = I + if(shattered) + user.changeNext_move(CLICK_CD_MELEE) if(WT.remove_fuel(0, user)) user << "You begin repairing [src]..." playsound(src, 'sound/items/Welder.ogg', 100, 1) @@ -78,59 +67,60 @@ shattered = 0 icon_state = initial(icon_state) desc = initial(desc) - return - playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1) - return - - if(prob(I.force * 2)) - visible_message("[user] smashes [src] with [I].") - shatter() else - visible_message("[user] hits [src] with [I]!") - playsound(src.loc, 'sound/effects/Glasshit.ogg', 70, 1) + return ..() +/obj/structure/mirror/attacked_by(obj/item/I, mob/living/user) + ..() + take_damage(I.force, I.damtype) + +/obj/structure/mirror/ex_act(severity) + switch(severity) + if(1) + qdel(src) + if(2) + if(prob(50)) + qdel(src) + else + take_damage(5) + if(3) + if(prob(75)) + take_damage(5) + +/obj/structure/mirror/proc/take_damage(damage, damage_type = BRUTE, sound_effect = 1) + switch(damage_type) + if(BRUTE) + if(BURN) + else + return + if(!shattered) + if(damage) + shatter() + else if(sound_effect) + playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1) + +/obj/structure/mirror/proc/attack_generic(mob/living/user) + user.changeNext_move(CLICK_CD_MELEE) + user.do_attack_animation(src) + user.visible_message("[user] smashes [src]!") + take_damage(5) /obj/structure/mirror/attack_alien(mob/living/user) - user.changeNext_move(CLICK_CD_MELEE) - user.do_attack_animation(src) - if(islarva(user)) - return - if(shattered) - playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1) - return - user.visible_message("[user] smashes [src]!") - shatter() + attack_generic(user) - -/obj/structure/mirror/attack_animal(mob/living/user) - if(!isanimal(user)) - return - var/mob/living/simple_animal/M = user +/obj/structure/mirror/attack_animal(mob/living/simple_animal/M) if(M.melee_damage_upper <= 0) return - user.changeNext_move(CLICK_CD_MELEE) - M.do_attack_animation(src) - if(shattered) - playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1) - return - user.visible_message("[user] smashes [src]!") - shatter() - + attack_generic(M) /obj/structure/mirror/attack_slime(mob/living/user) - user.changeNext_move(CLICK_CD_MELEE) - user.do_attack_animation(src) - if(shattered) - playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1) - return - user.visible_message("[user] smashes [src]!") - shatter() + attack_generic(user) /obj/structure/mirror/magic name = "magic mirror" desc = "Turn and face the strange... face." icon_state = "magic_mirror" - var/list/races_blacklist = list("skeleton","agent") + var/list/races_blacklist = list("skeleton", "agent") var/list/choosable_races = list() /obj/structure/mirror/magic/New() diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm index 08fefcf4910..1f5f8a22ec2 100644 --- a/code/game/objects/structures/signs.dm +++ b/code/game/objects/structures/signs.dm @@ -29,7 +29,7 @@ "You unfasten [src].") new /obj/item/sign_backing(get_turf(user)) qdel(src) - if(istype(O, /obj/item/weapon/pen)) + else if(istype(O, /obj/item/weapon/pen)) var/list/sign_types = list("Secure Area", "Biohazard", "High Voltage", "Radiation", "Hard Vacuum Ahead", "Disposal: Leads To Space", "Danger: Fire", "No Smoking", "Medbay", "Science", "Chemistry", \ "Hydroponics", "Xenobiology") var/obj/structure/sign/sign_type @@ -77,6 +77,8 @@ newsign.pixel_x = pixel_x newsign.pixel_y = pixel_y qdel(src) + else + return ..() /obj/item/sign_backing name = "sign backing" @@ -87,20 +89,16 @@ burn_state = FLAMMABLE /obj/item/sign_backing/afterattack(atom/target, mob/user, proximity) - if(!isturf(target)) + if(isturf(target) && proximity) + var/turf/T = target + user.visible_message("[user] fastens [src] to [T].", \ + "You attach a blank sign to [T].") + playsound(T, 'sound/items/Deconstruct.ogg', 50, 1) + new /obj/structure/sign/basic(T) + user.drop_item() + qdel(src) + else return ..() - if(!user.Adjacent(target)) - return ..() - var/turf/T = target - if(!T || !istype(T)) - return ..() - user.visible_message("[user] fastens [src] to [T].", \ - "You attach a blank sign to [T].") - playsound(T, 'sound/items/Deconstruct.ogg', 50, 1) - new /obj/structure/sign/basic(T) - user.drop_item() - qdel(src) - return /obj/structure/sign/map name = "station map" diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm index 9867e641623..173d87b92af 100644 --- a/code/game/objects/structures/statues.dm +++ b/code/game/objects/structures/statues.dm @@ -8,7 +8,7 @@ icon_state = "" density = 1 anchored = 0 - var/hardness = 1 + var/health = 100 var/oreAmount = 7 var/mineralType = "metal" @@ -75,11 +75,12 @@ user.visible_message("[user] slices apart the [name].", \ "You slice apart the [name]!") Dismantle(1) - else - hardness -= W.force/100 - ..() - CheckHardness() + return ..() + +/obj/structure/statue/attacked_by(obj/item/I, mob/living/user) + ..() + take_damage(I.force, I.damtype) /obj/structure/statue/attack_hand(mob/living/user) user.changeNext_move(CLICK_CD_MELEE) @@ -87,17 +88,30 @@ user.visible_message("[user] rubs some dust off from the [name]'s surface.", \ "You rub some dust off from the [name]'s surface.") +//attack alien animal phil235 + /obj/structure/statue/CanAtmosPass() return !density -/obj/structure/statue/bullet_act(obj/item/projectile/Proj) - hardness -= Proj.damage - ..() - CheckHardness() - return +/obj/structure/statue/bullet_act(obj/item/projectile/P) + . = ..() + take_damage(P.damage, P.damage_type, 0) -/obj/structure/statue/proc/CheckHardness() - if(hardness <= 0) +/obj/structure/statue/proc/take_damage(damage, damage_type = BRUTE, sound_effect = 1) + switch(damage_type) + if(BRUTE) + if(sound_effect) + if(damage) + playsound(loc, 'sound/weapons/smash.ogg', 50, 1) + else + playsound(loc, 'sound/weapons/tap.ogg', 50, 1) + if(BURN) + if(sound_effect) + playsound(loc, 'sound/items/Welder.ogg', 40, 1) + else + return + health -= damage + if(health <= 0) Dismantle(1) /obj/structure/statue/proc/Dismantle(devastated = 0) @@ -126,21 +140,15 @@ if(1) Dismantle(1) if(2) - if(prob(20)) - Dismantle(1) - else - hardness-- - CheckHardness() + take_damage(rand(60,110), BRUTE, 0) if(3) - hardness -= 0.1 - CheckHardness() - return + take_damage(10, BRUTE, 0) //////////////////////////////////////STATUES///////////////////////////////////////////////////////////// ////////////////////////uranium/////////////////////////////////// /obj/structure/statue/uranium - hardness = 3 + health = 300 luminosity = 2 mineralType = "uranium" var/last_event = 0 @@ -158,7 +166,7 @@ /obj/structure/statue/uranium/attackby(obj/item/weapon/W, mob/user, params) radiate() - ..() + return ..() /obj/structure/statue/uranium/Bumped(atom/user) radiate() @@ -185,7 +193,7 @@ ////////////////////////////plasma/////////////////////////////////////////////////////////////////////// /obj/structure/statue/plasma - hardness = 2 + health = 200 mineralType = "plasma" desc = "This statue is suitably made from plasma." @@ -200,7 +208,7 @@ /obj/structure/statue/plasma/bullet_act(obj/item/projectile/Proj) var/burn = FALSE - if(istype(Proj,/obj/item/projectile/beam)) + if(istype(Proj,/obj/item/projectile/beam)) //phil235 test this PlasmaBurn(2500) burn = TRUE else if(istype(Proj,/obj/item/projectile/ion)) @@ -220,13 +228,12 @@ message_admins("Plasma statue ignited by [key_name_admin(user)](?) (FLW) in ([x],[y],[z] - JMP)",0,1) log_game("Plasma statue ignited by [key_name(user)] in ([x],[y],[z])") ignite(W.is_hot()) - return - ..() + else + return ..() /obj/structure/statue/plasma/proc/PlasmaBurn() atmos_spawn_air("plasma=400;TEMP=1000") - hardness = 0 - CheckHardness() + Dismantle(1) /obj/structure/statue/plasma/proc/ignite(exposed_temperature) if(exposed_temperature > 300) @@ -235,7 +242,7 @@ //////////////////////gold/////////////////////////////////////// /obj/structure/statue/gold - hardness = 3 + health = 300 mineralType = "gold" desc = "This is a highly valuable statue made from gold." @@ -262,7 +269,7 @@ //////////////////////////silver/////////////////////////////////////// /obj/structure/statue/silver - hardness = 3 + health = 300 mineralType = "silver" desc = "This is a valuable statue made from silver." @@ -289,7 +296,7 @@ /////////////////////////diamond///////////////////////////////////////// /obj/structure/statue/diamond - hardness = 10 + health = 1000 mineralType = "diamond" desc = "This is a very expensive diamond statue" @@ -308,7 +315,7 @@ ////////////////////////bananium/////////////////////////////////////// /obj/structure/statue/bananium - hardness = 3 + health = 300 mineralType = "bananium" desc = "A bananium statue with a small engraving:'HOOOOOOONK'." var/spam_flag = 0 @@ -323,7 +330,7 @@ /obj/structure/statue/bananium/attackby(obj/item/weapon/W, mob/user, params) honk() - ..() + return ..() /obj/structure/statue/bananium/attack_hand(mob/user) honk() @@ -343,7 +350,7 @@ /////////////////////sandstone///////////////////////////////////////// /obj/structure/statue/sandstone - hardness = 0.5 + health = 50 mineralType = "sandstone" /obj/structure/statue/sandstone/assistant @@ -354,7 +361,7 @@ /////////////////////snow///////////////////////////////////////// /obj/structure/statue/snow - hardness = 0.5 + health = 50 mineralType = "snow" /obj/structure/statue/snow/snowman diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 83f7cdde998..a4956e461f0 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -28,7 +28,8 @@ var/busy = 0 var/buildstackamount = 1 var/framestackamount = 2 - var/deconstructable = 1 + var/deconstruction_ready = 1 + var/health = 100 smooth = SMOOTH_TRUE canSmoothWith = list(/obj/structure/table, /obj/structure/table/reinforced) @@ -48,55 +49,62 @@ if(1) qdel(src) if(2) - if(prob(50)) - table_destroy(1) - else - qdel(src) + take_damage(rand(80,120), BRUTE, 0) if(3) - if(prob(25)) - table_destroy(1) + take_damage(rand(40,80), BRUTE, 0) /obj/structure/table/blob_act() if(prob(75)) - table_destroy(1) - return + qdel(src) /obj/structure/table/narsie_act() if(prob(20)) new /obj/structure/table/wood(src.loc) /obj/structure/table/mech_melee_attack(obj/mecha/M) - visible_message("[M.name] smashes [src] apart!") playsound(src.loc, 'sound/weapons/punch4.ogg', 50, 1) - table_destroy(1) + visible_message("[M.name] smashes [src]!") + take_damage(200, M.damtype, 0) /obj/structure/table/attack_alien(mob/living/user) + user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src) playsound(src.loc, 'sound/weapons/bladeslice.ogg', 50, 1) - visible_message("[user] slices [src] apart!") - table_destroy(1) + visible_message("[user] slices [src]!") + take_damage(100, BRUTE, 0) + /obj/structure/table/attack_animal(mob/living/simple_animal/user) - if(user.environment_smash) - user.do_attack_animation(src) + user.changeNext_move(CLICK_CD_MELEE) + user.do_attack_animation(src) + if(user.melee_damage_upper) + var/dmg_dealt = user.melee_damage_upper + if(user.environment_smash) + dmg_dealt = 100 + visible_message("[user] smashes [src]!") playsound(src.loc, 'sound/weapons/Genhit.ogg', 50, 1) - visible_message("[user] smashes [src] apart!") - table_destroy(1) + take_damage(dmg_dealt, user.melee_damage_type, 0) + /obj/structure/table/attack_paw(mob/user) attack_hand(user) /obj/structure/table/attack_hulk(mob/living/carbon/human/user) ..(user, 1) - visible_message("[user] smashes [src] apart!") - playsound(src.loc, 'sound/effects/bang.ogg', 50, 1) + playsound(src, 'sound/effects/meteorimpact.ogg', 100, 1) + visible_message("[user] smashes [src]!") user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) - table_destroy(1) + take_damage(rand(180,280), BRUTE, 0) return 1 + /obj/structure/table/attack_tk() // no telehulk sorry return +/obj/structure/table/bullet_act(obj/item/projectile/P) + . = ..() + take_damage(P.damage, P.damage_type, 0) + /obj/structure/table/CanPass(atom/movable/mover, turf/target, height=0) if(height==0) return 1 @@ -145,31 +153,19 @@ qdel(I) /obj/structure/table/attackby(obj/item/I, mob/user, params) - if (istype(I, /obj/item/weapon/grab)) + if(istype(I, /obj/item/weapon/grab)) tablepush(I, user) return - if(!(flags&NODECONSTRUCT)) - if (istype(I, /obj/item/weapon/screwdriver)) - if(istype(src, /obj/structure/table/reinforced)) - var/obj/structure/table/reinforced/RT = src - if(RT.status == 1) - table_destroy(2, user) - return - else - table_destroy(2, user) - return + if(!(flags & NODECONSTRUCT)) + if(istype(I, /obj/item/weapon/screwdriver) && deconstruction_ready) + table_deconstruct(user, 1) + return - if (istype(I, /obj/item/weapon/wrench)) - if(istype(src, /obj/structure/table/reinforced)) - var/obj/structure/table/reinforced/RT = src - if(RT.status == 1) - table_destroy(3, user) - return - else - table_destroy(3, user) - return + if(istype(I, /obj/item/weapon/wrench) && deconstruction_ready) + table_deconstruct(user, 0) + return - if (istype(I, /obj/item/weapon/storage/bag/tray)) + if(istype(I, /obj/item/weapon/storage/bag/tray)) var/obj/item/weapon/storage/bag/tray/T = I if(T.contents.len > 0) // If the tray isn't empty var/list/obj/item/oldContents = T.contents.Copy() @@ -182,10 +178,7 @@ return // If the tray IS empty, continue on (tray will be placed on the table like other items) - if(isrobot(user)) - return - - if(!(I.flags & ABSTRACT)) //rip more parems rip in peace ;_; + if(user.a_intent != "harm" && !(I.flags & ABSTRACT)) if(user.drop_item()) I.Move(loc) var/list/click_params = params2list(params) @@ -195,29 +188,51 @@ //Clamp it so that the icon never moves more than 16 pixels in either direction (thus leaving the table turf) I.pixel_x = Clamp(text2num(click_params["icon-x"]) - 16, -(world.icon_size/2), world.icon_size/2) I.pixel_y = Clamp(text2num(click_params["icon-y"]) - 16, -(world.icon_size/2), world.icon_size/2) + return 1 + else + return ..() +/obj/structure/table/attacked_by(obj/item/I, mob/living/user) + ..() + take_damage(I.force, I.damtype) + +/obj/structure/table/proc/take_damage(damage, damage_type = BRUTE, sound_effect = 1) + switch(damage_type) + if(BRUTE) + if(sound_effect) + if(damage) + playsound(loc, 'sound/weapons/smash.ogg', 50, 1) + else + playsound(loc, 'sound/weapons/tap.ogg', 50, 1) + if(BURN) + if(sound_effect) + playsound(loc, 'sound/items/Welder.ogg', 40, 1) + else + return + health -= damage + if(health <= 0) + table_destroy() /* * TABLE DESTRUCTION/DECONSTRUCTION */ -#define TBL_DESTROY 1 -#define TBL_DISASSEMBLE 2 -#define TBL_DECONSTRUCT 3 -/obj/structure/table/proc/table_destroy(destroy_type, mob/user) - if(!deconstructable || (flags&NODECONSTRUCT)) - return - if(destroy_type == TBL_DESTROY) +/obj/structure/table/proc/table_destroy() + if(!(flags & NODECONSTRUCT)) + var/turf/T = get_turf(src) for(var/i = 1, i <= framestackamount, i++) - new framestack(get_turf(src)) + new framestack(T) for(var/i = 1, i <= buildstackamount, i++) - new buildstack(get_turf(src)) - qdel(src) - return + new buildstack(T) + qdel(src) - if(destroy_type == TBL_DISASSEMBLE) + +/obj/structure/table/proc/table_deconstruct(mob/user, disassembling = 0) + if(flags & NODECONSTRUCT) + return + if(disassembling) user << "You start disassembling [src]..." playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) if(do_after(user, 20, target = src)) @@ -225,9 +240,7 @@ for(var/i = 1, i <= buildstackamount, i++) new buildstack(get_turf(src)) qdel(src) - return - - if(destroy_type == TBL_DECONSTRUCT) + else user << "You start deconstructing [src]..." playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) if(do_after(user, 40, target = src)) @@ -237,7 +250,7 @@ new buildstack(get_turf(src)) playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) qdel(src) - return + /* * Glass tables @@ -249,6 +262,7 @@ icon_state = "glass_table" buildstack = /obj/item/stack/sheet/glass canSmoothWith = null + health = 50 /obj/structure/table/glass/tablepush(obj/item/I, mob/user) if(..()) @@ -306,45 +320,31 @@ desc = "A reinforced version of the four legged table, much harder to simply deconstruct." icon = 'icons/obj/smooth_structures/reinforced_table.dmi' icon_state = "r_table" - var/status = 2 + deconstruction_ready = 0 buildstack = /obj/item/stack/sheet/plasteel canSmoothWith = list(/obj/structure/table/reinforced, /obj/structure/table) + health = 200 /obj/structure/table/reinforced/attackby(obj/item/weapon/W, mob/user, params) - if (istype(W, /obj/item/weapon/weldingtool)) + if(istype(W, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/WT = W if(WT.remove_fuel(0, user)) - if(src.status == 2) + playsound(src.loc, 'sound/items/Welder.ogg', 50, 1) + if(deconstruction_ready) user << "You start weakening the reinforced table..." - playsound(src.loc, 'sound/items/Welder.ogg', 50, 1) if (do_after(user, 50/W.toolspeed, target = src)) if(!src || !WT.isOn()) return user << "You weaken the table." - src.status = 1 + deconstruction_ready = 0 else user << "You start strengthening the reinforced table..." - playsound(src.loc, 'sound/items/Welder.ogg', 50, 1) if (do_after(user, 50/W.toolspeed, target = src)) if(!src || !WT.isOn()) return user << "You strengthen the table." - src.status = 2 - return - ..() - -/obj/structure/table/reinforced/attack_paw(mob/user) - attack_hand(user) - -/obj/structure/table/reinforced/attack_hulk(mob/living/carbon/human/user) - ..(user, 1) - if(prob(75)) - playsound(src, 'sound/effects/meteorimpact.ogg', 100, 1) - user << text("You kick [src] into pieces.") - user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) - table_destroy(1) + deconstruction_ready = 1 else - playsound(src, 'sound/effects/bang.ogg', 50, 1) - user << text("You kick [src].") - return 1 + return ..() + /* * Surgery Tables @@ -394,7 +394,7 @@ density = 1 anchored = 1 pass_flags = LETPASSTHROW //You can throw objects over this, despite it's density. - var/health = 5 + var/health = 20 /obj/structure/rack/ex_act(severity, target) switch(severity) @@ -406,20 +406,18 @@ else qdel(src) if(3) - if(prob(25)) - rack_destroy() + take_damage(rand(5,25), BRUTE, 0) /obj/structure/rack/blob_act() if(prob(75)) qdel(src) - return - else if(prob(50)) + else rack_destroy() - return + /obj/structure/rack/mech_melee_attack(obj/mecha/M) visible_message("[M.name] smashes [src] apart!") - rack_destroy(1) + rack_destroy() /obj/structure/rack/CanPass(atom/movable/mover, turf/target, height=0) if(height==0) return 1 @@ -439,29 +437,26 @@ /obj/structure/rack/MouseDrop_T(obj/O, mob/user) if ((!( istype(O, /obj/item/weapon) ) || user.get_active_hand() != O)) return - if(isrobot(user)) - return if(!user.drop_item()) - user << "\The [O] is stuck to your hand, you cannot put it in the rack!" return - if (O.loc != src.loc) + if(O.loc != src.loc) step(O, get_dir(O, src)) - return + /obj/structure/rack/attackby(obj/item/weapon/W, mob/user, params) if (istype(W, /obj/item/weapon/wrench) && !(flags&NODECONSTRUCT)) playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) rack_destroy() return + if(user.a_intent == "harm") + return ..() + if(user.drop_item()) + W.Move(loc) + return 1 - if(isrobot(user)) - return - if(!user.drop_item()) - user << "\The [W] is stuck to your hand, you cannot put it in the rack!" - return - W.Move(loc) - return 1 - +/obj/structure/rack/attacked_by(obj/item/I, mob/living/user) + ..() + take_damage(I.force, I.damtype) /obj/structure/rack/attack_paw(mob/living/user) attack_hand(user) @@ -474,30 +469,54 @@ /obj/structure/rack/attack_hand(mob/living/user) user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src) - playsound(loc, 'sound/items/dodgeball.ogg', 80, 1) user.visible_message("[user] kicks [src].", \ "You kick [src].") - health -= rand(1,2) - healthcheck() + take_damage(rand(4,8), BRUTE) /obj/structure/rack/attack_alien(mob/living/user) + user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src) + playsound(src.loc, 'sound/weapons/bladeslice.ogg', 50, 1) visible_message("[user] slices [src] apart.") rack_destroy() /obj/structure/rack/attack_animal(mob/living/simple_animal/user) - if(user.environment_smash) - user.do_attack_animation(src) - visible_message("[user] smashes [src] apart.") - rack_destroy() + user.changeNext_move(CLICK_CD_MELEE) + user.do_attack_animation(src) + if(user.melee_damage_upper) + if(user.environment_smash) + playsound(src, 'sound/effects/meteorimpact.ogg', 100, 1) + visible_message("[user] smashes [src] apart.") + rack_destroy() + else + take_damage(user.melee_damage_upper, user.melee_damage_type) + + /obj/structure/rack/attack_tk() // no telehulk sorry return -/obj/structure/rack/proc/healthcheck() +/obj/structure/rack/bullet_act(obj/item/projectile/P) + . = ..() + take_damage(P.damage, P.damage_type, 0) + +/obj/structure/rack/proc/take_damage(damage, damage_type = BRUTE, sound_effect = 1) + switch(damage_type) + if(BRUTE) + if(sound_effect) + if(damage) + playsound(loc, 'sound/items/dodgeball.ogg', 80, 1) + else + playsound(loc, 'sound/weapons/tap.ogg', 50, 1) + if(BURN) + if(sound_effect) + playsound(loc, 'sound/items/Welder.ogg', 40, 1) + else + return + health -= damage if(health <= 0) rack_destroy() - return + /* * Rack destruction @@ -524,12 +543,12 @@ materials = list(MAT_METAL=2000) /obj/item/weapon/rack_parts/attackby(obj/item/weapon/W, mob/user, params) - ..() if (istype(W, /obj/item/weapon/wrench)) new /obj/item/stack/sheet/metal( user.loc ) qdel(src) return - return + else + return ..() /obj/item/weapon/rack_parts/attack_self(mob/user) user << "You start constructing rack..." diff --git a/code/game/objects/structures/transit_tubes/station.dm b/code/game/objects/structures/transit_tubes/station.dm index 475383d8b2b..e4bbee8dcf7 100644 --- a/code/game/objects/structures/transit_tubes/station.dm +++ b/code/game/objects/structures/transit_tubes/station.dm @@ -82,18 +82,19 @@ /obj/structure/transit_tube/station/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/weapon/grab) && icon_state == "open") - var/obj/item/weapon/grab/G = W - if(ismob(G.affecting) && G.state >= GRAB_AGGRESSIVE) - var/mob/GM = G.affecting - for(var/obj/structure/transit_tube_pod/pod in loc) - pod.visible_message("[user] starts putting [GM] into the [pod]!") - if(do_after(user, 15, target = src) && GM && G && G.affecting == GM) - GM.Weaken(5) - src.Bumped(GM) - qdel(G) - break - if(istype(W, /obj/item/weapon/crowbar)) + if(istype(W, /obj/item/weapon/grab)) + if(icon_state == "open") + var/obj/item/weapon/grab/G = W + if(ismob(G.affecting) && G.state >= GRAB_AGGRESSIVE) + var/mob/GM = G.affecting + for(var/obj/structure/transit_tube_pod/pod in loc) + pod.visible_message("[user] starts putting [GM] into the [pod]!") + if(do_after(user, 15, target = src) && GM && G && G.affecting == GM) + GM.Weaken(5) + src.Bumped(GM) + qdel(G) + break + else if(istype(W, /obj/item/weapon/crowbar)) for(var/obj/structure/transit_tube_pod/pod in loc) if(pod.contents) user << "Empty the pod first!" @@ -103,7 +104,8 @@ pod.transfer_fingerprints_to(R) R.add_fingerprint(user) qdel(pod) - ..(W, user) + else + return ..() /obj/structure/transit_tube/station/proc/open_animation() if(icon_state == "closed") diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 1a9586b7449..9f90f3a224b 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -56,7 +56,23 @@ update_icon() return - if(istype(I, /obj/item/weapon/reagent_containers)) + else if(cistern) + if(user.a_intent != "harm") + if(I.w_class > 3) + user << "[I] does not fit!" + return + if(w_items + I.w_class > 5) + user << "The cistern is full!" + return + if(!user.drop_item()) + user << "\The [I] is stuck to your hand, you cannot put it in the cistern!" + return + I.loc = src + w_items += I.w_class + user << "You carefully place [I] into the cistern." + return + + else if(istype(I, /obj/item/weapon/reagent_containers)) if (!open) return var/obj/item/weapon/reagent_containers/RG = I @@ -64,7 +80,7 @@ user << "You fill [RG] from [src]. Gross." return - if(istype(I, /obj/item/weapon/grab)) + else if(istype(I, /obj/item/weapon/grab)) user.changeNext_move(CLICK_CD_MELEE) var/obj/item/weapon/grab/G = I if(!G.confirm()) @@ -95,20 +111,8 @@ else user << "You need a tighter grip!" - if(cistern) - if(I.w_class > 3) - user << "[I] does not fit!" - return - if(w_items + I.w_class > 5) - user << "The cistern is full!" - return - if(!user.drop_item()) - user << "\The [I] is stuck to your hand, you cannot put it in the cistern!" - return - I.loc = src - w_items += I.w_class - user << "You carefully place [I] into the cistern." - return + else + return ..() @@ -137,7 +141,8 @@ GM.adjustBruteLoss(8) else user << "You need a tighter grip!" - + else + return ..() /obj/machinery/shower name = "shower" @@ -418,9 +423,9 @@ if(RG.flags & OPENCONTAINER) RG.reagents.add_reagent("water", min(RG.volume - RG.reagents.total_volume, RG.amount_per_transfer_from_this)) user << "You fill [RG] from [src]." - return + return 1 - if(istype(O, /obj/item/weapon/melee/baton)) + else if(istype(O, /obj/item/weapon/melee/baton)) var/obj/item/weapon/melee/baton/B = O if(B.bcell) if(B.bcell.charge > 0 && B.status == 1) @@ -435,12 +440,12 @@ playsound(src, "sparks", 50, 1) return - if(istype(O, /obj/item/weapon/mop)) + else if(istype(O, /obj/item/weapon/mop)) O.reagents.add_reagent("water", 5) user << "You wet [O] in [src]." playsound(loc, 'sound/effects/slosh.ogg', 25, 1) - if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/monkeycube)) + else if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/monkeycube)) var/obj/item/weapon/reagent_containers/food/snacks/monkeycube/M = O if(M.wrapped) user << "You need to unwrap [src] first!" @@ -458,15 +463,20 @@ if(I.flags & ABSTRACT) //Abstract items like grabs won't wash. No-drop items will though because it's still technically an item in your hand. return - user << "You start washing [I]..." - busy = 1 - if(!do_after(user, 40, target = src)) + if(user.a_intent != "harm") + user << "You start washing [I]..." + busy = 1 + if(!do_after(user, 40, target = src)) + busy = 0 + return 1 busy = 0 - return - busy = 0 - O.clean_blood() - user.visible_message("[user] washes [I] using [src].", \ - "You wash [I] using [src].") + O.clean_blood() + user.visible_message("[user] washes [I] using [src].", \ + "You wash [I] using [src].") + return 1 + else + return ..() + /obj/structure/sink/kitchen name = "kitchen sink" @@ -484,5 +494,5 @@ /obj/structure/sink/puddle/attackby(obj/item/O, mob/user, params) icon_state = "puddle-splash" - ..() + . = ..() icon_state = "puddle" \ No newline at end of file diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 4259c94c6eb..bf8b3a9476f 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -12,7 +12,6 @@ var/ini_dir = null var/state = 0 var/reinf = 0 - var/disassembled = 0 var/wtype = "glass" var/fulltile = 0 var/list/storeditems = list() @@ -49,30 +48,28 @@ return -/obj/structure/window/bullet_act(obj/item/projectile/Proj) - if((Proj.damage_type == BRUTE || Proj.damage_type == BURN)) - health -= Proj.damage - update_nearby_icons() - ..() - if(health <= 0) - spawnfragments() - return +/obj/structure/window/bullet_act(obj/item/projectile/P) + . = ..() + take_damage(P.damage, P.damage_type, 0) /obj/structure/window/ex_act(severity, target) - if(severity == 1) - qdel(src) - else - spawnfragments() + switch(severity) + if(1) + qdel(src) + if(2) + shatter() + if(3) + take_damage(rand(25,75), BRUTE, 0) /obj/structure/window/blob_act() - spawnfragments() + shatter() /obj/structure/window/narsie_act() color = "#7D1919" /obj/structure/window/singularity_pull(S, current_size) if(current_size >= STAGE_FIVE) - spawnfragments() + shatter() /obj/structure/window/CanPass(atom/movable/mover, turf/target, height=0) if(istype(mover) && mover.checkpass(PASSGLASS)) @@ -102,20 +99,9 @@ else if(isobj(AM)) var/obj/item/I = AM tforce = I.throwforce - if(reinf) tforce *= 0.25 - - playsound(loc, 'sound/effects/Glasshit.ogg', 100, 1) - health = max(0, health - tforce) - if(health <= 7 && !reinf) - anchored = 0 - update_nearby_icons() - step(src, get_dir(AM, src)) - - if(health <= 0) - spawnfragments() - update_nearby_icons() + take_damage(tforce) /obj/structure/window/attack_tk(mob/user) user.changeNext_move(CLICK_CD_MELEE) @@ -130,7 +116,7 @@ user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!")) user.visible_message("[user] smashes through [src]!") add_fingerprint(user) - hit(50) + take_damage(50) return 1 /obj/structure/window/attack_hand(mob/user) @@ -145,44 +131,28 @@ return attack_hand(user) -/obj/structure/window/proc/attack_generic(mob/user, damage = 0) //used by attack_alien, attack_animal, and attack_slime +/obj/structure/window/proc/attack_generic(mob/user, damage = 0, damage_type = BRUTE) //used by attack_alien, attack_animal, and attack_slime if(!can_be_reached(user)) return + user.do_attack_animation(src) user.changeNext_move(CLICK_CD_MELEE) - health -= damage - if(health <= 0) - user.visible_message("[user] smashes through [src]!") - spawnfragments() - else //for nicer text~ - user.visible_message("[user] smashes into [src]!") - playsound(loc, 'sound/effects/Glasshit.ogg', 100, 1) - + user.visible_message("[user] smashes into [src]!") + take_damage(damage, damage_type) /obj/structure/window/attack_alien(mob/living/user) - user.do_attack_animation(src) - if(islarva(user)) return attack_generic(user, 15) - update_nearby_icons() -/obj/structure/window/attack_animal(mob/living/user) - if(!isanimal(user)) +/obj/structure/window/attack_animal(mob/living/simple_animal/M) + if(!M.melee_damage_upper) return + attack_generic(M, M.melee_damage_upper, M.melee_damage_type) - var/mob/living/simple_animal/M = user - M.do_attack_animation(src) - if(M.melee_damage_upper <= 0 || (M.melee_damage_type != BRUTE && M.melee_damage_type != BURN)) - return - - attack_generic(M, M.melee_damage_upper) - update_nearby_icons() /obj/structure/window/attack_slime(mob/living/simple_animal/slime/user) - user.do_attack_animation(src) if(!user.is_adult) return - attack_generic(user, rand(10, 15)) - update_nearby_icons() + /obj/structure/window/attackby(obj/item/I, mob/living/user, params) if(!can_be_reached(user)) @@ -243,8 +213,8 @@ playsound(loc, 'sound/items/Ratchet.ogg', 75, 1) user << " You begin to disassemble [src]..." if(do_after(user, 40/I.toolspeed, target = src)) - if(disassembled) - return //Prevents multiple deconstruction attempts + if(qdeleted(src)) + return if(reinf) var/obj/item/stack/sheet/rglass/RG = new (user.loc) @@ -261,25 +231,19 @@ G.add_fingerprint(user) playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - disassembled = 1 user << "You successfully disassemble [src]." qdel(src) return + return ..() - if(istype(I, /obj/item/weapon/rcd)) //Do not attack the window if the user is holding an RCD - return - if(I.damtype == BRUTE || I.damtype == BURN) - user.changeNext_move(CLICK_CD_MELEE) - hit(I.force) - else - playsound(loc, 'sound/effects/Glasshit.ogg', 75, 1) +/obj/structure/window/attacked_by(obj/item/I, mob/living/user) ..() - return + take_damage(I.force, I.damtype) /obj/structure/window/mech_melee_attack(obj/mecha/M) if(..()) - hit(M.force, 1) + take_damage(M.force, M.damtype) /obj/structure/window/proc/can_be_reached(mob/user) @@ -290,20 +254,27 @@ return 0 return 1 -/obj/structure/window/proc/hit(damage, sound_effect = 1) +/obj/structure/window/proc/take_damage(damage, damage_type = BRUTE, sound_effect = 1) if(reinf) damage *= 0.5 - health = max(0, health - damage) + switch(damage_type) + if(BRUTE) + if(sound_effect) + playsound(loc, 'sound/effects/Glasshit.ogg', 90, 1) + if(BURN) + if(sound_effect) + playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) + else + return + health -= damage update_nearby_icons() - if(sound_effect) - playsound(loc, 'sound/effects/Glasshit.ogg', 75, 1) if(health <= 0) - spawnfragments() - return + shatter() -/obj/structure/window/proc/spawnfragments() - if(qdeleted()) +/obj/structure/window/proc/shatter() + if(qdeleted(src)) return + playsound(src, "shatter", 70, 1) var/turf/T = loc for(var/obj/item/I in storeditems) I.loc = T @@ -378,8 +349,6 @@ /obj/structure/window/Destroy() density = 0 air_update_turf(1) - if(!disassembled && !(flags&NODECONSTRUCT)) - playsound(src, "shatter", 70, 1) update_nearby_icons() return ..() @@ -403,13 +372,9 @@ if(smooth) queue_smooth_neighbors(src) -//merges adjacent full-tile windows into one (blatant ripoff from game/smoothwall.dm) +//merges adjacent full-tile windows into one /obj/structure/window/update_icon() - //A little cludge here, since I don't know how it will work with slim windows. Most likely VERY wrong. - //this way it will only update full-tile ones - //This spawn is here so windows get properly updated when one gets deleted. - spawn(2) - if(!src) return + if(!qdeleted(src)) //phil235 if(!fulltile) return @@ -427,7 +392,7 @@ /obj/structure/window/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > T0C + (reinf ? 1600 : 800)) - hit(round(exposed_volume / 100), 0) + take_damage(round(exposed_volume / 100), BURN, 0) ..() /obj/structure/window/storage_contents_dump_act(obj/item/weapon/storage/src_object, mob/user) @@ -448,16 +413,6 @@ maxhealth = 50 explosion_block = 1 -/obj/structure/window/reinforced/ex_act(severity, target) - switch(severity) - if(1) - qdel(src) - if(2) - spawnfragments() - if(3) - if(prob(50)) - spawnfragments() - /obj/structure/window/reinforced/tinted name = "tinted window" icon_state = "twindow" diff --git a/code/modules/vehicles/pimpin_ride.dm b/code/modules/vehicles/pimpin_ride.dm index b1d1e5a3af8..356c5ca354d 100644 --- a/code/modules/vehicles/pimpin_ride.dm +++ b/code/modules/vehicles/pimpin_ride.dm @@ -60,20 +60,19 @@ /obj/vehicle/janicart/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/weapon/storage/bag/trash)) - if(keytype == /obj/item/key/janitor) - if(!user.drop_item()) - return - user << "You hook the trashbag onto \the [name]." - I.loc = src - mybag = I + if(!user.drop_item()) + return + user << "You hook the trashbag onto \the [name]." + I.loc = src + mybag = I + update_icon() else if(istype(I, /obj/item/janiupgrade)) - if(keytype == /obj/item/key/janitor) - floorbuffer = 1 - qdel(I) - user << "You upgrade \the [name] with the floor buffer." - update_icon() - - ..() + floorbuffer = 1 + qdel(I) + user << "You upgrade \the [name] with the floor buffer." + update_icon() + else + return ..() /obj/vehicle/janicart/update_icon() From 639ff5d16156437c4aa9b93dddcafed4a6efb58d Mon Sep 17 00:00:00 2001 From: phil235 Date: Sun, 24 Apr 2016 20:39:30 +0200 Subject: [PATCH 115/265] Doors can now be attacked when clicked on harm intent. (they're currently indestructible so it's only cosmetic for now). I tried to make door code more OOP. --- code/game/machinery/doors/airlock.dm | 270 ++++++++---------- code/game/machinery/doors/door.dm | 133 ++++++--- code/game/machinery/doors/firedoor.dm | 66 ++--- code/game/machinery/doors/poddoor.dm | 79 +---- code/game/machinery/doors/unpowered.dm | 8 +- code/game/machinery/doors/windowdoor.dm | 165 ++++------- code/game/objects/structures/door_assembly.dm | 66 +++-- icons/obj/doors/blastdoor.dmi | Bin 2628 -> 2654 bytes 8 files changed, 341 insertions(+), 446 deletions(-) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 120881d38fa..66c2510e0ae 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -35,8 +35,6 @@ var/list/airlock_overlays = list() var/secondsMainPowerLost = 0 //The number of seconds until power is restored. var/secondsBackupPowerLost = 0 //The number of seconds until power is restored. var/spawnPowerRestoreRunning = 0 - var/welded = null - var/locked = 0 var/lights = 1 // bolt lights show by default secondsElectrified = 0 //How many seconds remain until the door is no longer electrified. -1 if it is permanently electrified until someone fixes it. var/aiDisabledIdScanner = 0 @@ -46,11 +44,10 @@ var/list/airlock_overlays = list() var/lockdownbyai = 0 var/doortype = /obj/structure/door_assembly/door_assembly_0 var/justzap = 0 - var/safe = 1 normalspeed = 1 var/obj/item/weapon/electronics/airlock/electronics = null var/hasShocked = 0 //Prevents multiple shocks from happening - var/autoclose = 1 + autoclose = 1 var/obj/item/device/doorCharge/charge = null //If applied, causes an explosion upon opening the door var/detonated = 0 var/doorOpen = 'sound/machines/airlock.ogg' @@ -267,7 +264,7 @@ var/list/airlock_overlays = list() filling_overlay = get_airlock_overlay("[airlock_material]_closed", overlays_file) else filling_overlay = get_airlock_overlay("fill_closed", icon) - if(p_open) + if(panel_open) panel_overlay = get_airlock_overlay("panel_closed", overlays_file) if(welded) weld_overlay = get_airlock_overlay("welded", overlays_file) @@ -285,7 +282,7 @@ var/list/airlock_overlays = list() filling_overlay = get_airlock_overlay("[airlock_material]_closed", overlays_file) else filling_overlay = get_airlock_overlay("fill_closed", icon) - if(p_open) + if(panel_open) panel_overlay = get_airlock_overlay("panel_closed", overlays_file) if(welded) weld_overlay = get_airlock_overlay("welded", overlays_file) @@ -298,7 +295,7 @@ var/list/airlock_overlays = list() filling_overlay = get_airlock_overlay("[airlock_material]_closed", overlays_file) else filling_overlay = get_airlock_overlay("fill_closed", icon) - if(p_open) + if(panel_open) panel_overlay = get_airlock_overlay("panel_closed", overlays_file) if(welded) weld_overlay = get_airlock_overlay("welded", overlays_file) @@ -311,7 +308,7 @@ var/list/airlock_overlays = list() filling_overlay = get_airlock_overlay("fill_closing", icon) if(lights && hasPower()) lights_overlay = get_airlock_overlay("lights_closing", overlays_file) - if(p_open) + if(panel_open) panel_overlay = get_airlock_overlay("panel_closing", overlays_file) if(AIRLOCK_OPEN) @@ -320,7 +317,7 @@ var/list/airlock_overlays = list() filling_overlay = get_airlock_overlay("[airlock_material]_open", overlays_file) else filling_overlay = get_airlock_overlay("fill_open", icon) - if(p_open) + if(panel_open) panel_overlay = get_airlock_overlay("panel_open", overlays_file) if(AIRLOCK_OPENING) @@ -331,7 +328,7 @@ var/list/airlock_overlays = list() filling_overlay = get_airlock_overlay("fill_opening", icon) if(lights && hasPower()) lights_overlay = get_airlock_overlay("lights_opening", overlays_file) - if(p_open) + if(panel_open) panel_overlay = get_airlock_overlay("panel_opening", overlays_file) //doesn't use overlays.Cut() for performance reasons @@ -379,13 +376,12 @@ var/list/airlock_overlays = list() playsound(src,doorDeni,50,0,3) sleep(6) update_icon(AIRLOCK_CLOSED) - icon_state = "closed" /obj/machinery/door/airlock/examine(mob/user) ..() - if(charge && !p_open && in_range(user, src)) + if(charge && !panel_open && in_range(user, src)) user << "The maintenance panel seems haphazardly fastened." - if(charge && p_open) + if(charge && panel_open) user << "Something is wired up to the airlock's electronics!" /obj/machinery/door/airlock/attack_ai(mob/user) @@ -579,7 +575,7 @@ var/list/airlock_overlays = list() visible_message("[user] headbutts the airlock. Good thing they're wearing a helmet.") return - if(src.p_open) + if(panel_open) wires.interact(user) else ..() @@ -600,7 +596,7 @@ var/list/airlock_overlays = list() usr.unset_machine() return - if((in_range(src, usr) && istype(src.loc, /turf)) && src.p_open) + if((in_range(src, usr) && istype(src.loc, /turf)) && panel_open) usr.set_machine(src) @@ -802,134 +798,29 @@ var/list/airlock_overlays = list() add_fingerprint(usr) if(!nowindow) updateUsrDialog() - return /obj/machinery/door/airlock/attackby(obj/item/C, mob/user, params) - if(!(istype(usr, /mob/living/silicon) || IsAdminGhost(user))) + if(!issilicon(user) && !IsAdminGhost(user)) if(src.isElectrified()) if(src.shock(user, 75)) return - if(istype(C, /obj/item/device/detective_scanner)) - return - - if(istype(C, /obj/item/weapon/card/emag)) - return - - src.add_fingerprint(user) - if((istype(C, /obj/item/weapon/weldingtool) && !( src.operating ) && src.density)) - var/obj/item/weapon/weldingtool/W = C - if(W.remove_fuel(0,user)) - user.visible_message("[user] is [welded ? "unwelding":"welding"] the airlock.", \ - "You begin [welded ? "unwelding":"welding"] the airlock...", \ - "You hear welding.") - playsound(loc, 'sound/items/Welder.ogg', 40, 1) - if(do_after(user,40/C.toolspeed, 1, target = src)) - if(density && !operating)//Door must be closed to weld. - if( !istype(src, /obj/machinery/door/airlock) || !user || !W || !W.isOn() || !user.loc ) - return - playsound(loc, 'sound/items/Welder2.ogg', 50, 1) - welded = !welded - user.visible_message("[user.name] has [welded? "welded shut":"unwelded"] [src].", \ - "You [welded ? "weld the airlock shut":"unweld the airlock"].") - update_icon() - return - else if(istype(C, /obj/item/weapon/screwdriver)) - if(p_open && detonated) + add_fingerprint(user) + if(istype(C, /obj/item/weapon/screwdriver)) + if(panel_open && detonated) user << "[src] has no maintenance panel!" return - src.p_open = !( src.p_open ) - user << "You [p_open ? "open":"close"] the maintenance panel of the airlock." + panel_open = !panel_open + user << "You [panel_open ? "open":"close"] the maintenance panel of the airlock." src.update_icon() else if(is_wire_tool(C)) return attack_hand(user) else if(istype(C, /obj/item/weapon/pai_cable)) var/obj/item/weapon/pai_cable/cable = C cable.plugin(src, user) - else if(istype(C, /obj/item/weapon/crowbar) || istype(C, /obj/item/weapon/twohanded/fireaxe) ) - var/beingcrowbarred = null - if(istype(C, /obj/item/weapon/crowbar) ) - beingcrowbarred = 1 //derp, Agouri - else - beingcrowbarred = 0 - if(p_open && charge) - user << "You carefully start removing [charge] from [src]..." - playsound(get_turf(src), 'sound/items/Crowbar.ogg', 50, 1) - if(!do_after(user, 150/C.toolspeed, target = src)) - user << "You slip and [charge] detonates!" - charge.ex_act(1) - user.Weaken(3) - return - user.visible_message("[user] removes [charge] from [src].", \ - "You gently pry out [charge] from [src] and unhook its wires.") - charge.loc = get_turf(user) - charge = null - return - if( beingcrowbarred && (density && welded && !operating && src.p_open && (!hasPower()) && !src.locked) ) - playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1) - user.visible_message("[user] removes the electronics from the airlock assembly.", \ - "You start to remove electronics from the airlock assembly...") - if(do_after(user,40/C.toolspeed, target = src)) - if(src.loc) - if(src.doortype) - var/obj/structure/door_assembly/A = new src.doortype(src.loc) - A.heat_proof_finished = src.heat_proof //tracks whether there's rglass in - else - new /obj/structure/door_assembly/door_assembly_0(src.loc) - //If you come across a null doortype, it will produce the default assembly instead of disintegrating. - - if(emagged) - user << "You discard the damaged electronics." - qdel(src) - return - user << "You remove the airlock electronics." - - var/obj/item/weapon/electronics/airlock/ae - if(!electronics) - ae = new/obj/item/weapon/electronics/airlock( src.loc ) - if(req_one_access) - ae.one_access = 1 - ae.accesses = src.req_one_access - else - ae.accesses = src.req_access - else - ae = electronics - electronics = null - ae.loc = src.loc - - qdel(src) - return - else if(hasPower()) - user << "The airlock's motors resist your efforts to force it!" - else if(locked) - user << "The airlock's bolts prevent it from being forced!" - else if( !welded && !operating) - if(density) - if(beingcrowbarred == 0) //being fireaxe'd - var/obj/item/weapon/twohanded/fireaxe/F = C - if(F:wielded) - spawn(0) - open(2) - else - user << "You need to be wielding the fire axe to do that!" - else - spawn(0) - open(2) - else - if(beingcrowbarred == 0) - var/obj/item/weapon/twohanded/fireaxe/F = C - if(F:wielded) - spawn(0) - close(2) - else - user << "You need to be wielding the fire axe to do that!" - else - spawn(0) - close(2) - else if(istype(C, /obj/item/weapon/airlock_painter)) change_paintjob(C, user) else if(istype(C, /obj/item/device/doorCharge)) - if(!p_open) + if(!panel_open) user << "The maintenance panel must be open to apply [C]!" return if(emagged) @@ -942,25 +833,113 @@ var/list/airlock_overlays = list() return user << "You apply [C]. Next time someone opens the door, it will explode." user.drop_item() - p_open = 0 + panel_open = 0 update_icon() - var/obj/item/device/doorCharge/newCharge = C //This is necessary, for some reason - newCharge.loc = src - charge = newCharge - return - else if(istype(C, /obj/item/weapon/rcd)) //Do not attack the airlock if the user is holding an RCD - return + C.loc = src + charge = C else - ..() - return + return ..() + + +/obj/machinery/door/airlock/try_to_weld(obj/item/weapon/weldingtool/W, mob/user) + if(!operating && density) + if(W.remove_fuel(0,user)) + user.visible_message("[user] is [welded ? "unwelding":"welding"] the airlock.", \ + "You begin [welded ? "unwelding":"welding"] the airlock...", \ + "You hear welding.") + playsound(loc, 'sound/items/Welder.ogg', 40, 1) + if(do_after(user,40/W.toolspeed, 1, target = src)) + if(density && !operating)//Door must be closed to weld. + if( !istype(src, /obj/machinery/door/airlock) || !user || !W || !W.isOn() || !user.loc ) + return + playsound(loc, 'sound/items/Welder2.ogg', 50, 1) + welded = !welded + user.visible_message("[user.name] has [welded? "welded shut":"unwelded"] [src].", \ + "You [welded ? "weld the airlock shut":"unweld the airlock"].") + update_icon() + +/obj/machinery/door/airlock/try_to_crowbar(obj/item/I, mob/user) + var/beingcrowbarred = null + if(istype(I, /obj/item/weapon/crowbar) ) + beingcrowbarred = 1 + else + beingcrowbarred = 0 + if(panel_open && charge) + user << "You carefully start removing [charge] from [src]..." + playsound(get_turf(src), 'sound/items/Crowbar.ogg', 50, 1) + if(!do_after(user, 150/I.toolspeed, target = src)) + user << "You slip and [charge] detonates!" + charge.ex_act(1) + user.Weaken(3) + return + user.visible_message("[user] removes [charge] from [src].", \ + "You gently pry out [charge] from [src] and unhook its wires.") + charge.loc = get_turf(user) + charge = null + return + if( beingcrowbarred && (density && welded && !operating && src.panel_open && (!hasPower()) && !src.locked) ) + playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1) + user.visible_message("[user] removes the electronics from the airlock assembly.", \ + "You start to remove electronics from the airlock assembly...") + if(do_after(user,40/I.toolspeed, target = src)) + if(src.loc) + if(src.doortype) + var/obj/structure/door_assembly/A = new src.doortype(src.loc) + A.heat_proof_finished = src.heat_proof //tracks whether there's rglass in + else + new /obj/structure/door_assembly/door_assembly_0(src.loc) + //If you come across a null doortype, it will produce the default assembly instead of disintegrating. + + if(emagged) + user << "You discard the damaged electronics." + qdel(src) + return + user << "You remove the airlock electronics." + + var/obj/item/weapon/electronics/airlock/ae + if(!electronics) + ae = new/obj/item/weapon/electronics/airlock( src.loc ) + if(req_one_access) + ae.one_access = 1 + ae.accesses = src.req_one_access + else + ae.accesses = src.req_access + else + ae = electronics + electronics = null + ae.loc = src.loc + + qdel(src) + return + else if(hasPower()) + user << "The airlock's motors resist your efforts to force it!" + else if(locked) + user << "The airlock's bolts prevent it from being forced!" + else if( !welded && !operating) + if(beingcrowbarred == 0) //being fireaxe'd + var/obj/item/weapon/twohanded/fireaxe/F = I + if(F.wielded) + spawn(0) + if(density) + open(2) + else + close(2) + else + user << "You need to be wielding the fire axe to do that!" + else + spawn(0) + if(density) + open(2) + else + close(2) /obj/machinery/door/airlock/plasma/attackby(obj/item/C, mob/user, params) if(C.is_hot() > 300)//If the temperature of the object is over 300, then ignite message_admins("Plasma airlock ignited by [key_name_admin(user)](?) (FLW) in ([x],[y],[z] - JMP)") log_game("Plasma wall ignited by [key_name(user)] in ([x],[y],[z])") ignite(C.is_hot()) - return - ..() + else + return ..() /obj/machinery/door/airlock/open(forced=0) if( operating || welded || locked ) @@ -969,7 +948,7 @@ var/list/airlock_overlays = list() if(!hasPower() || wires.is_cut(WIRE_OPEN)) return 0 if(charge && !detonated) - p_open = 1 + panel_open = 1 update_icon(AIRLOCK_OPENING) visible_message("[src]'s panel is blown off in a spray of deadly shrapnel!") charge.loc = get_turf(src) @@ -1069,18 +1048,7 @@ var/list/airlock_overlays = list() return -/obj/machinery/door/airlock/proc/autoclose() - if(!qdeleted(src) && !density && !operating && !locked && !welded && autoclose) - close() - -/obj/machinery/door/airlock/proc/change_paintjob(obj/item/C, mob/user) - var/obj/item/weapon/airlock_painter/W - if(istype(C, /obj/item/weapon/airlock_painter)) - W = C - else - user << "If you see this, it means airlock/change_paintjob() was called with something other than an airlock painter. Check your code!" - return - +/obj/machinery/door/airlock/proc/change_paintjob(obj/item/weapon/airlock_painter/W, mob/user) if(!W.can_use(user)) return diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index d3ec8284955..aeebec18d4d 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -11,14 +11,19 @@ var/secondsElectrified = 0 var/visible = 1 - var/p_open = 0 var/operating = 0 var/glass = 0 + var/welded = 0 var/normalspeed = 1 var/heat_proof = 0 // For rglass-windowed airlocks and firedoors var/emergency = 0 // Emergency access override var/sub_door = 0 // 1 if it's meant to go under another door. var/closingLayer = 3.1 + var/autoclose = 0 //does it automatically close after some time + var/safe = 1 //whether the door detects things and mobs in its way and reopen or crushes them. + var/locked = 0 //whether the door is bolted or not. + + var/auto_close //phil235 to be removed, it's preventing a runtime with map. /obj/machinery/door/New() ..() @@ -75,11 +80,6 @@ /obj/machinery/door/CanAtmosPass() return !density -/obj/machinery/door/proc/CheckForMobs() - if(locate(/mob/living) in get_turf(src)) - sleep(1) - open() - /obj/machinery/door/proc/bumpopen(mob/user) if(operating) return @@ -100,11 +100,28 @@ /obj/machinery/door/attack_paw(mob/user) - return src.attack_hand(user) + if(user.a_intent != "harm") + return src.attack_hand(user) + else + attack_generic(user, 5) +/obj/machinery/door/proc/attack_generic(mob/user, damage = 0, damage_type = BRUTE) + if(operating) + return + user.do_attack_animation(src) + user.changeNext_move(CLICK_CD_MELEE) + user.visible_message("[user] smashes against the [src.name]!", \ + "You smash against the [src.name]!") + take_damage(damage, damage_type) + +/obj/machinery/door/attack_slime(mob/living/simple_animal/slime/S) + if(!S.is_adult) + attack_generic(S, 0) + else + attack_generic(S, 25) /obj/machinery/door/attack_hand(mob/user) - return src.attackby(user, user) + return try_to_activate_door(user) /obj/machinery/door/attack_tk(mob/user) @@ -112,28 +129,56 @@ return ..() -/obj/machinery/door/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/device/detective_scanner)) - return - if(isrobot(user)) - return //borgs can't attack doors open because it conflicts with their AI-like interaction with them. - src.add_fingerprint(user) +/obj/machinery/door/proc/try_to_activate_door(mob/user) + add_fingerprint(user) if(operating || emagged) return - if(!Adjacent(user)) - user = null - if(!src.requiresID()) - user = null - if(src.allowed(user) || src.emergency == 1) - if(src.density) + if(!requiresID()) + user = null //so allowed(user) always succeeds + if(allowed(user) || emergency == 1) + if(density) open() else close() return - if(src.density) + if(density) do_animate("deny") + +/obj/machinery/door/proc/try_to_weld(obj/item/weapon/weldingtool/W, mob/user) return +obj/machinery/door/proc/try_to_crowbar(obj/item/I, mob/user) + return + +/obj/machinery/door/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/weapon/crowbar) || istype(I, /obj/item/weapon/twohanded/fireaxe)) + try_to_crowbar(I, user) + return 1 + else if(istype(I, /obj/item/weapon/weldingtool)) + try_to_weld(I, user) + return 1 + else if(!(I.flags & NOBLUDGEON) && user.a_intent != "harm") + try_to_activate_door(user) + return 1 + else + return ..() + +/obj/machinery/door/take_damage(damage, damage_type = BRUTE, sound_effect = 1) + switch(damage_type) + if(BRUTE) + if(sound_effect) + if(glass) + playsound(loc, 'sound/effects/Glasshit.ogg', 90, 1) + else + playsound(loc, 'sound/weapons/smash.ogg', 50, 1) + if(BURN) + if(sound_effect) + playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) + else + return + + + /obj/machinery/door/blob_act() if(prob(40)) qdel(src) @@ -171,18 +216,18 @@ /obj/machinery/door/proc/do_animate(animation) switch(animation) if("opening") - if(p_open) + if(panel_open) flick("o_doorc0", src) else flick("doorc0", src) if("closing") - if(p_open) + if(panel_open) flick("o_doorc1", src) else flick("doorc1", src) if("deny") - flick("door_deny", src) - return + if(!stat) + flick("door_deny", src) /obj/machinery/door/proc/open() @@ -193,42 +238,56 @@ if(!ticker || !ticker.mode) return 0 operating = 1 - do_animate("opening") - icon_state = "door0" - src.SetOpacity(0) + SetOpacity(0) sleep(5) - src.density = 0 + density = 0 sleep(5) - src.layer = 2.7 + layer = 2.7 update_icon() SetOpacity(0) operating = 0 air_update_turf(1) update_freelook_sight() + if(autoclose) + spawn(autoclose) + close() return 1 - /obj/machinery/door/proc/close() if(density) return 1 if(operating) return + if(safe) + for(var/atom/movable/M in get_turf(src)) + if(M.density && M != src) //something is blocking the door + if(autoclose) + addtimer(src, "autoclose", 60) + return operating = 1 do_animate("closing") - src.layer = closingLayer + layer = closingLayer sleep(5) - src.density = 1 + density = 1 sleep(5) update_icon() if(visible && !glass) SetOpacity(1) - CheckForMobs() operating = 0 air_update_turf(1) update_freelook_sight() - return + if(safe) + CheckForMobs() + else + crush() + return 1 + +/obj/machinery/door/proc/CheckForMobs() + if(locate(/mob/living) in get_turf(src)) + sleep(1) + open() /obj/machinery/door/proc/crush() for(var/mob/living/L in get_turf(src)) @@ -250,6 +309,10 @@ for(var/obj/mecha/M in get_turf(src)) M.take_damage(DOOR_CRUSH_DAMAGE) +/obj/machinery/door/proc/autoclose() + if(!qdeleted(src) && !density && !operating && !locked && !welded && autoclose) + close() + /obj/machinery/door/proc/requiresID() return 1 diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index f234816f134..e2d5046c0d3 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -16,13 +16,12 @@ density = 0 heat_proof = 1 glass = 1 - var/blocked = 0 var/nextstate = null sub_door = 1 closingLayer = 3.11 /obj/machinery/door/firedoor/Bumped(atom/AM) - if(p_open || operating) + if(panel_open || operating) return if(!density) return ..() @@ -43,14 +42,6 @@ if(operating) return//Already doing something. - if(istype(C, /obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/W = C - if(W.remove_fuel(0, user)) - blocked = !blocked - user << text("You [blocked?"welded":"unwelded"] \the [src]") - update_icon() - return - if(istype(C, /obj/item/weapon/wrench) && panel_open) playsound(get_turf(src), 'sound/items/Ratchet.ogg', 50, 1) user.visible_message("[user] starts undoing [src]'s bolts...", \ @@ -68,35 +59,41 @@ qdel(src) return - if(istype(C, /obj/item/weapon/crowbar) || (istype(C,/obj/item/weapon/twohanded/fireaxe) && C:wielded == 1)) - if(blocked || operating) - return - if(density) - open() - return - else //close it up again //fucking 10/10 commenting here einstein - close() - return - if(istype(C, /obj/item/weapon/screwdriver)) default_deconstruction_screwdriver(user, icon_state, icon_state, C) return + return ..() + +/obj/machinery/door/firedoor/try_to_activate_door(mob/user) return -/obj/machinery/door/firedoor/attack_ai(mob/user) - add_fingerprint(user) - if(blocked || operating || stat & NOPOWER) +/obj/machinery/door/firedoor/try_to_weld(obj/item/weapon/weldingtool/W, mob/user) + if(W.remove_fuel(0, user)) + welded = !welded + user << "You [welded?"welded":"unwelded"] \the [src]" + update_icon() + +/obj/machinery/door/firedoor/try_to_crowbar(obj/item/I, mob/user) + if(welded || operating) + return + if(density) + open() + else + close() + +/obj/machinery/door/firedoor/attack_ai(mob/user) + add_fingerprint(user) + if(welded || operating || stat & NOPOWER) return if(density) open() else close() - return /obj/machinery/door/firedoor/attack_alien(mob/user) add_fingerprint(user) - if(blocked) + if(welded) user << "[src] refuses to budge!" return open() @@ -107,33 +104,25 @@ flick("door_opening", src) if("closing") flick("door_closing", src) - return - /obj/machinery/door/firedoor/update_icon() overlays.Cut() if(density) icon_state = "door_closed" - if(blocked) + if(welded) overlays += "welded" else icon_state = "door_open" - if(blocked) + if(welded) overlays += "welded_open" - return /obj/machinery/door/firedoor/open() - ..() + . = ..() latetoggle() - return /obj/machinery/door/firedoor/close() - ..() - if(locate(/mob/living) in get_turf(src)) - open() - return + . = ..() latetoggle() - return /obj/machinery/door/firedoor/proc/latetoggle() if(operating || stat & NOPOWER || !nextstate) @@ -145,8 +134,6 @@ if(CLOSED) nextstate = null close() - return - /obj/machinery/door/firedoor/border_only icon = 'icons/obj/doors/edge_Doorfire.dmi' @@ -329,3 +316,4 @@ constructionStep = CONSTRUCTION_GUTTED update_icon() return + return ..() \ No newline at end of file diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm index 91c04b36e2e..0fc2740ba36 100644 --- a/code/game/machinery/doors/poddoor.dm +++ b/code/game/machinery/doors/poddoor.dm @@ -4,10 +4,10 @@ icon = 'icons/obj/doors/blastdoor.dmi' icon_state = "closed" var/id = 1 - var/auto_close = 0 // Time in seconds to automatically close when opened, 0 if it doesn't. sub_door = 1 explosion_block = 3 heat_proof = 1 + safe = 0 /obj/machinery/door/poddoor/preopen icon_state = "open" @@ -26,71 +26,6 @@ else return ..() - -/obj/machinery/door/poddoor/attackby(obj/item/I, mob/user, params) - add_fingerprint(user) - - if(istype(I, /obj/item/weapon/twohanded/fireaxe)) - var/obj/item/weapon/twohanded/fireaxe/F = I - if(!F.wielded) - return - else if(!istype(I, /obj/item/weapon/crowbar)) - return - - if(stat & NOPOWER) - open(1) //ignore the usual power requirement. - - -/obj/machinery/door/poddoor/open(ignorepower = 0) - if(operating) - return - if(!density) - return - if(!ignorepower && (stat & NOPOWER)) - return - - operating = 1 - flick("opening", src) - icon_state = "open" - SetOpacity(0) - sleep(5) - density = 0 - sleep(5) - air_update_turf(1) - update_freelook_sight() - operating = 0 - - if(auto_close) - spawn(auto_close) - // Checks for being able to close are in close(). - close() - - return 1 - - -/obj/machinery/door/poddoor/close(ignorepower = 0) - if(operating) - return - if(density) - return - if(!ignorepower && (stat & NOPOWER)) - return - - operating = 1 - flick("closing", src) - icon_state = "closed" - SetOpacity(1) - sleep(5) - density = 1 - sleep(5) - air_update_turf(1) - update_freelook_sight() - sleep(5) - crush() - sleep(5) - operating = 0 - - //"BLAST" doors are obviously stronger than regular doors when it comes to BLASTS. /obj/machinery/door/poddoor/ex_act(severity, target) if(target == src) @@ -118,8 +53,18 @@ s.set_up(2, 1, src) s.start() +/obj/machinery/door/poddoor/do_animate(animation) + switch(animation) + if("opening") + flick("opening", src) + if("closing") + flick("closing", src) + /obj/machinery/door/poddoor/update_icon() if(density) icon_state = "closed" else - icon_state = "open" \ No newline at end of file + icon_state = "open" + +/obj/machinery/door/poddoor/try_to_activate_door(mob/user) + return \ No newline at end of file diff --git a/code/game/machinery/doors/unpowered.dm b/code/game/machinery/doors/unpowered.dm index f93ffc94453..1a8126c3ce4 100644 --- a/code/game/machinery/doors/unpowered.dm +++ b/code/game/machinery/doors/unpowered.dm @@ -1,6 +1,4 @@ /obj/machinery/door/unpowered - var/locked = 0 - /obj/machinery/door/unpowered/Bumped(atom/AM) if(src.locked) @@ -10,10 +8,10 @@ /obj/machinery/door/unpowered/attackby(obj/item/I, mob/user, params) - if(src.locked) + if(locked) return - ..() - return + else + return ..() /obj/machinery/door/unpowered/emag_act() return diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 2b9a67ec67c..13a0d69f8e4 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -49,7 +49,7 @@ if(mecha.occupant && src.allowed(mecha.occupant)) open_and_close() else - flick("[src.base_state]deny", src) + do_animate("deny") return if (!( ticker )) return @@ -68,7 +68,7 @@ if(allowed(user)) open_and_close() else - flick("[src.base_state]deny", src) + do_animate("deny") return /obj/machinery/door/window/CanPass(atom/movable/mover, turf/target, height=0) @@ -110,7 +110,7 @@ return 0 if(!src.operating) //in case of emag src.operating = 1 - flick("[src.base_state]opening", src) + do_animate("opening") playsound(src.loc, 'sound/machines/windowdoor.ogg', 100, 1) src.icon_state ="[src.base_state]open" sleep(10) @@ -134,13 +134,11 @@ if(emagged) return 0 src.operating = 1 - flick("[src.base_state]closing", src) + do_animate("closing") playsound(src.loc, 'sound/machines/windowdoor.ogg', 100, 1) src.icon_state = src.base_state src.density = 1 -// if(src.visible) -// SetOpacity(1) //TODO: why is this here? Opaque windoors? ~Carn air_update_turf(1) update_freelook_sight() sleep(10) @@ -148,10 +146,19 @@ src.operating = 0 return 1 -/obj/machinery/door/window/proc/take_damage(damage) - src.health = max(0, src.health - damage) - if (src.health <= 0) - if(!(flags&NODECONSTRUCT)) +/obj/machinery/door/window/take_damage(damage, damage_type = BRUTE, sound_effect = 1) + switch(damage_type) + if(BRUTE) + if(sound_effect) + playsound(loc, 'sound/effects/Glasshit.ogg', 90, 1) + if(BURN) + if(sound_effect) + playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) + else + return + health = max(0, src.health - damage) + if(health <= 0) + if(!(flags & NODECONSTRUCT)) var/debris = list( new /obj/item/weapon/shard(src.loc), new /obj/item/weapon/shard(src.loc), @@ -160,7 +167,7 @@ ) for(var/obj/fragment in debris) transfer_fingerprints_to(fragment) - src.density = 0 + density = 0 qdel(src) return @@ -172,85 +179,38 @@ if(prob(25)) qdel(src) else - take_damage(120) + take_damage(120, BRUTE, 0) if(3) - take_damage(60) + take_damage(60, BRUTE, 0) /obj/machinery/door/window/narsie_act() color = "#7D1919" -/obj/machinery/door/window/bullet_act(obj/item/projectile/Proj) - if(Proj.damage) - if((Proj.damage_type == BRUTE || Proj.damage_type == BURN)) - take_damage(round(Proj.damage / 2)) - ..() +/obj/machinery/door/window/bullet_act(obj/item/projectile/P) + . = ..() + take_damage(round(P.damage / 2), P.damage_type, 0) /obj/machinery/door/window/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > T0C + (reinf ? 1600 : 800)) - take_damage(round(exposed_volume / 200)) + take_damage(round(exposed_volume / 200), BURN, 0) ..() //When an object is thrown at the window -/obj/machinery/door/window/hitby(AM as mob|obj) - +/obj/machinery/door/window/hitby(atom/movable/AM) ..() var/tforce = 0 if(ismob(AM)) tforce = 40 - else - tforce = AM:throwforce - playsound(src.loc, 'sound/effects/Glasshit.ogg', 100, 1) + else if(isobj(AM)) + var/obj/O = AM + tforce = O.throwforce take_damage(tforce) - //..() //Does this really need to be here twice? The parent proc doesn't even do anything yet. - Nodrak - return -/obj/machinery/door/window/mech_melee_attack(obj/mecha/M) - if(M.damtype == "brute") - playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1) - visible_message("[M.name] has hit [src].") - take_damage(M.force) - return - /obj/machinery/door/window/attack_ai(mob/user) return src.attack_hand(user) -/obj/machinery/door/window/proc/attack_generic(mob/user, damage = 0) - if(src.operating) - return - user.changeNext_move(CLICK_CD_MELEE) - playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1) - user.visible_message("[user] smashes against the [src.name]!", \ - "You smash against the [src.name]!") - take_damage(damage) - -/obj/machinery/door/window/attack_alien(mob/living/user) - user.do_attack_animation(src) - if(islarva(user)) - return - attack_generic(user, 25) - -/obj/machinery/door/window/attack_animal(mob/living/user) - if(!isanimal(user)) - return - var/mob/living/simple_animal/M = user - M.do_attack_animation(src) - if(M.melee_damage_upper > 0 && (M.melee_damage_type == BRUTE || M.melee_damage_type == BURN)) - attack_generic(M, M.melee_damage_upper) - -/obj/machinery/door/window/attack_slime(mob/living/simple_animal/slime/user) - user.do_attack_animation(src) - if(!user.is_adult) - return - attack_generic(user, 25) - -/obj/machinery/door/window/attack_paw(mob/user) - return src.attack_hand(user) - -/obj/machinery/door/window/attack_hand(mob/user) - return src.attackby(user, user) - /obj/machinery/door/window/emag_act(mob/user) if(!operating && density && !emagged) operating = 1 @@ -263,32 +223,27 @@ /obj/machinery/door/window/attackby(obj/item/weapon/I, mob/living/user, params) - //If it's in the process of opening/closing, ignore the click - if (src.operating) - return - - if(istype(I, /obj/item/weapon/card/emag)) + if(operating) return add_fingerprint(user) - if(!(flags&NODECONSTRUCT)) if(istype(I, /obj/item/weapon/screwdriver)) - if(src.density || src.operating) + if(density || operating) user << "You need to open the door to access the maintenance panel!" return playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - src.p_open = !( src.p_open ) - user << "You [p_open ? "open":"close"] the maintenance panel of the [src.name]." + panel_open = !panel_open + user << "You [panel_open ? "open":"close"] the maintenance panel of the [src.name]." return if(istype(I, /obj/item/weapon/crowbar)) - if(p_open && !src.density && !src.operating) + if(panel_open && !density && !operating) playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1) user.visible_message("[user] removes the electronics from the [src.name].", \ "You start to remove electronics from the [src.name]...") if(do_after(user,40/I.toolspeed, target = src)) - if(src.p_open && !src.density && !src.operating && src.loc) + if(panel_open && !density && !operating && src.loc) var/obj/structure/windoor_assembly/WA = new /obj/structure/windoor_assembly(src.loc) switch(base_state) if("left") @@ -330,51 +285,31 @@ qdel(src) return + return ..() - - //If windoor is unpowered, crowbar, fireaxe and armblade can force it. - if(istype(I, /obj/item/weapon/crowbar) || istype(I, /obj/item/weapon/twohanded/fireaxe) || istype(I, /obj/item/weapon/melee/arm_blade) ) - if(!hasPower()) - if(src.density) - open(2) - else - close(2) - return - - //If it's a weapon, smash windoor. Unless it's an id card, agent card, ect.. then ignore it (Cards really shouldnt damage a door anyway) - if(src.density && istype(I, /obj/item/weapon) && !istype(I, /obj/item/weapon/card) ) - user.changeNext_move(CLICK_CD_MELEE) - user.do_attack_animation(src) - if( (I.flags&NOBLUDGEON) || !I.force ) - return - var/aforce = I.force - playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1) - visible_message("[user] has hit \the [src] with [I].") - if(I.damtype == BURN || I.damtype == BRUTE) - take_damage(aforce) - return - - if (!src.requiresID()) - //don't care who they are or what they have, act as if they're NOTHING - user = null - - if (src.allowed(user)) - if (src.density) - open() +/obj/machinery/door/window/try_to_crowbar(obj/item/I, mob/user) + if(!hasPower()) + if(density) + open(2) else - close() + close(2) + else + user << "The door's motors resist your efforts to force it!" - else if (src.density) - flick("[src.base_state]deny", src) - - return +/obj/machinery/door/window/do_animate(animation) + switch(animation) + if("opening") + flick("[src.base_state]opening", src) + if("closing") + flick("[src.base_state]closing", src) + if("deny") + flick("[src.base_state]deny", src) /obj/machinery/door/window/attack_hulk(mob/user) ..(user, 1) user.visible_message("[user] smashes through the windoor!", \ "You tear through the windoor!") user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) - playsound(loc, 'sound/effects/Glasshit.ogg', 100, 1) take_damage(health) diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index 6a00dab8c83..5d2e99c1867 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -353,7 +353,6 @@ if(!in_range(src, usr) && src.loc != usr) return created_name = t - return else if(istype(W, /obj/item/weapon/airlock_painter)) // |- Ricotez //INFORMATION ABOUT ADDING A NEW AIRLOCK TO THE PAINT LIST: @@ -508,42 +507,41 @@ new M(get_turf(src)) new M(get_turf(src)) qdel(src) + + else if(istype(W, /obj/item/weapon/wrench)) + if(!anchored ) + var/door_check = 1 + for(var/obj/machinery/door/D in loc) + if(!D.sub_door) + door_check = 0 + break + + if(door_check) + playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1) + user.visible_message("[user] secures the airlock assembly to the floor.", \ + "You start to secure the airlock assembly to the floor...", \ + "You hear wrenching.") + + if(do_after(user, 40/W.toolspeed, target = src)) + if( src.anchored ) + return + user << "You secure the airlock assembly." + src.name = "secured airlock assembly" + src.anchored = 1 + else + user << "There is another door here!" + else - return - - else if(istype(W, /obj/item/weapon/wrench) && !anchored ) - var/door_check = 1 - for(var/obj/machinery/door/D in loc) - if(!D.sub_door) - door_check = 0 - break - - if(door_check) playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1) - user.visible_message("[user] secures the airlock assembly to the floor.", \ - "You start to secure the airlock assembly to the floor...", \ + user.visible_message("[user] unsecures the airlock assembly from the floor.", \ + "You start to unsecure the airlock assembly from the floor...", \ "You hear wrenching.") - if(do_after(user, 40/W.toolspeed, target = src)) - if( src.anchored ) + if(!anchored ) return - user << "You secure the airlock assembly." - src.name = "secured airlock assembly" - src.anchored = 1 - else - user << "There is another door here!" - - else if(istype(W, /obj/item/weapon/wrench) && anchored ) - playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1) - user.visible_message("[user] unsecures the airlock assembly from the floor.", \ - "You start to unsecure the airlock assembly from the floor...", \ - "You hear wrenching.") - if(do_after(user, 40/W.toolspeed, target = src)) - if( !src.anchored ) - return - user << "You unsecure the airlock assembly." - src.name = "airlock assembly" - src.anchored = 0 + user << "You unsecure the airlock assembly." + name = "airlock assembly" + anchored = 0 else if(istype(W, /obj/item/stack/cable_coil) && state == 0 && anchored ) var/obj/item/stack/cable_coil/C = W @@ -677,7 +675,7 @@ src.electronics.loc = door qdel(src) else - ..() + return ..() update_icon() /obj/structure/door_assembly/update_icon() @@ -686,4 +684,4 @@ overlays += get_airlock_overlay("fill_construction", icon) else overlays += get_airlock_overlay("[material]_construction", overlays_file) - overlays += get_airlock_overlay("panel_c[state+1]", overlays_file) + overlays += get_airlock_overlay("panel_c[state+1]", overlays_file) \ No newline at end of file diff --git a/icons/obj/doors/blastdoor.dmi b/icons/obj/doors/blastdoor.dmi index 37c9482da88b300eda0097278458bad42ba18c43..9457690cda365a95f35394da068bc7705453ea77 100644 GIT binary patch delta 2357 zcmYM0dpy(oAIDdi47q*{Idq{GYH~}_H22(^Y!qwOD$&igtX#gzp-f?@cq}0fVfI*8I*+u zt2xylK_?Pnunh@^9I$xmy&wMlm${beMM1e+9Spx!@ry|KxIp1bXReY| zOAg3O6|SlaO6k~lStA~BXM;*JecBAFKf)svedyVP#B1+#T{BoM?fDbr_-0!(6RX_Q z(jg|2kU?&ghe>L6ECh%~rK*^kqG+g#ippR(=5kL5_OgxvzAxY8>ta;5Qftd|!9o=`}Tfe0$4Fv z;8Fc0SuHJf061%6y87ub(7_^%#Onn3t2L!aJ!EPFJ~AAjy?F@?5O4=C9U2rQ0n-j+~MZU>2D zYnSiQcjas@;&($CN`CnA?+I{#v%t!wm04^kwTdXseu7P*mBqd-qQvTzmt_ZYo!QB5 z?DLAB@$Q^qWi3q|k6@Wi3dtH6L(k)eV=MWN>`qJ&F3io(n$tjxT{(yPI2R&7VcmyfBBJ)ilxnR=_pEm+k>D5xb zz)n#aWtU!Ky}ReDtkr1Myam1cAiC0Q?EvXk(%xZq`-r6CG==}(dVxaRasw$4Dq6?w z)`f%7VN>&b-Xy#3LrO#l`toC|Gy$vSF+av+Ghhm}HuMfhQ$jx^Xd7eiY|T?hb+x&0 zwJJ#WQqyX0QFe1qz$s3h6K^^tWsUfW;awl$D)uxne@@`p#AW4|_ew0~ptIJ0;0gYJ zVsYUQYZA{fH3Lka(uA2OYSeZPfOR@$#*W(d_Fld4DIHta@I%Aa^!N9-t>9_qNl699 zIQC^bGOmNXrtv;f^&ud@C9FsHxp)sGcMxaQ-M?v+@2vCcg^C zk1%qK54OU-By#*Q!Zj($2l%WjVI6ZPIEqY;5^$#Gc*006Xk`+Yr67E`nLsG2z}{vs z%I!`-CIZWyKo`lKl`&=5;bYZPA%1e7vl+p0J~PV~cQObSa1v`}f{9T5T_8PDwd3vE z&YgCl<4a#LOePADo^2@JW1i)MQkH$~%gLWgbPrtG>ki3(kC5iKED>ZBNiK)if-Coc z{{}5$6ObCq7@xWK1x-B{5~Kuk2#tIsGM;nswv-?O?PDDoh}KZZ`+XE3RBxC4vHy{E zn-SC0Jj)lgLH70dIg`Cqh7Y#mE$;N~3sBCS1@rPm*3`Xca2b31I~KJT8*lX(L8fk! zv8Lsd0c}Xw0xJnbW_)5`RKAg1Ii4EOHH}utf6E6ix`Dd*hAc)+>_sCT&7mpw_Z<^w zXq|3aezp{Z42@qNFDUAq0PP^VLnZsL!<={Saimx`oW4PBLylH%p$Yc6JX z%yeG$&z{yWML^&NuOxqJ@M^?ah8WsZG?;^p8=L#VNPztrxP}?+yw6sMmjYHA)fQp=60mr0YB3O;sljc#Oszrbjo9hc@rHHdqb& z8T<+p^!Lvzr#A9(WKeUkh7uLvc_7@zRCcO+ebyD&;D?(CKQk#^h#a`?YR~$H5->Sm z^uT$o=l-#HQ>7Me?}pBwS4PD=Ar=Krlv2*c^=uQ5zcD_TBZ~&CXQRn$N}Wn}IkJZV z|9>f+Hq^&`xkGd9Ixo!Rabqld_M86$bqxcp?;A9a)5Q^IH1fOcIqxp|-%Op)Y4hY7WH3DR=5EGyCrR<1QQ6hd>Drq=|-pMOPU~ zfLsPLCGvA>qvo-O?BX7qSAcg*((cf$vgV&WEfC{Ub@`f>Mt=h%hOYo*zo!~ z>f(u-T=bdK{hq(w0t8?FuTYG5X_8{Uohl5&1U#sctHog_nzz72@t#jbF||a@zR$`) z$nI(IKwf|mpg`D@H%zh2J20q|DX05nX0=@O-bbdDU|iX;M0MXzwP6JiYkXLtzz4q( zt=q3pZq1kpvlzd~Jo+ZEVY?bJt?O&yMP_zSSp6|I;0b5G%qt4-UTnA4ovG+ObJeam z>XR1G)jZ?Eq~blE${XHQyN3YWRHE$JDQCg!M7HRgBL{DzV)$TMsj|L+VyV>tucL7X zWVti^GL`_t)^i)Qy`?%$EYs@i9So>Z2|szX@y6VBHyIg3fgutD9bNC z8K8GhZnKCZpEev*Di5eHqAa(If2mm`1L6$QM9mpmmmS!mw~Rt?td2zTQVwl2o;zuj)*aY;kfgN)6bf~l=U;iHpdUYQF delta 2330 zcmYM0d00~08izN~76k$)0#h%T$MT^BZE{Ej%`!V#n3SE9hfK||Ofko>BSUIdo^t5s zbtpHHjcQnCmP2^S%*v!Jv$Di7%S_D)6XBxWd(R(huV;PV?|b+A?0@$9X!_99<^*%A z_d?WS6aWAVeKvV**X@G2rH{}($CX*rx@{!O#zv3B;cz)YSxkHurvmRaW)P}tz+$&= z^#>UJ?P0n@dX57um|uX{;2&eW+~eOan+(Nn56ElIcn-BsEWYUCum;RsxepAW6Qplo zv85YSv)^Y-06;&|$IFA2SU9wMCh6T;Q~c?W6<^2A^5c)#b35&5J2|bFlBTrU zsLOYY5Bj{Zdo?|INYm71kx?};FwpLJsS#`J#OqI&xNp1}y?|d}PRd{Q zs|A|KC;SKETr1`uLcR6ki||=?1Q4D-0mr1>@_9_{*{9D6fa;l7uQCF`2<$@^`4eLk z7>qT2CD+wtODO|Soeh~Dd!7lic|;T*FJomsVnO{32H0jXa#f&p+JMG~I^d(#?xn73f!7gA0l_LIuSDd5pABRwwF=R-@vmCi5sAPF8_7@f+tnlg1Qg1g* zYSUS=0XtcvSyzXsSieEhUb+Xac(BuS@8lT~%o$oQ|IBpYH zvB+ufbZwT>m$!e~t=Ktemu=%%pnW7p&(Z0aMC}@N!bI#3u_Q0EKRZbTd&R~HMC|4m z(`DE6?27X(&F%K_D`SX@p2S`7JKhDY_KyAow*O67e8f?k)+k2|y7(d-EBDw3UaTq; zNLaT+T9@a^rOe-8y6i2uUts{0rEEU!d$SKK_q>*8o%VOtm)Gf!=MoqF9w4)~s3>C? z-uwhGJt)V||8lv#5@ovC?w_`4$J+4v-G}*D!Gfrl>+scV+27^^l&j!;y z;R3KSeX?t@yC{#xZK^ugVUT!ydXEFmR%XGig%mO57$TNJ;Ttv@(WDgRDEvai%aYi+ zl3`;sO%XN4^XU3wQ8EDrB3+&QPQklD@CyibgI0lwuq`9LG^trKO_7mFNa6ay{-yi; z1bjOJgWiFcnqjX~4CM_L0)vm25>_EMpCLHm?J>wZ{S5tFJjABiUdz*|dzLywX4nJG ze4!zg0+<|aMMtD{qE}n@f>y5Iz!kM^gA6%Z6?JepvEvR~{oVOwL7c1yEDR|{$k0yr zKYc@%++kk~vK;AhpeYNbgvZOPlInP+xwai9ypcp|`>8}>iFj~ovTjf0J*MjbcpzV| zMpiQXJgQ{>J&$lP~iN1Y1VG3d^jVrYCF39VEd7A@h~b@aC{M(YEzdIMZWYlS$^7 zk9!mhJ3W8cIc>T4d~xV(+0y?}!R z!bxP%e5-s0xrq-ldAcGab(aexS&}JfS3w8kaXEgp~f*~j2VPf0~hu41#rE0 zB!Qd%5{?FG8w9naNcV5nrQ2r_m*&%=B=_@kZ{y4(7fc=HH6rH6xwNZDWeZ=&&9F-p z8U>QI2vhsYJ}^tYO=mEw5u9TiHvQy4sRZ&g>8Ikni)l6Aa2O}6WdttE{x7_34@2?4 z$wh4FG;>ZTq8|M$7Tx<(a%6%HjnNq}#1Kx!qbcTq<*EEYCQerLe+Kj|`|~)}YI*%K z@eJ~0J$I&dq24f!11*x&(FJ{4)$B1YA86adogMAKRTD#Fz%f#h`>G*R>|B4pzYVbn(vC*0*nO1klwgwGByj zFg|(hOt{O<>rL(+NgK=Etrw7RH=NC7!AIgJRn70mdUE7<>9@!Fy2o=*E)?tl2F)6N zWEdVT!a@1eu%~_1j-PJyScDoCc^L zTf$EHI|J^>%nN=c@3Hk$4Z!s?S57rZ;UUE?S!-8u-OL@>J@S6AU>e}fQ@ExzO!I_E~N2O?pY6J(liA{Rs9n!KwRBSI8qXgr?x>~|OYRjbP$S3wl*4y%( zLTL}R7Bb$wq|z#j!Zgo*`n(3(zWdfTQYf`b_3&=!gYQPM-C!_q)Sox<9_=n5JRnJZ zKa*OYUbm)Yf`;!8=b?Km)h*%Xx<8KuZn-6tnmD_GfLj{8o7X^5`VM~|T2UY64YoeW zbv^xOof1){de)K~42)50WT-1E2~}O=_j{)4X_Sz!2De7&x*H7Ovtg@OnP-sbKgGd9 ABme*a From 950d8e4dfa73eb3195cdf1675e0a34ec680f2ec3 Mon Sep 17 00:00:00 2001 From: RandomMarine Date: Sun, 24 Apr 2016 12:06:18 -0700 Subject: [PATCH 116/265] drones can't squish cockroaches (by accident) --- .../mob/living/simple_animal/friendly/cockroach.dm | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/code/modules/mob/living/simple_animal/friendly/cockroach.dm b/code/modules/mob/living/simple_animal/friendly/cockroach.dm index 30af1ef94da..0a856487efc 100644 --- a/code/modules/mob/living/simple_animal/friendly/cockroach.dm +++ b/code/modules/mob/living/simple_animal/friendly/cockroach.dm @@ -32,12 +32,13 @@ if(ismob(AM)) if(isliving(AM)) var/mob/living/A = AM - if(A.mob_size > MOB_SIZE_TINY) - if(prob(squish_chance)) - A.visible_message("\The [A] squashed \the [name].", "You squashed \the [name].") - death() - else - visible_message("\The [name] avoids getting crushed.") + if(!isdrone(A)) + if(A.mob_size > MOB_SIZE_TINY) + if(prob(squish_chance)) + A.visible_message("\The [A] squashed \the [name].", "You squashed \the [name].") + death() + else + visible_message("\The [name] avoids getting crushed.") else if(isobj(AM)) if(istype(AM,/obj/structure)) From 43e98079f141c3147b91211fd2e0b04103c0ffbb Mon Sep 17 00:00:00 2001 From: phil235 Date: Sun, 24 Apr 2016 21:12:04 +0200 Subject: [PATCH 117/265] Removing some comments I had left in. --- code/_onclick/item_attack.dm | 11 ++++++----- code/game/machinery/doors/door.dm | 2 +- code/game/machinery/machinery.dm | 6 +----- code/game/machinery/newscaster.dm | 4 +--- code/game/objects/items/devices/PDA/PDA.dm | 2 +- code/game/objects/items/weapons/RPD.dm | 2 +- code/game/objects/items/weapons/RSF.dm | 5 +++-- code/game/objects/items/weapons/melee/misc.dm | 2 +- code/game/objects/items/weapons/tanks/watertank.dm | 2 +- code/game/objects/items/weapons/tools.dm | 2 +- code/game/objects/structures/statues.dm | 4 +--- code/game/objects/structures/window.dm | 2 +- code/modules/detectivework/evidence.dm | 2 -- 13 files changed, 19 insertions(+), 27 deletions(-) diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index e392d3ee432..1dfcd96835a 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -8,7 +8,7 @@ return /obj/attackby(obj/item/I, mob/living/user, params) - return I.attack_obj(src, user) //phil235 + return I.attack_obj(src, user) /mob/living/attackby(obj/item/I, mob/user, params) user.changeNext_move(CLICK_CD_MELEE) @@ -20,12 +20,11 @@ if(do_mob(user, src, 80/sharpness)) harvest(user) return 1 - return I.attack(src, user) //phil235 should we return 1 if successful special attack() so we don't call afterattack? - //see the attack() procs if it'd be useful. + return I.attack(src, user) /obj/item/proc/attack(mob/living/M, mob/living/user, def_zone) - if(flags & (NOBLUDGEON|ABSTRACT)) //phil235 check that no abstract item uses attack or attack_obj + if(flags & (NOBLUDGEON|ABSTRACT)) return if(!force) playsound(loc, 'sound/weapons/tap.ogg', get_clamped_volume(), 1, -1) @@ -43,7 +42,7 @@ //the equivalent of the standard version of attack() but for object targets. /obj/item/proc/attack_obj(obj/O, mob/living/user) - if(flags & (NOBLUDGEON|ABSTRACT)) //phil235 + if(flags & (NOBLUDGEON|ABSTRACT)) return user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(O) @@ -68,6 +67,8 @@ var/turf/location = get_turf(src) location.add_blood_floor(src) + + // Proximity_flag is 1 if this afterattack was called on something adjacent, in your square, or on your person. // Click parameters is the params string from byond Click() code, see that documentation. /obj/item/proc/afterattack(atom/target, mob/user, proximity_flag, click_parameters) diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index aeebec18d4d..09e955a44d3 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -23,7 +23,7 @@ var/safe = 1 //whether the door detects things and mobs in its way and reopen or crushes them. var/locked = 0 //whether the door is bolted or not. - var/auto_close //phil235 to be removed, it's preventing a runtime with map. + var/auto_close //TO BE REMOVED, no longer used, it's just preventing a runtime with a map var edit. /obj/machinery/door/New() ..() diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 12e87f98ee9..32111cab817 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -262,10 +262,6 @@ Class Procs: if(sound_effect) playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) -//phil235 - - - /obj/machinery/attack_alien(mob/living/carbon/alien/humanoid/user) user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src) @@ -277,7 +273,7 @@ Class Procs: /obj/machinery/attack_animal(mob/living/simple_animal/M) M.changeNext_move(CLICK_CD_MELEE) M.do_attack_animation(src) - if(M.melee_damage_upper > 0) // phil235 use M.attack_text verb? + if(M.melee_damage_upper > 0) M.visible_message("[M.name] smashes against \the [src.name].",\ "You smash against the [src.name].") take_damage(M.melee_damage_upper, M.melee_damage_type, 1) diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index 4005154672f..462dee8ff9d 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -191,7 +191,7 @@ var/list/obj/machinery/newscaster/allCasters = list() var/allow_comments = 1 luminosity = 0 anchored = 1 - var/hitstaken = 0 //phil235 to be removed, it's used in a map var edit. + var/hitstaken = 0 //TO BE REMOVED, no longer used, the var is present in a map var edit which must be removed. /obj/machinery/newscaster/security_unit name = "security newscaster" @@ -782,8 +782,6 @@ var/list/obj/machinery/newscaster/allCasters = list() else take_damage(5) -//phil235 missing attack_alien, attack_animal, bullet_act, etc... - /obj/machinery/newscaster/proc/AttachPhoto(mob/user) if(photo) if(!photo.sillynewscastervar) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index ebd6e3d05c1..ba14a0d3540 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -10,7 +10,7 @@ var/global/list/obj/item/device/pda/PDAs = list() icon = 'icons/obj/pda.dmi' icon_state = "pda" item_state = "electronic" - flags = NOBLUDGEON //phil235 test it + flags = NOBLUDGEON w_class = 1 slot_flags = SLOT_ID | SLOT_BELT origin_tech = "programming=2" diff --git a/code/game/objects/items/weapons/RPD.dm b/code/game/objects/items/weapons/RPD.dm index f1908a99533..2f0a38ff8c7 100644 --- a/code/game/objects/items/weapons/RPD.dm +++ b/code/game/objects/items/weapons/RPD.dm @@ -125,7 +125,7 @@ var/global/list/RPD_recipes=list( desc = "A device used to rapidly pipe things." icon = 'icons/obj/items.dmi' icon_state = "rpd" - flags = CONDUCT //phil235 SEMIBLUDGEON? + flags = CONDUCT force = 10 throwforce = 10 throw_speed = 1 diff --git a/code/game/objects/items/weapons/RSF.dm b/code/game/objects/items/weapons/RSF.dm index 38ba595e717..0ec9b84479c 100644 --- a/code/game/objects/items/weapons/RSF.dm +++ b/code/game/objects/items/weapons/RSF.dm @@ -61,8 +61,9 @@ RSF return // Change mode -/obj/item/weapon/rsf/afterattack(atom/A, mob/user, proximity) //phil235 shitty proc, rewrite. - if(!proximity) return +/obj/item/weapon/rsf/afterattack(atom/A, mob/user, proximity) + if(!proximity) + return if (!(istype(A, /obj/structure/table) || istype(A, /turf/open/floor))) return diff --git a/code/game/objects/items/weapons/melee/misc.dm b/code/game/objects/items/weapons/melee/misc.dm index b4356035962..475f602428d 100644 --- a/code/game/objects/items/weapons/melee/misc.dm +++ b/code/game/objects/items/weapons/melee/misc.dm @@ -174,7 +174,7 @@ ..() if(ismob(target)) var/mob/M - if(src.loc == M) //target caught the sword //phil235 NO, shit + if(src.loc == M) M.drop_item() consume_everything(target) diff --git a/code/game/objects/items/weapons/tanks/watertank.dm b/code/game/objects/items/weapons/tanks/watertank.dm index 2b29db5f5b3..6cf002db034 100644 --- a/code/game/objects/items/weapons/tanks/watertank.dm +++ b/code/game/objects/items/weapons/tanks/watertank.dm @@ -154,7 +154,7 @@ /obj/item/weapon/reagent_containers/spray/mister/afterattack(obj/target, mob/user, proximity) if(target.loc == loc) //Safety check so you don't fill your mister with mutagen or something and then blast yourself in the face with it - return //phil235 shitty check + return ..() //Janitor tank diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index 49c2c4dd884..022e31bd97e 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -348,7 +348,7 @@ var/turf/location = get_turf(user) location.hotspot_expose(700, 50, 1) - if(isliving(O)) //phil235 need the new bitflag + if(isliving(O)) var/mob/living/L = O L.IgniteMob() diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm index 173d87b92af..495b9ca5693 100644 --- a/code/game/objects/structures/statues.dm +++ b/code/game/objects/structures/statues.dm @@ -88,8 +88,6 @@ user.visible_message("[user] rubs some dust off from the [name]'s surface.", \ "You rub some dust off from the [name]'s surface.") -//attack alien animal phil235 - /obj/structure/statue/CanAtmosPass() return !density @@ -208,7 +206,7 @@ /obj/structure/statue/plasma/bullet_act(obj/item/projectile/Proj) var/burn = FALSE - if(istype(Proj,/obj/item/projectile/beam)) //phil235 test this + if(istype(Proj,/obj/item/projectile/beam)) PlasmaBurn(2500) burn = TRUE else if(istype(Proj,/obj/item/projectile/ion)) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index bf8b3a9476f..162efa790e3 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -374,7 +374,7 @@ //merges adjacent full-tile windows into one /obj/structure/window/update_icon() - if(!qdeleted(src)) //phil235 + if(!qdeleted(src)) if(!fulltile) return diff --git a/code/modules/detectivework/evidence.dm b/code/modules/detectivework/evidence.dm index 790cf6e47c1..1eeebc6d0ab 100644 --- a/code/modules/detectivework/evidence.dm +++ b/code/modules/detectivework/evidence.dm @@ -37,8 +37,6 @@ if(istype(I.loc,/obj/item/weapon/storage)) //in a container. var/obj/item/weapon/storage/U = I.loc U.remove_from_storage(I, src) -// user.client.screen -= I -//phil235 U.contents.Remove(I) else if(user.l_hand == I) //in a hand user.drop_l_hand() else if(user.r_hand == I) //in a hand From a5adc52ab675fd33b58dad4311107ad171049df1 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 24 Apr 2016 20:45:03 -0400 Subject: [PATCH 118/265] Requested changes --- code/game/gamemodes/cult/ritual.dm | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 2ade607d222..f1721d71ce2 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -279,25 +279,22 @@ This file contains the arcane tome files as well as innate cultist emergency com N.health = 60 shields |= N if(!do_after(user, 400, target = get_turf(user))) - if(shields.len) - for(var/V in shields) - var/obj/machinery/shield/S = V - if(S && !qdeleted(S)) - qdel(S) + for(var/V in shields) + var/obj/machinery/shield/S = V + if(S && !qdeleted(S)) + qdel(S) return if(!do_after(user, 50, target = get_turf(user))) - if(shields.len) - for(var/V in shields) - var/obj/machinery/shield/S = V - if(S && !qdeleted(S)) - qdel(S) - return - user.visible_message("[user] creates a strange circle in their own blood.", \ - "You finish drawing the arcane markings of the Geometer.") - if(shields.len) for(var/V in shields) var/obj/machinery/shield/S = V if(S && !qdeleted(S)) qdel(S) + return + user.visible_message("[user] creates a strange circle in their own blood.", \ + "You finish drawing the arcane markings of the Geometer.") + for(var/V in shields) + var/obj/machinery/shield/S = V + if(S && !qdeleted(S)) + qdel(S) new rune_to_scribe(Thenewturfyouwalkedto, chosen_keyword) user << "The [lowertext(initial(rune_to_scribe.cultist_name))] rune [initial(rune_to_scribe.cultist_desc)]" From 30555c3affb42481e29fe54006406ca036a7e20a Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 24 Apr 2016 20:45:33 -0400 Subject: [PATCH 119/265] Requested changes --- code/game/gamemodes/cult/runes.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index f4b5e8f9691..3857be4d9cc 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -215,7 +215,7 @@ structure_check() searches for nearby cultist structures required for the invoca var/list/teleport_runes = list() /obj/effect/rune/teleport cultist_name = "Teleport" - cultist_desc = "warps everything above it to another chosen teleport rune." + cultist_desc = "Warps everything above it to another chosen teleport rune." invocation = "Sas'so c'arta forbici!" icon_state = "2" color = "#551A8B" @@ -494,7 +494,7 @@ var/list/teleport_runes = list() //Rite of Resurrection: Requires two corpses. Revives one and gibs the other. /obj/effect/rune/raise_dead cultist_name = "Raise Dead" - cultist_desc = "Requires two corpses. One on the rune and one adjacent. The one placed upon the rune is brought to life, the other is turned to ash." + cultist_desc = "Requires two corpses. One on the rune and one adjacent to the rune. The one placed upon the rune is brought to life, the other is turned to ash." invocation = null //Depends on the name of the user - see below icon_state = "1" color = rgb(255, 0, 0) From 56ac630e42b0a0ca7dd4fcc04c196ea36010667f Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 24 Apr 2016 20:46:00 -0400 Subject: [PATCH 120/265] Requested changes --- code/game/gamemodes/cult/talisman.dm | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index fed12b18a07..2c9ca90ec53 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -17,9 +17,7 @@ if(!iscultist(user)) user << "There are indecipherable images scrawled on the paper in what looks to be... blood?" return - if(invoke(user)) - user.whisper(invocation) - uses-- + uses-- if(uses <= 0) user.drop_item() qdel(src) @@ -322,7 +320,7 @@ log_game("Construct talisman failed - not a valid target") /obj/item/weapon/restraints/handcuffs/energy/cult //For the talisman of shackling - name = "cult shackle" + name = "cult shackles" desc = "shackles that bind the wrists with sinister magic." trashtype = /obj/item/weapon/restraints/handcuffs/energy/used origin_tech = "materials=2;magnets=5" @@ -331,7 +329,7 @@ desc = "magical remnants" /obj/item/weapon/restraints/handcuffs/energy/cult/used/dropped(mob/user) - user.visible_message("[user]'s [src] shatter in a discharge of dark magic!", \ + user.visible_message("Your [src] shatter in a discharge of dark magic!", \ "[user]'s [src] shatters in a discharge of dark magic!") var/datum/effect_system/spark_spread/S = new S.set_up(4,0,user.loc) From ecce6436d14332fc66bf42905fbfca57a408c56e Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 24 Apr 2016 20:46:27 -0400 Subject: [PATCH 121/265] Requested Changes --- code/game/gamemodes/wizard/soulstone.dm | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm index 35e9d915e5e..f3ced8790a2 100644 --- a/code/game/gamemodes/wizard/soulstone.dm +++ b/code/game/gamemodes/wizard/soulstone.dm @@ -97,15 +97,14 @@ desc = "A wicked machine used by those skilled in magical arts. It is inactive." /obj/structure/constructshell/attackby(obj/item/O, mob/user, params) - if(!iscultist(user) && !iswizard(user)) - user << "An overwhelming feeling of dread comes over you as you pick up the soulstone. It would be wise to be rid of this quickly." - user.Dizzy(120) - if(istype(O, /obj/item/device/soulstone)) var/obj/item/device/soulstone/SS = O + if(!iscultist(user) && !iswizard(user)) + user << "An overwhelming feeling of dread comes over you as you attempt to place the soulstone into the shell. It would be wise to be rid of this quickly." + user.Dizzy(120) + return SS.transfer_soul("CONSTRUCT",src,user) - ////////////////////////////Proc for moving soul in and out off stone////////////////////////////////////// From e32b9700a887520b3475b0046823f81ad3c68dd8 Mon Sep 17 00:00:00 2001 From: Shadowlight213 Date: Sun, 24 Apr 2016 18:01:43 -0700 Subject: [PATCH 122/265] Fixes jetpack implant inconsistency --- code/modules/mob/living/carbon/carbon_movement.dm | 4 ---- code/modules/mob/living/carbon/human/species.dm | 5 +++++ 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/carbon/carbon_movement.dm b/code/modules/mob/living/carbon/carbon_movement.dm index 574e88fd908..1bd1210c2f7 100644 --- a/code/modules/mob/living/carbon/carbon_movement.dm +++ b/code/modules/mob/living/carbon/carbon_movement.dm @@ -3,10 +3,6 @@ if(legcuffed) . += legcuffed.slowdown - var/obj/item/organ/internal/cyberimp/chest/thrusters/J = getorganslot("thrusters") - if(istype(J) && J.on) - . -= 2 - var/const/NO_SLIP_WHEN_WALKING = 1 var/const/SLIDE = 2 diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 638a318f7f0..5ff44ea9d53 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -795,6 +795,11 @@ if(istype(J) && J.allow_thrust(0.01, H)) . -= 2 + else + var/obj/item/organ/internal/cyberimp/chest/thrusters/T = H.getorganslot("thrusters") + if(istype(T) && T.allow_thrust(0.01, H)) + . -= 2 + else var/health_deficiency = (100 - H.health + H.staminaloss) if(health_deficiency >= 40) From ad912f68c1684f33c54622706fbdcae644e5a5fa Mon Sep 17 00:00:00 2001 From: MrPerson Date: Sun, 24 Apr 2016 18:04:43 -0700 Subject: [PATCH 123/265] Fixed some tk and plane related issues --- code/_onclick/telekinesis.dm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm index 0257f18b15b..9562c708a03 100644 --- a/code/_onclick/telekinesis.dm +++ b/code/_onclick/telekinesis.dm @@ -173,6 +173,7 @@ var/const/tk_maxrange = 15 O.anchored = 1 O.density = 0 O.layer = FLY_LAYER + O.plane = PLANE_EFFECTS_UNLIT O.dir = pick(cardinal) O.icon = 'icons/effects/effects.dmi' O.icon_state = "nothing" @@ -183,9 +184,10 @@ var/const/tk_maxrange = 15 /obj/item/tk_grab/update_icon() overlays.Cut() - if(focus && focus.icon && focus.icon_state) - overlays += icon(focus.icon,focus.icon_state) - return + if(focus) + var/image/I = image(focus.icon, focus.icon_state) + I.plane = PLANE_UI_OBJECTS + overlays += I /obj/item/tk_grab/suicide_act(mob/user) user.visible_message("[user] is using \his telekinesis to choke \himself! It looks like \he's trying to commit suicide.") From f3f2962d268cbb1d0b836a566d89248249895da0 Mon Sep 17 00:00:00 2001 From: RandomMarine Date: Sun, 24 Apr 2016 18:26:23 -0700 Subject: [PATCH 124/265] buffs cockroach survivability --- .../living/simple_animal/friendly/cockroach.dm | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/code/modules/mob/living/simple_animal/friendly/cockroach.dm b/code/modules/mob/living/simple_animal/friendly/cockroach.dm index 0a856487efc..e9f1c512b42 100644 --- a/code/modules/mob/living/simple_animal/friendly/cockroach.dm +++ b/code/modules/mob/living/simple_animal/friendly/cockroach.dm @@ -32,13 +32,12 @@ if(ismob(AM)) if(isliving(AM)) var/mob/living/A = AM - if(!isdrone(A)) - if(A.mob_size > MOB_SIZE_TINY) - if(prob(squish_chance)) - A.visible_message("\The [A] squashed \the [name].", "You squashed \the [name].") - death() - else - visible_message("\The [name] avoids getting crushed.") + if(A.mob_size > MOB_SIZE_SMALL) + if(prob(squish_chance)) + A.visible_message("\The [A] squashed \the [name].", "You squashed \the [name].") + death() + else + visible_message("\The [name] avoids getting crushed.") else if(isobj(AM)) if(istype(AM,/obj/structure)) @@ -54,4 +53,4 @@ icon = 'icons/effects/blood.dmi' icon_state = "xfloor1" random_icon_states = list("xfloor1", "xfloor2", "xfloor3", "xfloor4", "xfloor5", "xfloor6", "xfloor7") - layer = 2 \ No newline at end of file + layer = 2 From 581a13975b499cb2e66413ee8117bb835f247dec Mon Sep 17 00:00:00 2001 From: TechnoAlchemist Date: Sun, 24 Apr 2016 21:27:48 -0700 Subject: [PATCH 125/265] makes goliath plates stackable. --- code/game/mecha/working/ripley.dm | 2 +- .../objects/items/stacks/sheets/sheet_types.dm | 16 +++++++++++++++- code/modules/cargo/exports/sheets.dm | 2 +- .../modules/mining/lavaland/necropolis_chests.dm | 2 +- .../living/simple_animal/hostile/mining_mobs.dm | 8 ++++---- 5 files changed, 22 insertions(+), 8 deletions(-) diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm index c4ccf61010f..994455ea8af 100644 --- a/code/game/mecha/working/ripley.dm +++ b/code/game/mecha/working/ripley.dm @@ -25,7 +25,7 @@ /obj/mecha/working/ripley/Destroy() for(var/i=1, i <= hides, i++) - new /obj/item/asteroid/goliath_hide(loc) //If a goliath-plated ripley gets killed, all the plates drop + new /obj/item/stack/sheet/goliath_hide(loc) //If a goliath-plated ripley gets killed, all the plates drop damage_absorption["brute"] = initial(damage_absorption["brute"]) for(var/atom/movable/A in cargo) A.loc = loc diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index d6fc198ceb3..2615df9688d 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -265,4 +265,18 @@ var/global/list/datum/stack_recipe/runed_metal_recipes = list ( \ w_class = 3 throw_speed = 1 throw_range = 3 - origin_tech = "materials=2;bio=2" \ No newline at end of file + origin_tech = "materials=2;bio=2" + + /* + * Plates + */ + +/obj/item/stack/sheet/goliath_hide + name = "goliath hide plates" + desc = "Pieces of a goliath's rocky hide, these might be able to make your suit a bit more durable to attack from the local fauna." + icon = 'icons/obj/mining.dmi' + icon_state = "goliath_hide" + singular_name = "hide plate" + flags = NOBLUDGEON + w_class = 3 + layer = 4 diff --git a/code/modules/cargo/exports/sheets.dm b/code/modules/cargo/exports/sheets.dm index 74855bb54c3..d6484cf1691 100644 --- a/code/modules/cargo/exports/sheets.dm +++ b/code/modules/cargo/exports/sheets.dm @@ -35,7 +35,7 @@ /datum/export/goliath_hide cost = 2500 unit_name = "goliath hide" - export_types = list(/obj/item/asteroid/goliath_hide) + export_types = list(/obj/item/stack/sheet/goliath_hide) // Cat hide. Just in case Runtime is catsploding again. /datum/export/stack/skin/cat diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 87ce12f72d8..455d3a4e2ec 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -373,7 +373,7 @@ /datum/table_recipe/boat name = "goliath hide boat" result = /obj/vehicle/lavaboat - reqs = list(/obj/item/asteroid/goliath_hide = 3) + reqs = list(/obj/item/stack/sheet/goliath_hide = 3) time = 50 category = CAT_MISC diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm index 0d41abe1c86..2e8398c5964 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm @@ -350,7 +350,7 @@ mob_size = MOB_SIZE_LARGE var/pre_attack = 0 var/pre_attack_icon = "Goliath_preattack" - loot = list(/obj/item/asteroid/goliath_hide{layer = 4.1}) + loot = list(/obj/item/stack/sheet/goliath_hide{layer = 4.1}) /mob/living/simple_animal/hostile/asteroid/goliath/Life() ..() @@ -438,7 +438,7 @@ spawn(50) qdel(src) -/obj/item/asteroid/goliath_hide +/obj/item/stack/sheet/goliath_hide name = "goliath hide plates" desc = "Pieces of a goliath's rocky hide, these might be able to make your suit a bit more durable to attack from the local fauna." icon = 'icons/obj/mining.dmi' @@ -447,7 +447,7 @@ w_class = 3 layer = 4 -/obj/item/asteroid/goliath_hide/afterattack(atom/target, mob/user, proximity_flag) +/obj/item/stack/sheet/goliath_hide/afterattack(atom/target, mob/user, proximity_flag) if(proximity_flag) if(istype(target, /obj/item/clothing/suit/space/hardsuit/mining) || istype(target, /obj/item/clothing/head/helmet/space/hardsuit/mining) || istype(target, /obj/item/clothing/suit/hooded/explorer) || istype(target, /obj/item/clothing/head/explorer)) var/obj/item/clothing/C = target @@ -649,7 +649,7 @@ icon_dead = "goliath_dead" throw_message = "does nothing to the tough hide of the" pre_attack_icon = "goliath2" - butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat/slab/goliath = 2, /obj/item/asteroid/goliath_hide = 1, /obj/item/stack/sheet/bone = 2) + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat/slab/goliath = 2, /obj/item/stack/sheet/goliath_hide = 1, /obj/item/stack/sheet/bone = 2) loot = list() stat_attack = 1 robust_searching = 1 From 556f611278e8ff31f565e508a29740a2c08b32fb Mon Sep 17 00:00:00 2001 From: TechnoAlchemist Date: Sun, 24 Apr 2016 22:07:51 -0700 Subject: [PATCH 126/265] makes the path /animalhide --- code/game/mecha/working/ripley.dm | 2 +- code/game/objects/items/stacks/sheets/leather.dm | 14 ++++++++++++++ .../objects/items/stacks/sheets/sheet_types.dm | 12 ------------ code/modules/cargo/exports/sheets.dm | 2 +- code/modules/mining/lavaland/necropolis_chests.dm | 2 +- .../living/simple_animal/hostile/mining_mobs.dm | 8 ++++---- 6 files changed, 21 insertions(+), 19 deletions(-) diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm index 994455ea8af..b0f20c8b4e8 100644 --- a/code/game/mecha/working/ripley.dm +++ b/code/game/mecha/working/ripley.dm @@ -25,7 +25,7 @@ /obj/mecha/working/ripley/Destroy() for(var/i=1, i <= hides, i++) - new /obj/item/stack/sheet/goliath_hide(loc) //If a goliath-plated ripley gets killed, all the plates drop + new /obj/item/stack/sheet/animalhide/goliath_hide(loc) //If a goliath-plated ripley gets killed, all the plates drop damage_absorption["brute"] = initial(damage_absorption["brute"]) for(var/atom/movable/A in cargo) A.loc = loc diff --git a/code/game/objects/items/stacks/sheets/leather.dm b/code/game/objects/items/stacks/sheets/leather.dm index feb0266390d..099ddd5bc78 100644 --- a/code/game/objects/items/stacks/sheets/leather.dm +++ b/code/game/objects/items/stacks/sheets/leather.dm @@ -135,6 +135,20 @@ var/global/list/datum/stack_recipe/xeno_recipes = list ( \ icon_state = "sinew" origin_tech = "bio=4" + /* + * Plates + */ + +/obj/item/stack/sheet/animalhide/goliath_hide + name = "goliath hide plates" + desc = "Pieces of a goliath's rocky hide, these might be able to make your suit a bit more durable to attack from the local fauna." + icon = 'icons/obj/mining.dmi' + icon_state = "goliath_hide" + singular_name = "hide plate" + flags = NOBLUDGEON + w_class = 3 + layer = 4 + //Step one - dehairing. diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 2615df9688d..6c9b9254103 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -267,16 +267,4 @@ var/global/list/datum/stack_recipe/runed_metal_recipes = list ( \ throw_range = 3 origin_tech = "materials=2;bio=2" - /* - * Plates - */ -/obj/item/stack/sheet/goliath_hide - name = "goliath hide plates" - desc = "Pieces of a goliath's rocky hide, these might be able to make your suit a bit more durable to attack from the local fauna." - icon = 'icons/obj/mining.dmi' - icon_state = "goliath_hide" - singular_name = "hide plate" - flags = NOBLUDGEON - w_class = 3 - layer = 4 diff --git a/code/modules/cargo/exports/sheets.dm b/code/modules/cargo/exports/sheets.dm index d6484cf1691..ba81daa0a07 100644 --- a/code/modules/cargo/exports/sheets.dm +++ b/code/modules/cargo/exports/sheets.dm @@ -35,7 +35,7 @@ /datum/export/goliath_hide cost = 2500 unit_name = "goliath hide" - export_types = list(/obj/item/stack/sheet/goliath_hide) + export_types = list(/obj/item/stack/sheet/animalhide/goliath_hide) // Cat hide. Just in case Runtime is catsploding again. /datum/export/stack/skin/cat diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 455d3a4e2ec..a6fabeb90dc 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -373,7 +373,7 @@ /datum/table_recipe/boat name = "goliath hide boat" result = /obj/vehicle/lavaboat - reqs = list(/obj/item/stack/sheet/goliath_hide = 3) + reqs = list(/obj/item/stack/sheet/animalhide/goliath_hide = 3) time = 50 category = CAT_MISC diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm index 2e8398c5964..33c31460b09 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm @@ -350,7 +350,7 @@ mob_size = MOB_SIZE_LARGE var/pre_attack = 0 var/pre_attack_icon = "Goliath_preattack" - loot = list(/obj/item/stack/sheet/goliath_hide{layer = 4.1}) + loot = list(/obj/item/stack/sheet/animalhide/goliath_hide{layer = 4.1}) /mob/living/simple_animal/hostile/asteroid/goliath/Life() ..() @@ -438,7 +438,7 @@ spawn(50) qdel(src) -/obj/item/stack/sheet/goliath_hide +/obj/item/stack/sheet/animalhide/goliath_hide name = "goliath hide plates" desc = "Pieces of a goliath's rocky hide, these might be able to make your suit a bit more durable to attack from the local fauna." icon = 'icons/obj/mining.dmi' @@ -447,7 +447,7 @@ w_class = 3 layer = 4 -/obj/item/stack/sheet/goliath_hide/afterattack(atom/target, mob/user, proximity_flag) +/obj/item/stack/sheet/animalhide/goliath_hide/afterattack(atom/target, mob/user, proximity_flag) if(proximity_flag) if(istype(target, /obj/item/clothing/suit/space/hardsuit/mining) || istype(target, /obj/item/clothing/head/helmet/space/hardsuit/mining) || istype(target, /obj/item/clothing/suit/hooded/explorer) || istype(target, /obj/item/clothing/head/explorer)) var/obj/item/clothing/C = target @@ -649,7 +649,7 @@ icon_dead = "goliath_dead" throw_message = "does nothing to the tough hide of the" pre_attack_icon = "goliath2" - butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat/slab/goliath = 2, /obj/item/stack/sheet/goliath_hide = 1, /obj/item/stack/sheet/bone = 2) + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat/slab/goliath = 2, /obj/item/stack/sheet/animalhide/goliath_hide = 1, /obj/item/stack/sheet/bone = 2) loot = list() stat_attack = 1 robust_searching = 1 From 508522c320604efb77967d8a29a4e632e9332fdb Mon Sep 17 00:00:00 2001 From: Jack Edge Date: Mon, 25 Apr 2016 07:15:32 +0100 Subject: [PATCH 127/265] Minor explosion damage around exploded machine --- code/modules/events/processor_overload.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/modules/events/processor_overload.dm b/code/modules/events/processor_overload.dm index bf8708ac2c6..e200e8f52f4 100644 --- a/code/modules/events/processor_overload.dm +++ b/code/modules/events/processor_overload.dm @@ -33,5 +33,8 @@ // Only a level 1 explosion actually damages the machine // at all P.ex_act(1) + // Damage the surrounding area to indicate that it popped + var/turf/T = get_turf(P) + explosion(T, 0, 0, 2) else P.emp_act(1) From d1359a3e09e95e0a8728b28ab6421fe84b241c21 Mon Sep 17 00:00:00 2001 From: TechnoAlchemist Date: Sun, 24 Apr 2016 23:24:42 -0700 Subject: [PATCH 128/265] What's it gonna be, loyalty to me? Or loyalty to your country? (export datum tweak) --- code/modules/cargo/exports/sheets.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/cargo/exports/sheets.dm b/code/modules/cargo/exports/sheets.dm index ba81daa0a07..921ed474389 100644 --- a/code/modules/cargo/exports/sheets.dm +++ b/code/modules/cargo/exports/sheets.dm @@ -32,7 +32,7 @@ export_types = list(/obj/item/stack/sheet/animalhide/human) // Goliath hide. Expensive. -/datum/export/goliath_hide +/datum/export/stack/skin/goliath_hide cost = 2500 unit_name = "goliath hide" export_types = list(/obj/item/stack/sheet/animalhide/goliath_hide) From 497e1ae3a9b11b1a489fe2fee151876fcd38b31e Mon Sep 17 00:00:00 2001 From: TechnoAlchemist Date: Sun, 24 Apr 2016 23:50:01 -0700 Subject: [PATCH 129/265] fixes plate consumption in upgrades. --- code/modules/mob/living/simple_animal/hostile/mining_mobs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm index 33c31460b09..9fcd4c3a305 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm @@ -455,7 +455,7 @@ if(current_armor.["melee"] < 60) current_armor.["melee"] = min(current_armor.["melee"] + 10, 60) user << "You strengthen [target], improving its resistance against melee attacks." - qdel(src) + use(1) else user << "You can't improve [C] any further!" return From 19a6e140c36399f5c01ffdb1defd6e196f01d959 Mon Sep 17 00:00:00 2001 From: TheWiznard Date: Mon, 25 Apr 2016 01:48:12 -0500 Subject: [PATCH 130/265] fixes newline error moves a comment up --- code/game/gamemodes/malfunction/Malf_Modules.dm | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm index 238b8b9c3d7..7c5f80092ee 100644 --- a/code/game/gamemodes/malfunction/Malf_Modules.dm +++ b/code/game/gamemodes/malfunction/Malf_Modules.dm @@ -9,7 +9,6 @@ var/power_type - /datum/AI_Module/large/ uses = 1 @@ -81,7 +80,6 @@ var/message = "[timer] SECONDS UNTIL DOOMSDAY DEVICE ACTIVATION!" minor_announce(message, "ERROR ER0RR $R0RRO$!R41.%%!!(%$^^__+ @#F0E4", 1) - /obj/machinery/doomsday_device/proc/detonate(z_level = 1) for(var/mob/M in player_list) M << 'sound/machines/Alarm.ogg' @@ -97,6 +95,8 @@ world << "The AI cleansed the station of life with the doomsday device!" ticker.force_ending = 1 +//////END DOOMSDAY DEVICE + /datum/AI_Module/large/fireproof_core module_name = "Core Upgrade" mod_pick_name = "coreup" @@ -106,11 +106,6 @@ power_type = /mob/living/silicon/ai/proc/fireproof_core - - -//////END DOOMSDAY DEVICE - - /mob/living/silicon/ai/proc/fireproof_core() set category = "Malfunction" set name = "Fireproof Core" @@ -254,7 +249,6 @@ src << "Virus package compiled. Select a target mech at any time. You must remain on the station at all times. Loss of signal will result in total system lockout." verbs -= /mob/living/silicon/ai/proc/mech_takeover - /datum/AI_Module/large/break_fire_alarms module_name = "Thermal Sensor Override" mod_pick_name = "burnpigs" @@ -303,8 +297,6 @@ src << "All air alarm safeties on the station have been overriden. Air alarms may now use the Flood environmental mode." src.verbs -= /mob/living/silicon/ai/proc/break_air_alarms - - /datum/AI_Module/small/overload_machine module_name = "Machine Overload" mod_pick_name = "overload" @@ -623,7 +615,6 @@ src.use(usr) return - /datum/AI_Module/large/eavesdrop module_name = "Enhanced Surveillance" mod_pick_name = "eavesdrop" From 8901ee0610a17afb836a93e00e3d8cea3e36296c Mon Sep 17 00:00:00 2001 From: Jack Edge Date: Mon, 25 Apr 2016 09:22:32 +0100 Subject: [PATCH 131/265] Actually compiles --- code/modules/events/processor_overload.dm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/code/modules/events/processor_overload.dm b/code/modules/events/processor_overload.dm index e200e8f52f4..9ad23fd69ae 100644 --- a/code/modules/events/processor_overload.dm +++ b/code/modules/events/processor_overload.dm @@ -30,11 +30,10 @@ if(istype(T, /obj/machinery/telecomms/processor)) var/obj/machinery/telecomms/processor/P = T if(prob(10)) + // Damage the surrounding area to indicate that it popped + explosion(get_turf(P), 0, 0, 2) // Only a level 1 explosion actually damages the machine // at all P.ex_act(1) - // Damage the surrounding area to indicate that it popped - var/turf/T = get_turf(P) - explosion(T, 0, 0, 2) else P.emp_act(1) From c8d257692dec321a480e83899d833a61e30fc44f Mon Sep 17 00:00:00 2001 From: c0 Date: Mon, 25 Apr 2016 11:53:08 +0300 Subject: [PATCH 132/265] Nerfs Potency gene extraction --- .../LavaRuins/lavaland_surface_seed_vault.dmm | 2 +- code/game/machinery/constructable_frame.dm | 2 +- code/modules/hydroponics/gene_modder.dm | 34 +++++++++++++++---- 3 files changed, 30 insertions(+), 8 deletions(-) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm index ba989b11b99..98351f0d8ce 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm @@ -31,7 +31,7 @@ "E" = (/obj/structure/disposalpipe/segment{dir = 1;icon_state = "pipe-c"},/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors) "F" = (/obj/structure/disposalpipe/trunk{dir = 8},/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors) "H" = (/obj/machinery/chem_master/condimaster,/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"G" = (/obj/machinery/plantgenes,/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"G" = (/obj/machinery/plantgenes/seedvault,/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) (1,1,1) = {" aabbaaaaaaaaaaaaaaaa diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index 3550a497b38..4ce58ecf91a 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -803,6 +803,6 @@ obj/item/weapon/circuitboard/rdserver origin_tech = "programming=2;biotech=3" req_components = list( /obj/item/weapon/stock_parts/manipulator = 1, - /obj/item/weapon/stock_parts/micro_laser = 2, + /obj/item/weapon/stock_parts/micro_laser = 1, /obj/item/weapon/stock_parts/console_screen = 1, /obj/item/weapon/stock_parts/scanning_module = 1,) \ No newline at end of file diff --git a/code/modules/hydroponics/gene_modder.dm b/code/modules/hydroponics/gene_modder.dm index d231455280c..1f062578259 100644 --- a/code/modules/hydroponics/gene_modder.dm +++ b/code/modules/hydroponics/gene_modder.dm @@ -15,7 +15,11 @@ var/datum/plant_gene/target var/operation = "" - var/rating = 0 // TODO: add failures, make it useful + var/rating = 0 + var/max_extract_pot = 50 + // The cap on potency gene extraction. + // This number is for T1, each upgraded part adds 5% for a tech level above T1. + // At T4, it reaches 95%. /obj/machinery/plantgenes/New() ..() @@ -24,7 +28,6 @@ component_parts += new /obj/item/weapon/stock_parts/console_screen(src) component_parts += new /obj/item/weapon/stock_parts/scanning_module(src) component_parts += new /obj/item/weapon/stock_parts/micro_laser(src) - component_parts += new /obj/item/weapon/stock_parts/micro_laser(src) component_parts += new /obj/item/weapon/stock_parts/manipulator(src) RefreshParts() @@ -32,6 +35,7 @@ rating = 0 for(var/obj/item/weapon/stock_parts/S in component_parts) rating += S.rating-1 + max_extract_pot = initial(max_extract_pot) + rating*5 /obj/machinery/plantgenes/update_icon() ..() @@ -90,7 +94,7 @@ if(!user) return - var/datum/browser/popup = new(user, "plantdna", "Plant DNA Manipulator", 450, 600) // Set up the popup browser window + var/datum/browser/popup = new(user, "plantdna", "Plant DNA Manipulator", 450, 600) if(!( in_range(src, user) || istype(user, /mob/living/silicon) )) popup.close() return @@ -114,16 +118,18 @@ switch(operation) if("remove") dat += "[target.get_name()] gene from \the [seed]?
      " -// dat += "Failure may damage or destroy the sample!" // No failures yet. TODO: add failures if("extract") dat += "[target.get_name()] gene from \the [seed]?
      " dat += "The sample will be destroyed in process!" + if(istype(target, /datum/plant_gene/core/potency)) + var/datum/plant_gene/core/gene = target + if(gene.value > max_extract_pot) + dat += "

      This device's extraction capabilities are currently limited to [max_extract_pot] potency. " + dat += "Target gene will be degraded to [max_extract_pot] potency on extraction." if("replace") dat += "[target.get_name()] gene with [disk.gene.get_name()]?
      " -// dat += "Failure may damage or destroy the sample!" // No failures yet. TODO: add failures if("insert") dat += "[disk.gene.get_name()] gene into \the [seed]?
      " -// dat += "Failure may damage or destroy the sample!" // No failures yet. TODO: add failures dat += "
      Confirm " dat += "Abort
      " popup.set_content(dat) @@ -274,6 +280,9 @@ if("extract") if(disk && !disk.read_only) disk.gene = G + if(istype(G, /datum/plant_gene/core/potency)) + var/datum/plant_gene/core/gene = G + gene.value = min(gene.value, max_extract_pot) disk.update_name() qdel(seed) seed = null @@ -339,6 +348,19 @@ seed.icon_state = "seed-x" + +// Gene modder for seed vault ship, built with high-end alien (?) parts. +/obj/machinery/plantgenes/seedvault/New() + ..() + component_parts = list() + component_parts += new /obj/item/weapon/circuitboard/plantgenes(src) + component_parts += new /obj/item/weapon/stock_parts/console_screen(src) + component_parts += new /obj/item/weapon/stock_parts/scanning_module/triphasic(src) + component_parts += new /obj/item/weapon/stock_parts/micro_laser/quadultra(src) + component_parts += new /obj/item/weapon/stock_parts/manipulator/femto(src) + RefreshParts() + + /* * Plant DNA disk */ From 322fc535adfa2271996c2dbe2759821df74da9f6 Mon Sep 17 00:00:00 2001 From: Lularian Date: Mon, 25 Apr 2016 05:04:11 -0500 Subject: [PATCH 133/265] sandbags rah rah rah --- .../objects/items/stacks/sheets/mineral.dm | 5 +++-- .../objects/items/weapons/miscellaneous.dm | 6 ------ .../closets/secure/engineering.dm | 1 + code/modules/clothing/suits/miscellaneous.dm | 2 +- code/modules/crafting/recipes.dm | 8 ------- code/modules/mining/mine_items.dm | 20 ++++++++++++++++++ icons/obj/items.dmi | Bin 59624 -> 60353 bytes icons/obj/smooth_structures/sandbags.dmi | Bin 887 -> 878 bytes 8 files changed, 25 insertions(+), 17 deletions(-) diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index e48f7237cbe..f639d3e152f 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -27,6 +27,7 @@ var/global/list/datum/stack_recipe/sandstone_recipes = list ( \ new/datum/stack_recipe("pile of dirt", /obj/machinery/hydroponics/soil, 3, time = 10, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("sandstone door", /obj/structure/mineral_door/sandstone, 10, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("Assistant Statue", /obj/structure/statue/sandstone/assistant, 5, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("Breakdown into sand", /obj/item/weapon/ore/glass, 1, one_per_turf = 0, on_floor = 1), \ /* new/datum/stack_recipe("sandstone wall", ???), \ new/datum/stack_recipe("sandstone floor", ???),\ */ ) @@ -52,13 +53,13 @@ var/global/list/datum/stack_recipe/sandstone_recipes = list ( \ amount = 30 /* - * Sandbags( + * Sandbags */ /obj/item/stack/sheet/mineral/sandbags name = "sandbags" icon = 'icons/obj/items.dmi' - icon_state = "sandbag" + icon_state = "sandbags" singular_name = "sandbag" force = 5 throwforce = 5 diff --git a/code/game/objects/items/weapons/miscellaneous.dm b/code/game/objects/items/weapons/miscellaneous.dm index e46f6b4a3de..58711c23a66 100644 --- a/code/game/objects/items/weapons/miscellaneous.dm +++ b/code/game/objects/items/weapons/miscellaneous.dm @@ -11,9 +11,3 @@ w_class = 2 attack_verb = list("warned", "cautioned", "smashed") -/obj/item/weapon/emptysandbag - name = "empty sandbag" - desc = "A bag to be filled with sand." - icon = 'icons/obj/items.dmi' - icon_state = "sandbag" - w_class = 1 diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm index 094d48be09e..8a1c73ae7ad 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm @@ -69,6 +69,7 @@ new /obj/item/weapon/holosign_creator/engineering(src) new /obj/item/clothing/mask/gas(src) new /obj/item/clothing/glasses/meson/engine(src) + new /obj/item/weapon/storage/box/emptysandbags(src) /obj/structure/closet/secure_closet/atmospherics diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index cd62fb539d3..9a91b40b344 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -480,7 +480,7 @@ icon_state = "winterhood_cargo" /obj/item/clothing/suit/hooded/wintercoat/miner - name = "mining winter coat" + name = "gwinter coat" icon_state = "coatminer" allowed = list(/obj/item/weapon/pickaxe,/obj/item/device/flashlight,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/toy,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/lighter) armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index 33fd8889965..181e45fa65b 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -172,14 +172,6 @@ time = 10 category = CAT_WEAPON -/datum/table_recipe/sandbags - name = "Sandbags" - result = /obj/item/stack/sheet/mineral/sandbags - reqs = list(/obj/item/weapon/ore/glass = 5, - /obj/item/weapon/emptysandbag = 1) - time = 10 - category = CAT_WEAPON - /datum/table_recipe/meteorshot name = "Meteorshot Shell" result = /obj/item/ammo_casing/shotgun/meteorshot diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index 6d1e49b6957..1583c48ae60 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -36,6 +36,8 @@ /obj/structure/closet/secure_closet/miner/New() ..() + new /obj/item/stack/sheet/mineral/sandbags(src, 5) + new /obj/item/weapon/storage/box/emptysandbags(src) new /obj/item/device/radio/headset/headset_cargo(src) new /obj/item/device/t_scanner/adv_mining_scanner/lesser(src) new /obj/item/weapon/storage/bag/ore(src) @@ -46,6 +48,7 @@ new /obj/item/weapon/survivalcapsule(src) + /**********************Shuttle Computer**************************/ /obj/machinery/computer/shuttle/mining @@ -428,3 +431,20 @@ anchored = 1 layer = MOB_LAYER - 0.2 density = 0 + +/obj/item/weapon/emptysandbag + name = "empty sandbag" + desc = "A bag to be filled with sand." + icon = 'icons/obj/items.dmi' + icon_state = "sandbag" + w_class = 1 + +/obj/item/weapon/emptysandbag/attackby(obj/item/W, mob/user, params) + if(istype(W,/obj/item/weapon/ore/glass || /obj/item/weapon/ore/glass/basalt)) + user << "You fill the sandbag." + var/obj/item/stack/sheet/mineral/sandbags/I = new /obj/item/stack/sheet/mineral/sandbags + user.unEquip(src) + user.put_in_hands(I) + qdel(W) + qdel(src) + return diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index 6f50b46333ff05aa094fe80c3a9e57e5d9f19cd5..bec65f208591139414d47397bef025cb99910c6a 100644 GIT binary patch delta 22260 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 nIl;*0zSdpv!M26(j8^pKURwjuumM*2+} delta 21526 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 diff --git a/icons/obj/smooth_structures/sandbags.dmi b/icons/obj/smooth_structures/sandbags.dmi index 2bb3723044e217997503d61013590ac10b9519e2..2e8c2e335284c276a22c4a3f86c2c867f3766af3 100644 GIT binary patch delta 660 zcmV;F0&D&E2JQxsBp44+OjJd{z`&b(OVp}#!<%HKhgI#A{%nyy#eY~yL_t(&f$f@M zZo?o9g_|3Ubr)zj0rCl&=Kg0IB-PsB=V37FDh*5hV}-8-UhGHH)5#u_U$4Fc=K&0J zpuRx==D^d{)7q0aT`0`GfyZ5TZgTlmD5nKZL<^g;r-eS0z+8tDImc!boKpjH9mWK) zZC_?OtARcTdH|$$V1LpP1KxM;677qFi^=C!xH z&%*;hndQ~M*Z~*N1zBFJ!`MFQhTG~fuixc;wTgKyP`}Gc;J#7|=+ii#0-k^0%?|>g z;aTqvgy&yNy|f-PAkcEmcmZ(e&tbtw46V%&WnvTx8Q7Ngn^ z?kjZK*ddp&zhq4#^eQ2F}93><#Y4jg{)0dX9DPzfA<@CW!ZKPZD5?VFVE z4{Y^=()jo!wE014yjEvwou((D$q!27W1`IuO5;<#Yx0BA_|$iU!4IptClSf(7~Evqlq7m{Ud!74hMS-em?sK zoEtEVf!YH7ivtg5PjgG&aH24_25xuRxxwwPLOCsPAez{eJx%nf1nzY>kaKJ{!8tW> zufv!iw(ZkM-)f-W13dsze?2hihygD|M;(vrFzyoZT`rj6UWZVa^j!q>ecmN<>_%6p>^%@!r z@SDZQvnTMc!&2Wc&`{qnP+#(&1e|?+eS`7(x2y%GvL%(XO(CBlU(j`F2ELmvljoCwRY%<9 z1_Pd)cR@R_`@tKq`#~kJ`@vt} z!~CEOs Date: Mon, 25 Apr 2016 05:09:50 -0500 Subject: [PATCH 134/265] oops --- code/modules/clothing/suits/miscellaneous.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 9a91b40b344..6fe0f740b22 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -480,11 +480,11 @@ icon_state = "winterhood_cargo" /obj/item/clothing/suit/hooded/wintercoat/miner - name = "gwinter coat" + name = "mining winter coat" icon_state = "coatminer" allowed = list(/obj/item/weapon/pickaxe,/obj/item/device/flashlight,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/toy,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/lighter) armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) hoodtype = /obj/item/clothing/head/winterhood/miner /obj/item/clothing/head/winterhood/miner - icon_state = "winterhood_miner" \ No newline at end of file + icon_state = "winterhood_miner" From 53a5f660717fe46d2d7024367598bbfb6e9b9226 Mon Sep 17 00:00:00 2001 From: Robustin Date: Mon, 25 Apr 2016 08:19:08 -0400 Subject: [PATCH 135/265] We done here --- code/game/gamemodes/cult/talisman.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 2c9ca90ec53..53416efe084 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -17,7 +17,8 @@ if(!iscultist(user)) user << "There are indecipherable images scrawled on the paper in what looks to be... blood?" return - uses-- + if(invoke(user)) + uses-- if(uses <= 0) user.drop_item() qdel(src) @@ -146,7 +147,7 @@ /obj/item/weapon/paper/talisman/summon_tome cultist_name = "Talisman of Tome Summoning" cultist_desc = "A one-use talisman that will call an untranslated tome from the archives of the Geometer." - color = "#1d0e0e" // red-black + color = "#512727" // red-black invocation = "N'ath reth sh'yro eth d'raggathnor!" health_cost = 1 From aa15efb6f89c49666e17c06e7350c68b3aaa39a6 Mon Sep 17 00:00:00 2001 From: Robustin Date: Mon, 25 Apr 2016 10:19:17 -0400 Subject: [PATCH 136/265] Desc and code improvements --- code/game/gamemodes/cult/runes.dm | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 3857be4d9cc..b0d92bcb4b1 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -167,7 +167,7 @@ structure_check() searches for nearby cultist structures required for the invoca //Rite of Binding: Turns a nearby rune and a paper on top of the rune to a talisman, if both are valid. /obj/effect/rune/imbue cultist_name = "Create Talisman" - cultist_desc = "Transforms papers and valid runes into talismans." + cultist_desc = "Transforms paper into powerful magic talismans." invocation = null //no talisman made, no invocation. icon_state = "3" color = rgb(0, 0, 255) @@ -604,18 +604,19 @@ var/list/teleport_runes = list() emp_strength++ visible_message("[src] glows blue for a moment before vanishing.") for(var/mob/living/carbon/C in range(1,src)) - if (emp_strength < 3) - C << "You feel a minute vibration pass through you..." - playsound(E, 'sound/items/Welder2.ogg', 25, 1) - if (emp_strength > 2 && emp_strength < 7) - C << "Your hair stands on end as a shockwave eminates from the rune!" - playsound(E, 'sound/magic/Disable_Tech.ogg', 50, 1) - if (emp_strength > 6) - C << "You chant in unison and a colossal burst of energy knocks you backward!" - C.Weaken(2) - playsound(E, 'sound/magic/Disable_Tech.ogg', 100, 1) + switch(emp_strength) + if(1 to 2) + C << "You feel a minute vibration pass through you..." + playsound(E, 'sound/items/Welder2.ogg', 25, 1) + if(3 to 6) + C << "Your hair stands on end as a shockwave eminates from the rune!" + playsound(E, 'sound/magic/Disable_Tech.ogg', 50, 1) + if(7 to INFINITY) + C << "You chant in unison and a colossal burst of energy knocks you backward!" + playsound(E, 'sound/magic/Disable_Tech.ogg', 100, 1) + C.Weaken(2) qdel(src) //delete before pulsing because it's a delay reee - empulse(E, 9*emp_strength, 12*emp_strength) // Scales now, from a single room to around half the station depending on # of chanters + empulse(E, 9*emp_strength, 12*emp_strength) // Scales now, from a single room to most of the station depending on # of chanters //Rite of Astral Communion: Separates one's spirit from their body. They will take damage while it is active. /obj/effect/rune/astral From 45de806acf303b8fd7e5bc807e2c12f84b5efb33 Mon Sep 17 00:00:00 2001 From: Robustin Date: Mon, 25 Apr 2016 10:23:24 -0400 Subject: [PATCH 137/265] Joan correction --- code/game/gamemodes/wizard/soulstone.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm index f3ced8790a2..9c5f1970e06 100644 --- a/code/game/gamemodes/wizard/soulstone.dm +++ b/code/game/gamemodes/wizard/soulstone.dm @@ -99,7 +99,7 @@ /obj/structure/constructshell/attackby(obj/item/O, mob/user, params) if(istype(O, /obj/item/device/soulstone)) var/obj/item/device/soulstone/SS = O - if(!iscultist(user) && !iswizard(user)) + if(!iscultist(user) && !iswizard(user) && !SS.usability) user << "An overwhelming feeling of dread comes over you as you attempt to place the soulstone into the shell. It would be wise to be rid of this quickly." user.Dizzy(120) return From 66d0f2378fb14021875b51efefbb4065a004670f Mon Sep 17 00:00:00 2001 From: Robustin Date: Mon, 25 Apr 2016 10:27:57 -0400 Subject: [PATCH 138/265] >Copying code from Github comments --- code/game/gamemodes/cult/runes.dm | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index b0d92bcb4b1..2deaca1bc49 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -604,17 +604,17 @@ var/list/teleport_runes = list() emp_strength++ visible_message("[src] glows blue for a moment before vanishing.") for(var/mob/living/carbon/C in range(1,src)) - switch(emp_strength) - if(1 to 2) - C << "You feel a minute vibration pass through you..." - playsound(E, 'sound/items/Welder2.ogg', 25, 1) - if(3 to 6) - C << "Your hair stands on end as a shockwave eminates from the rune!" - playsound(E, 'sound/magic/Disable_Tech.ogg', 50, 1) - if(7 to INFINITY) - C << "You chant in unison and a colossal burst of energy knocks you backward!" - playsound(E, 'sound/magic/Disable_Tech.ogg', 100, 1) - C.Weaken(2) + switch(emp_strength) + if(1 to 2) + C << "You feel a minute vibration pass through you..." + playsound(E, 'sound/items/Welder2.ogg', 25, 1) + if(3 to 6) + C << "Your hair stands on end as a shockwave eminates from the rune!" + playsound(E, 'sound/magic/Disable_Tech.ogg', 50, 1) + if(7 to INFINITY) + C << "You chant in unison and a colossal burst of energy knocks you backward!" + playsound(E, 'sound/magic/Disable_Tech.ogg', 100, 1) + C.Weaken(2) qdel(src) //delete before pulsing because it's a delay reee empulse(E, 9*emp_strength, 12*emp_strength) // Scales now, from a single room to most of the station depending on # of chanters From d90361927a252f6f9ebe790e42253ca1ab13ffa1 Mon Sep 17 00:00:00 2001 From: Robustin Date: Mon, 25 Apr 2016 11:14:52 -0400 Subject: [PATCH 139/265] OK LEGIT FINAL COMMIT FOR SURE --- code/game/gamemodes/cult/runes.dm | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 2deaca1bc49..da4d25943c1 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -605,16 +605,16 @@ var/list/teleport_runes = list() visible_message("[src] glows blue for a moment before vanishing.") for(var/mob/living/carbon/C in range(1,src)) switch(emp_strength) - if(1 to 2) - C << "You feel a minute vibration pass through you..." - playsound(E, 'sound/items/Welder2.ogg', 25, 1) - if(3 to 6) - C << "Your hair stands on end as a shockwave eminates from the rune!" - playsound(E, 'sound/magic/Disable_Tech.ogg', 50, 1) - if(7 to INFINITY) - C << "You chant in unison and a colossal burst of energy knocks you backward!" - playsound(E, 'sound/magic/Disable_Tech.ogg', 100, 1) - C.Weaken(2) + if(1 to 2) + C << "You feel a minute vibration pass through you..." + playsound(E, 'sound/items/Welder2.ogg', 25, 1) + if(3 to 6) + C << "Your hair stands on end as a shockwave eminates from the rune!" + playsound(E, 'sound/magic/Disable_Tech.ogg', 50, 1) + if(7 to INFINITY) + C << "You chant in unison and a colossal burst of energy knocks you backward!" + playsound(E, 'sound/magic/Disable_Tech.ogg', 100, 1) + C.Weaken(2) qdel(src) //delete before pulsing because it's a delay reee empulse(E, 9*emp_strength, 12*emp_strength) // Scales now, from a single room to most of the station depending on # of chanters From c2a3ae9424ca0e0b9cc3e5260a861e8454af4d1a Mon Sep 17 00:00:00 2001 From: duncathan salt Date: Mon, 25 Apr 2016 09:24:40 -0600 Subject: [PATCH 140/265] adds a new argument to ChangeTurf() which allows us to skip calling AfterChange() --- code/game/turfs/turf.dm | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 7ab1efb6c7b..2efe567a48c 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -129,7 +129,7 @@ qdel(L) //Creates a new turf -/turf/proc/ChangeTurf(path) +/turf/proc/ChangeTurf(path, defer_change = FALSE) if(!path) return if(path == type) @@ -139,7 +139,8 @@ SSair.remove_from_active(src) var/turf/W = new path(src) - W.AfterChange() + if(!defer_change) + W.AfterChange() W.blueprint_data = old_blueprint_data return W @@ -153,10 +154,11 @@ queue_smooth_neighbors(src) -/turf/open/AfterChange() +/turf/open/AfterChange(ignore_air) ..() RemoveLattice() - Assimilate_Air() + if(!ignore_air) + Assimilate_Air() //////Assimilate Air////// /turf/open/proc/Assimilate_Air() From 27bc533def16ae67386f108100cc434dcde22757 Mon Sep 17 00:00:00 2001 From: duncathan salt Date: Mon, 25 Apr 2016 09:43:10 -0600 Subject: [PATCH 141/265] fixes air bugs with the maploader changeturf, hopefully --- code/modules/awaymissions/maploader/reader.dm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/code/modules/awaymissions/maploader/reader.dm b/code/modules/awaymissions/maploader/reader.dm index e716f3e8fc0..70cf058917d 100644 --- a/code/modules/awaymissions/maploader/reader.dm +++ b/code/modules/awaymissions/maploader/reader.dm @@ -134,6 +134,10 @@ var/global/dmm_suite/preloader/_preloader = new if(bounds[1] == 1.#INF) // Shouldn't need to check every item return null else + for(var/t in block(locate(bounds[MAP_MINX], bounds[MAP_MINY], bounds[MAP_MINZ]), locate(bounds[MAP_MAXX], bounds[MAP_MAXY], bounds[MAP_MAXZ]))) + var/turf/T = t + //we do this after we load everything in. if we don't; we'll have weird atmos bugs regarding atmos adjacent turfs + T.AfterChange(TRUE) return bounds /** @@ -267,7 +271,7 @@ var/global/dmm_suite/preloader/_preloader = new var/turf/T = locate(x,y,z) if(T) if(ispath(path, /turf)) - T.ChangeTurf(path) + T.ChangeTurf(path, defer_change = TRUE) instance = T else instance = new path (T)//first preloader pass @@ -394,4 +398,4 @@ var/global/dmm_suite/preloader/_preloader = new name = "Area Passthrough" /turf/template_noop - name = "Turf Passthrough" \ No newline at end of file + name = "Turf Passthrough" From 434c5f45be1ba3952739c4f57b64fae50fb32fe2 Mon Sep 17 00:00:00 2001 From: duncathan salt Date: Mon, 25 Apr 2016 09:45:11 -0600 Subject: [PATCH 142/265] small optimization --- code/__HELPERS/lists.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/__HELPERS/lists.dm b/code/__HELPERS/lists.dm index cb4e8c8163b..b6eb7864381 100644 --- a/code/__HELPERS/lists.dm +++ b/code/__HELPERS/lists.dm @@ -351,6 +351,6 @@ if(!islist(l)) return l . = l.Copy() - for(var/i = 1 to length(.)) + for(var/i = 1 to l.len) if(islist(.[i])) .[i] = .(.[i]) From 4686f80b39c3cdd0f8df7191b81736003d6d1235 Mon Sep 17 00:00:00 2001 From: duncathan salt Date: Mon, 25 Apr 2016 10:20:27 -0600 Subject: [PATCH 143/265] fixes horrible runtimes --- code/modules/awaymissions/maploader/reader.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/awaymissions/maploader/reader.dm b/code/modules/awaymissions/maploader/reader.dm index 70cf058917d..6aceae504df 100644 --- a/code/modules/awaymissions/maploader/reader.dm +++ b/code/modules/awaymissions/maploader/reader.dm @@ -271,7 +271,7 @@ var/global/dmm_suite/preloader/_preloader = new var/turf/T = locate(x,y,z) if(T) if(ispath(path, /turf)) - T.ChangeTurf(path, defer_change = TRUE) + T.ChangeTurf(path, TRUE) instance = T else instance = new path (T)//first preloader pass From b23d676995b752add20a86ad7db260f3b0695691 Mon Sep 17 00:00:00 2001 From: Shadowlight213 Date: Mon, 25 Apr 2016 10:54:45 -0700 Subject: [PATCH 144/265] Fixes sloth ruin atmos runtime. --- code/controllers/subsystem/air.dm | 2 ++ code/game/turfs/open.dm | 3 +-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/code/controllers/subsystem/air.dm b/code/controllers/subsystem/air.dm index 0b4794e698c..0ba721fa0df 100644 --- a/code/controllers/subsystem/air.dm +++ b/code/controllers/subsystem/air.dm @@ -270,6 +270,8 @@ var/datum/subsystem/air/SSair for(var/thing in turfs_to_init) var/turf/T = thing active_turfs -= T + if (T.blocks_air) + return T.Initalize_Atmos(times_fired) diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm index d5aca9fad38..1094c43a496 100644 --- a/code/game/turfs/open.dm +++ b/code/game/turfs/open.dm @@ -7,8 +7,7 @@ /turf/open/Initalize_Atmos(times_fired) excited = 0 update_visuals() - if (blocks_air) - return + current_cycle = times_fired //cache some vars From f44688ed87fec340bb47eab5d2968d7c30d5abb8 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Mon, 25 Apr 2016 13:30:16 -0500 Subject: [PATCH 145/265] Minigun Fixes --- .../guns/projectile/rechargable_magazine.dm | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/code/modules/projectiles/guns/projectile/rechargable_magazine.dm b/code/modules/projectiles/guns/projectile/rechargable_magazine.dm index fe800092af6..1e4221ce984 100644 --- a/code/modules/projectiles/guns/projectile/rechargable_magazine.dm +++ b/code/modules/projectiles/guns/projectile/rechargable_magazine.dm @@ -146,7 +146,7 @@ icon_state = "minigun_spin" item_state = "minigun" origin_tech = null - flags = NODROP | CONDUCT | HANDSLOW + flags = CONDUCT | HANDSLOW slowdown = 1 slot_flags = null w_class = 5 @@ -162,6 +162,16 @@ /obj/item/weapon/gun/projectile/minigun/attack_self(mob/living/user) return +/obj/item/weapon/gun/projectile/minigun/dropped(mob/user) + if(ammo_pack) + ammo_pack.attach_gun(user) + else + qdel(src) + +/obj/item/weapon/gun/projectile/minigun/afterattack(atom/target, mob/living/user, flag, params) + if(!ammo_pack || ammo_pack.loc != user) + user << "You need the backpack power source to fire the gun!" + /obj/item/weapon/gun/projectile/minigun/New() if(!ammo_pack) if(istype(loc,/obj/item/weapon/minigunpack)) //We should spawn inside a ammo pack so let's use that one. From 1743138d079fbfd5934e4109c740e80dd34f7632 Mon Sep 17 00:00:00 2001 From: Shadowlight213 Date: Mon, 25 Apr 2016 11:32:21 -0700 Subject: [PATCH 146/265] Fixes SSU dropping contents on opening --- code/game/machinery/machinery.dm | 5 +++-- code/game/machinery/suit_storage_unit.dm | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 1c32cd0aeee..c5b5df6e648 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -157,10 +157,11 @@ Class Procs: PoolOrNew(/obj/effect/overlay/temp/emp, loc) ..() -/obj/machinery/proc/open_machine() +/obj/machinery/proc/open_machine(var/drop = 1) state_open = 1 density = 0 - dropContents() + if(drop) + dropContents() update_icon() updateUsrDialog() diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index 85b03b73365..8ce32efcaaf 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -332,7 +332,7 @@ if(state_open) close_machine() else - open_machine() + open_machine(0) if(occupant) dump_contents() // Dump out contents if someone is in there. . = TRUE From e8cc449e4185509af77c1a2699084de79f4f1a52 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Mon, 25 Apr 2016 13:39:38 -0500 Subject: [PATCH 147/265] Fixes gun duping --- .../projectiles/guns/projectile/rechargable_magazine.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/projectiles/guns/projectile/rechargable_magazine.dm b/code/modules/projectiles/guns/projectile/rechargable_magazine.dm index 1e4221ce984..dc7a6b82994 100644 --- a/code/modules/projectiles/guns/projectile/rechargable_magazine.dm +++ b/code/modules/projectiles/guns/projectile/rechargable_magazine.dm @@ -95,8 +95,7 @@ /obj/item/weapon/minigunpack/dropped(mob/user) if(armed) - attach_gun(user) - ..() + user.unEquip(gun,1) /obj/item/weapon/minigunpack/MouseDrop(atom/over_object) if(armed) @@ -171,6 +170,7 @@ /obj/item/weapon/gun/projectile/minigun/afterattack(atom/target, mob/living/user, flag, params) if(!ammo_pack || ammo_pack.loc != user) user << "You need the backpack power source to fire the gun!" + ..() /obj/item/weapon/gun/projectile/minigun/New() if(!ammo_pack) From 025b432e8eec9dc4ff3337616ea579d09d28ce8c Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Mon, 25 Apr 2016 13:48:33 -0500 Subject: [PATCH 148/265] Lockdown Fix --- code/game/gamemodes/malfunction/Malf_Modules.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm index 238b8b9c3d7..32421f01efd 100644 --- a/code/game/gamemodes/malfunction/Malf_Modules.dm +++ b/code/game/gamemodes/malfunction/Malf_Modules.dm @@ -161,7 +161,7 @@ var/obj/machinery/door/airlock/AL for(var/obj/machinery/door/D in airlocks) - if(D.z != ZLEVEL_STATION && D.z != ZLEVEL_MINING) + if(D.z != ZLEVEL_STATION) continue spawn() if(istype(D, /obj/machinery/door/airlock)) @@ -191,6 +191,8 @@ var/obj/machinery/door/airlock/AL for(var/obj/machinery/door/D in airlocks) + if(D.z != ZLEVEL_STATION) + continue spawn() if(istype(D, /obj/machinery/door/airlock)) AL = D From 09a2d7bab05d09e245dd38730cbc0cd8ff8c0024 Mon Sep 17 00:00:00 2001 From: Robustin Date: Mon, 25 Apr 2016 15:36:18 -0400 Subject: [PATCH 149/265] Avoid mindbreaker overdose --- code/game/gamemodes/cult/talisman.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 53416efe084..63766351ddd 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -298,7 +298,7 @@ user.visible_message("You disturb [target] with visons of the end!") if(iscarbon(target)) var/mob/living/carbon/H = target - H.reagents.add_reagent("mindbreaker", 30) + H.reagents.add_reagent("mindbreaker", 25) qdel(src) //Talisman of Fabrication: Creates a construct shell out of 25 metal sheets. From 2007a8241d1a52e07bcc1d56ba5f1ee5252a26bf Mon Sep 17 00:00:00 2001 From: TheWiznard Date: Mon, 25 Apr 2016 15:21:52 -0500 Subject: [PATCH 150/265] removes comment --- code/game/gamemodes/malfunction/Malf_Modules.dm | 4 ---- 1 file changed, 4 deletions(-) diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm index 7c5f80092ee..bfff240e195 100644 --- a/code/game/gamemodes/malfunction/Malf_Modules.dm +++ b/code/game/gamemodes/malfunction/Malf_Modules.dm @@ -15,8 +15,6 @@ /datum/AI_Module/small/ uses = 5 -//////DOOMSDAY DEVICE - /datum/AI_Module/large/nuke_station module_name = "Doomsday Device" mod_pick_name = "nukestation" @@ -95,8 +93,6 @@ world << "The AI cleansed the station of life with the doomsday device!" ticker.force_ending = 1 -//////END DOOMSDAY DEVICE - /datum/AI_Module/large/fireproof_core module_name = "Core Upgrade" mod_pick_name = "coreup" From bb1f60e76901458a21279bc327c823cf6d92bb39 Mon Sep 17 00:00:00 2001 From: phil235 Date: Mon, 25 Apr 2016 22:29:17 +0200 Subject: [PATCH 151/265] Fixes typos and errors I made. Fixes unscrewing a broken computer only dropping one glass shard instead of two. Fixes AI holopad, recharger, keycard authentication device, reagent_dispensers reagentgrinder, and APC not being attackable. Fixes APC cover knockdown being random, it now uses the take_damage() proc, which also allows animals and xenos to knock down the cover of a broken apc. --- code/game/machinery/PDApainter.dm | 4 +- code/game/machinery/announcement_system.dm | 3 +- code/game/machinery/camera/camera.dm | 4 -- code/game/machinery/computer/computer.dm | 3 +- code/game/machinery/hologram.dm | 4 +- code/game/machinery/newscaster.dm | 20 +++---- code/game/machinery/recharger.dm | 17 +++--- code/game/machinery/shieldgen.dm | 2 - code/game/objects/effects/aliens.dm | 2 +- .../game/objects/items/stacks/sheets/glass.dm | 2 +- .../kitchen machinery/processor.dm | 1 + code/modules/hydroponics/biogenerator.dm | 8 ++- code/modules/hydroponics/seed_extractor.dm | 25 ++++---- code/modules/power/apc.dm | 57 ++++++++++++------- .../chemistry/machinery/reagentgrinder.dm | 26 +++++---- code/modules/reagents/reagent_dispenser.dm | 5 +- code/modules/recycling/disposal-unit.dm | 2 +- .../security levels/keycard authentication.dm | 3 - 18 files changed, 102 insertions(+), 86 deletions(-) diff --git a/code/game/machinery/PDApainter.dm b/code/game/machinery/PDApainter.dm index 4ff95775e70..827ad18619e 100644 --- a/code/game/machinery/PDApainter.dm +++ b/code/game/machinery/PDApainter.dm @@ -101,7 +101,7 @@ update_icon() /obj/machinery/pdapainter/attack_hand(mob/user) - if(..()) + if(!..()) add_fingerprint(user) if(storedpda) @@ -118,7 +118,7 @@ ejectpda() else - user << "The [src] is empty." + user << "\The [src] is empty." /obj/machinery/pdapainter/verb/ejectpda() diff --git a/code/game/machinery/announcement_system.dm b/code/game/machinery/announcement_system.dm index 29af1ab1e18..393f2f4f600 100644 --- a/code/game/machinery/announcement_system.dm +++ b/code/game/machinery/announcement_system.dm @@ -75,8 +75,7 @@ var/list/announcement_systems = list() if(istype(P, /obj/item/weapon/screwdriver)) playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) panel_open = !panel_open - if(!panel_open) - user << "You [panel_open ? "open" : "close"] the maintenance hatch of [src]." + user << "You [panel_open ? "open" : "close"] the maintenance hatch of [src]." update_icon() else if(default_deconstruction_crowbar(P)) return diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 648339bcbf7..724311e6a54 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -238,10 +238,6 @@ cable.plugin(src, user) return - else if(istype(W, /obj/item/device/laser_pointer)) - var/obj/item/device/laser_pointer/L = W - L.laser_act(src, user) - return return ..() /obj/machinery/camera/take_damage(damage, damage_type = BRUTE, sound_effect = 1) diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm index a6f8eb6eb01..1ae36a3a43d 100644 --- a/code/game/machinery/computer/computer.dm +++ b/code/game/machinery/computer/computer.dm @@ -93,7 +93,8 @@ C.loc = src.loc if (stat & BROKEN) user << "The broken glass falls out." - new /obj/item/weapon/shard( src.loc ) + new /obj/item/weapon/shard(src.loc) + new /obj/item/weapon/shard(src.loc) A.state = 3 A.icon_state = "3" else diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 366c3f56479..5d03cc6f5f2 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -69,7 +69,9 @@ var/const/HOLOPAD_MODE = RANGE_BASED if(default_unfasten_wrench(user, P)) return - default_deconstruction_crowbar(P) + if(default_deconstruction_crowbar(P)) + return + return ..() /obj/machinery/hologram/holopad/AltClick(mob/living/carbon/human/user) diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index 462dee8ff9d..99e7e402233 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -326,11 +326,11 @@ var/list/obj/machinery/newscaster/allCasters = list() if(6) dat+="ERROR: Could not submit Feed story to Network.

      " if(channel_name=="") - dat+="?Invalid receiving channel name.
      " + dat+="Invalid receiving channel name.
      " if(scanned_user=="Unknown") - dat+="?Channel author unverified.
      " + dat+="Channel author unverified.
      " if(msg == "" || msg == "\[REDACTED\]") - dat+="?Invalid message body.
      " + dat+="Invalid message body.
      " dat+="
      Return
      " if(7) dat+="ERROR: Could not submit Feed Channel to Network.

      " @@ -341,18 +341,18 @@ var/list/obj/machinery/newscaster/allCasters = list() else existing_authors += FC.author if(scanned_user in existing_authors) - dat+="?There already exists a Feed channel under your name.
      " + dat+="There already exists a Feed channel under your name.
      " if(channel_name=="" || channel_name == "\[REDACTED\]") - dat+="?Invalid channel name.
      " + dat+="Invalid channel name.
      " var/check = 0 for(var/datum/newscaster/feed_channel/FC in news_network.network_channels) if(FC.channel_name == channel_name) check = 1 break if(check) - dat+="?Channel name already in use.
      " + dat+="Channel name already in use.
      " if(scanned_user=="Unknown") - dat+="?Channel author unverified.
      " + dat+="Channel author unverified.
      " dat+="
      Return
      " if(8) var/total_num=length(news_network.network_channels) @@ -471,11 +471,11 @@ var/list/obj/machinery/newscaster/allCasters = list() if(16) dat+="ERROR: Wanted Issue rejected by Network.

      " if(channel_name=="" || channel_name == "\[REDACTED\]") - dat+="?Invalid name for person wanted.
      " + dat+="Invalid name for person wanted.
      " if(scanned_user=="Unknown") - dat+="?Issue author unverified.
      " + dat+="Issue author unverified.
      " if(msg == "" || msg == "\[REDACTED\]") - dat+="?Invalid description.
      " + dat+="Invalid description.
      " dat+="
      Return
      " if(17) dat+="Wanted Issue successfully deleted from Circulation
      " diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index a879455c1b2..3ae2ded9223 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -31,35 +31,35 @@ user << "You [anchored ? "attached" : "detached"] [src]." playsound(loc, 'sound/items/Ratchet.ogg', 75, 1) return - if(istype(user,/mob/living/silicon)) - return + if(istype(G, /obj/item/weapon/gun/energy) || istype(G, /obj/item/weapon/melee/baton) || istype(G, /obj/item/ammo_box/magazine/recharge)) if(anchored) if(charging || panel_open) - return + return 1 //Checks to make sure he's not in space doing it, and that the area got proper power. var/area/a = get_area(src) if(!isarea(a) || a.power_equip == 0) user << "[src] blinks red as you try to insert [G]." - return + return 1 if (istype(G, /obj/item/weapon/gun/energy)) var/obj/item/weapon/gun/energy/gun = G if(!gun.can_charge) user << "Your gun has no external power connector." - return - if(!user.drop_item()) - return + return 1 + if(!user.drop_item()) + return 1 G.loc = src charging = G use_power = 2 update_icon() else user << "[src] isn't connected to anything!" + return 1 - if (anchored && !charging) + if(anchored && !charging) if(default_deconstruction_screwdriver(user, "rechargeropen", "recharger0", G)) return @@ -69,6 +69,7 @@ if(exchange_parts(user, G)) return + return ..() /obj/machinery/recharger/attack_hand(mob/user) if(issilicon(user)) diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index a26b66350de..1868e966e5a 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -282,8 +282,6 @@ var/locked = 1 var/obj/structure/cable/attached // the attached cable var/storedpower = 0 - flags = CONDUCT - use_power = 0 /obj/machinery/shieldwallgen/proc/power() if(!anchored) diff --git a/code/game/objects/effects/aliens.dm b/code/game/objects/effects/aliens.dm index 21ae2c75996..4ec3efe5a33 100644 --- a/code/game/objects/effects/aliens.dm +++ b/code/game/objects/effects/aliens.dm @@ -141,7 +141,7 @@ /obj/structure/alien/resin/attack_animal(mob/living/simple_animal/M) M.changeNext_move(CLICK_CD_MELEE) M.do_attack_animation(src) - if(M.melee_damage_upper == 0 || (M.melee_damage_type != BRUTE && M.melee_damage_type != BURN)) + if(!M.melee_damage_upper) return visible_message("[M] [M.attacktext] [src]!") take_damage(M.melee_damage_upper, M.melee_damage_type) diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index 817cc5b22cf..3e12f0d4954 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -336,7 +336,7 @@ continue if(G.amount >= G.max_amount) continue - G.attackby(G, user) + G.attackby(NG, user) user << "You add the newly-formed glass to the stack. It now contains [NG.amount] sheet\s." qdel(src) else diff --git a/code/modules/food&drinks/kitchen machinery/processor.dm b/code/modules/food&drinks/kitchen machinery/processor.dm index a602e611581..ab460e14999 100644 --- a/code/modules/food&drinks/kitchen machinery/processor.dm +++ b/code/modules/food&drinks/kitchen machinery/processor.dm @@ -193,6 +193,7 @@ "You put the [what] into [src].") user.drop_item() what.loc = src + return 1 else if(user.a_intent != "harm") user << "That probably won't blend!" diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm index 978c4d191d9..9ebde1d58ab 100644 --- a/code/modules/hydroponics/biogenerator.dm +++ b/code/modules/hydroponics/biogenerator.dm @@ -73,17 +73,21 @@ return if(istype(O, /obj/item/weapon/reagent_containers/glass)) + . = 1 //no afterattack if(!panel_open) if(beaker) user << "A container is already loaded into the machine." else - user.unEquip(O) + if(!user.drop_item()) + return O.loc = src beaker = O user << "You add the container to the machine." update_icon() updateUsrDialog() - return 1 //no afterattack + else + user << "Close the maintenance panel first." + return else if(istype(O, /obj/item/weapon/storage/bag/plants)) var/obj/item/weapon/storage/bag/plants/PB = O diff --git a/code/modules/hydroponics/seed_extractor.dm b/code/modules/hydroponics/seed_extractor.dm index d30378251f5..e7e63b26e23 100644 --- a/code/modules/hydroponics/seed_extractor.dm +++ b/code/modules/hydroponics/seed_extractor.dm @@ -1,4 +1,4 @@ -/proc/seedify(obj/item/O, t_max, obj/machinery/seed_extractor/extractor) +/proc/seedify(obj/item/O, t_max, obj/machinery/seed_extractor/extractor, mob/living/user) var/t_amount = 0 if(t_max == -1) if(extractor) @@ -13,6 +13,8 @@ if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/grown/)) var/obj/item/weapon/reagent_containers/food/snacks/grown/F = O if(F.seed) + if(user && !user.drop_item()) //couldn't drop the item + return while(t_amount < t_max) var/obj/item/seeds/t_prod = F.seed.Copy() t_prod.loc = seedloc @@ -23,6 +25,8 @@ else if(istype(O, /obj/item/weapon/grown)) var/obj/item/weapon/grown/F = O if(F.seed) + if(user && !user.drop_item()) + return while(t_amount < t_max) var/obj/item/seeds/t_prod = F.seed.Copy() t_prod.loc = seedloc @@ -89,17 +93,13 @@ user << "There are no seeds in \the [O.name]." return - if(!user.drop_item()) //couldn't drop the item - user << "\The [O] is stuck to your hand, you cannot put it in the seed extractor!" - return - - else if(seedify(O,-1, src)) + else if(seedify(O,-1, src, user)) user << "You extract some seeds." return else if (istype(O,/obj/item/seeds)) - add_seed(O) - user << "You add [O] to [src.name]." - updateUsrDialog() + if(add_seed(O)) + user << "You add [O] to [src.name]." + updateUsrDialog() return else if(user.a_intent != "harm") user << "You can't extract any seeds from \the [O.name]!" @@ -188,15 +188,14 @@ if(istype(O.loc,/mob)) var/mob/M = O.loc - if(!M.unEquip(O)) - usr << "\the [O] is stuck to your hand, you cannot put it in \the [src]!" - return + if(!M.drop_item()) + return 0 else if(istype(O.loc,/obj/item/weapon/storage)) var/obj/item/weapon/storage/S = O.loc S.remove_from_storage(O,src) O.loc = src - + . = 1 for (var/datum/seed_pile/N in piles) if (O.plantname == N.name && O.lifespan == N.lifespan && O.endurance == N.endurance && O.maturation == N.maturation && O.production == N.production && O.yield == N.yield && O.potency == N.potency) ++N.amount diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 3bc5812c90e..46b263aabc6 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -91,6 +91,7 @@ var/global/list/status_overlays_equipment var/global/list/status_overlays_lighting var/global/list/status_overlays_environ + var/health = 50 /obj/machinery/power/apc/connect_to_network() //Override because the APC does not directly connect to the network; it goes through a terminal. @@ -442,7 +443,7 @@ user << "The wires have been [panel_open ? "exposed" : "unexposed"]" update_icon() - else if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) // trying to unlock the interface with an ID card + else if (W.GetID()) // trying to unlock the interface with an ID card if(emagged) user << "The interface is broken!" else if(opened) @@ -544,14 +545,21 @@ if (opened==2) opened = 1 update_icon() + + else if(panel_open && !opened && is_wire_tool(W)) + wires.interact(user) else - if(panel_open && !opened && is_wire_tool(W)) - wires.interact(user) - if(((stat & BROKEN) || malfhack) && !opened && W.force >= 5 && W.w_class >= 3 && prob(20)) + return ..() + +/obj/machinery/power/apc/take_damage(damage, damage_type = BRUTE, sound_effect = 1) + ..() + if((malfhack || (stat & BROKEN)) && !opened) + if(damage < 10) + return + health -= damage + if(health <= 0) opened = 2 - user.visible_message("[user.name] has knocked down the APC cover with the [W.name].", \ - "You knock down the APC cover with your [W.name]!", \ - "You hear bang.") + visible_message("The APC cover is knocked down!") update_icon() /obj/machinery/power/apc/emag_act(mob/user) @@ -590,23 +598,28 @@ ..() /obj/machinery/power/apc/attack_alien(mob/living/carbon/alien/humanoid/user) - user.changeNext_move(CLICK_CD_MELEE) - user.do_attack_animation(src) - user.visible_message("[user.name] slashes at the [src.name]!", "You slash at the [src.name]!") - playsound(src.loc, 'sound/weapons/slash.ogg', 100, 1) + ..() + if(malfhack || (stat & BROKEN)) + return + if(opened == 0) + if(!panel_open) + panel_open = 1 + update_icon() + visible_message("The [src.name]'s cover flies open, exposing the wires!") - if(beenhit >= pick(3, 4) && panel_open != 1) - panel_open = 1 - update_icon() - visible_message("The [src.name]'s cover flies open, exposing the wires!") + else if(panel_open && !wires.is_all_cut()) + wires.cut_all() + update_icon() + visible_message("The [src.name]'s wires are shredded!") + else if(opened == 1) + if(cell) + cell.loc = user.loc + cell.updateicon() + cell = null + visible_message("The [src.name]'s power cell flies off!") + charging = 0 + update_icon() - else if(panel_open == 1 && !wires.is_all_cut()) - wires.cut_all() - update_icon() - visible_message("The [src.name]'s wires are shredded!") - else - beenhit += 1 - return /obj/machinery/power/apc/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \ datum/tgui/master_ui = null, datum/ui_state/state = default_state) diff --git a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm index 9ac92d78ace..419d5e2c91d 100644 --- a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm +++ b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm @@ -104,17 +104,16 @@ return if (istype(I, /obj/item/weapon/reagent_containers) && (I.flags & OPENCONTAINER) ) - . = 1 //no afterattack - if (beaker) - return 1 - else + if (!beaker) if(!user.drop_item()) return 1 beaker = I beaker.loc = src update_icon() src.updateUsrDialog() - return 0 + else + user << "There's already a container inside." + return 1 //no afterattack if(is_type_in_list(I, dried_items)) if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/grown)) @@ -144,14 +143,17 @@ return 1 if (!is_type_in_list(I, blend_items) && !is_type_in_list(I, juice_items)) - user << "Cannot refine into a reagent!" - return 1 + if(user.a_intent == "harm") + return ..() + else + user << "Cannot refine into a reagent!" + return 1 - user.unEquip(I) - I.loc = src - holdingitems += I - src.updateUsrDialog() - return 0 + if(user.drop_item()) + I.loc = src + holdingitems += I + src.updateUsrDialog() + return 0 /obj/machinery/reagentgrinder/attack_paw(mob/user) return src.attack_hand(user) diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index 1db73cad36d..128ab849252 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -28,7 +28,10 @@ qdel(src) /obj/structure/reagent_dispensers/attackby(obj/item/weapon/W, mob/user, params) - return + if(istype(W, /obj/item/weapon/reagent_containers)) + return 0 //so we can refill them via their afterattack. + else + return ..() /obj/structure/reagent_dispensers/New() create_reagents(1000) diff --git a/code/modules/recycling/disposal-unit.dm b/code/modules/recycling/disposal-unit.dm index b2296e9c746..df8325fea57 100644 --- a/code/modules/recycling/disposal-unit.dm +++ b/code/modules/recycling/disposal-unit.dm @@ -92,7 +92,7 @@ return user << "You slice the floorweld off \the [src]." Deconstruct() - return + return if(user.a_intent != "harm") if(!user.drop_item() || (I.flags & ABSTRACT)) diff --git a/code/modules/security levels/keycard authentication.dm b/code/modules/security levels/keycard authentication.dm index d4018d364ee..46dc22254a0 100644 --- a/code/modules/security levels/keycard authentication.dm +++ b/code/modules/security levels/keycard authentication.dm @@ -26,9 +26,6 @@ var/datum/events/keycard_events = new() qdel(ev) . = ..() -/obj/machinery/keycard_auth/attackby(obj/item/weapon/W, mob/user, params) - return - /obj/machinery/keycard_auth/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \ datum/tgui/master_ui = null, datum/ui_state/state = physical_state) ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) From 9b458d5b6bb143b8b4e876e6b86a77a8f13a52c0 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Mon, 25 Apr 2016 22:40:24 +0000 Subject: [PATCH 152/265] Automatic changelog generation for PR #17054 --- html/changelogs/AutoChangeLog-pr-17054.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-17054.yml diff --git a/html/changelogs/AutoChangeLog-pr-17054.yml b/html/changelogs/AutoChangeLog-pr-17054.yml new file mode 100644 index 00000000000..8b8b5ff8e55 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-17054.yml @@ -0,0 +1,7 @@ +author: coiax +delete-after: True +changes: + - rscadd: "Centcom regret to inform you that new instabilities with nearby +gas giants are causing exospheric bubbles to affect the +telecommunications processors. Please contact your supervisor for +further instructions." From 04eac2cbe626b996088c4a3872950cfbc858a30a Mon Sep 17 00:00:00 2001 From: TechnoAlchemist Date: Mon, 25 Apr 2016 15:59:02 -0700 Subject: [PATCH 153/265] adds explorer belt. --- .../objects/items/weapons/storage/belt.dm | 39 ++++++++++++++++++ code/modules/mining/equipment_locker.dm | 1 + icons/mob/belt.dmi | Bin 12755 -> 13127 bytes icons/obj/clothing/belts.dmi | Bin 4116 -> 8990 bytes 4 files changed, 40 insertions(+) diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index c782f36e07f..70c9d7905b2 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -119,6 +119,45 @@ new /obj/item/weapon/melee/baton/loaded(src) +/obj/item/weapon/storage/belt/mining + name = "explorer belt" + desc = "A versatile belt, cherised by miners and hunters alike." + icon_state = "ebelt" //I'm doing this because I love you, syndicate son. + item_state = "ebelt" + storage_slots = 5 + max_w_class = 4 //Pickaxes are big. + can_hold = list( + /obj/item/weapon/crowbar, + /obj/item/weapon/screwdriver, + /obj/item/weapon/weldingtool, + /obj/item/weapon/wirecutters, + /obj/item/weapon/wrench, + /obj/item/device/flashlight, + /obj/item/stack/cable_coil, + /obj/item/device/analyzer, + /obj/item/weapon/extinguisher/mini, + /obj/item/device/radio, + /obj/item/clothing/gloves, + /obj/item/weapon/resonator, + /obj/item/device/mining_scanner, + /obj/item/weapon/pickaxe, + /obj/item/stack/sheet/animalhide, + /obj/item/stack/sheet/sinew, + /obj/item/stack/sheet/bone, + /obj/item/weapon/lighter, + /obj/item/weapon/storage/fancy/cigarettes, + /obj/item/weapon/reagent_containers/food/drinks/bottle, + /obj/item/stack/medical, + /obj/item/weapon/kitchen/knife, + /obj/item/weapon/reagent_containers/hypospray/medipen, + /obj/item/device/gps, + /obj/item/weapon/storage/bag/ore, + /obj/item/weapon/survivalcapsule, + /obj/item/device/t_scanner/adv_mining_scanner, + /obj/item/weapon/reagent_containers/pill, + + ) + /obj/item/weapon/storage/belt/soulstone name = "soul stone belt" diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm index aea31a8d9cf..af458a83571 100644 --- a/code/modules/mining/equipment_locker.dm +++ b/code/modules/mining/equipment_locker.dm @@ -289,6 +289,7 @@ new /datum/data/mining_equipment("Hivelord Stabilizer", /obj/item/weapon/hivelordstabilizer , 400), new /datum/data/mining_equipment("Shelter Capsule", /obj/item/weapon/survivalcapsule , 400), new /datum/data/mining_equipment("GAR scanners", /obj/item/clothing/glasses/meson/gar, 500), + new /datum/data/mining_equipment("Explorer Belt", /obj/item/weapon/storage/belt/mining, 500), new /datum/data/mining_equipment("Brute First-Aid Kit", /obj/item/weapon/storage/firstaid/brute, 600), new /datum/data/mining_equipment("Jaunter", /obj/item/device/wormhole_jaunter, 600), new /datum/data/mining_equipment("Kinetic Accelerator", /obj/item/weapon/gun/energy/kinetic_accelerator, 750), diff --git a/icons/mob/belt.dmi b/icons/mob/belt.dmi index caafd50a9095929fee401568e69ece0d594164a0..cfef95b74d259b22b3bc9ecb658b6e984c9d5c97 100644 GIT binary patch literal 13127 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 S_%|2;fc|mscKNM`&;JK{nNFYp literal 12755 zcmc(Fc{o&W|NkK(B}!5eDiV^CC1j}-LnuPlNyrw;zKx+xN)*|*vSb-cwwWwrDk00* z*BK1SZj5aVv;L0H=lML>^ZovQ-{-o1*Y!Nl_m4T}%sKbD&-;GgulMV|-%HdjBVAse zV>|!=@Iv%-OaOo#ykwi;-VL7m`Uj@L8{ENn?)vID`8asHKJs<-@&tgu^n^sLC;t4t z@UB%;Zld22oP@@VLhcc77wESSlFjCZrcc5WgN!lPP=iMgzkMOEywcO#A~r&q!LL*L z5ULI7sba|$d=K|OV39wL*wo8DRZSj4j_jMGeXQ5|&CZGaHY%8Y^2)cm2UDSKGxtQ( zu&UplktkyKpxf~ytgNHq86~ro`%d0E8XhqNP1X_F;{l043*I((TZ!`ElKgx|@OI*Y zEGkyU4Uz4?pm;6`ePSg-bH1lUbZoIF<7Jrn?Gwmwr)ti#?Q-`lz1Z5H4B3_xj{AjY zzZhbBrEkY|W+CXfxPh+Yb5|Ynx$BP4O?Av)>Npx28zl!js<%6LLo2Q?Gk8Xy;|{!H z%OrFsii^FdnR&T%-s!-b@t74;J9YPOc6-(2ws!lA+)F(Kjey5&Sc`?TeVP-T;O0D{ zQ+(LC;V0wWwLBYkhsZmJa7$(r&pNHeQ`Ud)m1xrJ8O%Mf5N<18cBX^>j1XtQ?itl5 z$MJ8&Luyntcd4UnDZJi1Ujq%dCm6&)0&kvi30xXoLy9aFiK2RRJ@;s8YF%ALS; z;#f%fq3I0Ls#nH6ZIMH~*#*U?J$-jQIbASuL1CKeedUegoeG=5QxX+D*aK{DvQIBQ zew=f#KHNunkyAi%w}i0oOT-mRKBZ$mD_5V0--t>*lQbEY#>V#CnU!4l>C=3syM~$V zdgyqW1*SGXxR_A3kTO4OZA|$f#1R1i;nqxD94~nOeE>x3BYrmU$n`J1^h*XNXbr0{ zLhe|k>?Oh(!RhJgD2B*s%e``qi?{Gjn!x!3d5AlmFcaAOw$;Qq#V$xtP|fQ5jvwic za#hhJ+KuLwkdYf1R_j>Qn19;*03s;|pX~eXFB+Je2G5q<;;!v4|q2Zh5+QoBS z=9SMmu1rAc&*w{CX1T7x2oeLj{2X?1WPMxQY<6ueZZViTe`Bmp%A{-&=}{E6DA(Me z1HQ3+u#Dl+Uj*E8@utAEkPpIU<{T)DE>*1Rh(ehXHw3rK2fH}vyU(%K~% zz8AB(`b1o>E^>I~S9-e179SuDyt`q>!Hup^i zfZQeuY>LKlYv}y4=YrnUxHNG$4socI4kM^s;SY4BL^%4r7h%vk*|qn*;1kRA->Y}vM7Lpd zU7A|&myj#`xntMPJ|N7cDH1>u6*ssGf)Lco15QvCRU)$B@zP815dM_=fA3P83k31w zLZo|(HBWV#iJe`h71XtV`Amxe@G=S^&(m*|wS&}Ll><^X`06RS=Qu-Yd3lx0-n5tT zrDN}6k^uf)1d1U)N2YtVq%=3Xe2I{Rh5M{Q2)&SKM7&yrK%h(UNL91C9ZZ&%8aavl zDmDaOMzjmOLrh8$Cj_Ty4eyeSWD5s2>o-cD*_PPqfL1axg03^I4)7;s;_$%Z!ObV) zFCDaud|)TN$y)}Kqr0@N%h|h)CMDhuhCIouV4uLPCVj8r3g5iPDZaZD`n)!np7&^( z?L*0*iba9y{dX|HUv%=a^%FV-p5o7^$2Ubno{iCB171QfWucP9!*5SE6Fe+M;OqeZ zQ#+}w^qP&>t@BLJ_Ju70AUwH0bmbc%e{5H8<5r#A>nURZz)2(K#a8dp#}cPkN$>r4 zX`5e%uT~~Ado-glc(w04Zz*%bw=1cyV>j*TV}rMwF#}#~?~{^*h2H>{2beX+gYfMh zWw3E3Y}2yR$q$P{7ME_D&vx1xg1?LEQb-wKr@3+7QT9-RaY??STb+M>-mSWZu$t{w z+W^>N|F~4BELKzh9SIM&)yuwNY6SI*_~Q}6`O(3ttl14Sp}S&f5^jnXEIxz8Ij?ao z-H^?tHRcS%XXB~0ml3)Q=|<+!9`eB7v9%?RxO^(H$#`3k5yJ{-%T{bpl7Rbr3;4uU z^8_sq8uy-s#_e8CNgqy@utdD2uXe3 zeFJ&3DLC|`A$ou&NdgC*JUUdXSlxhY+xtYEC<=%RWRo;7;4||ak$5epB`ZiA#My*6 z6AGUG<%V5#b%ORu2_Ii9#&PAO1~7Mo8_?#Oq%|bzWaNG~a({o{SiA5P037|r6_KPh z!r9m*LHISQ}=Ka=Mw;Dz-ncljfd$WBE`A40)*ZM+3|Cf6PI?> zf(phsl7$qaj$v2Z+YN8o5(R0v>yXT+Rhb?TYjD&S*?-B_$=LEkxS^&1;9h&Lht0g-V}&lUma{lUgrT+8Q!` zpOKn+Y@ok?u1N^`UIM-K>opHbQe!((1ERK-KK#CWd-tn7P#8ndc}aa)N5IQBV73>e6>t70UDO{I~IP+7Q3bX5+Y{VVhwnF zO~}F@fdjV*$Hmb>uBa-!i_(s}LR?wNYbXs;)~kDC4%!FMy?^Mk@Z6*UW2b>U_mip+ z@a7(eohA8SyFL7CarlRRwI707v>a8LILQul>)+G?w@SNKPXNHno#m4V6JQSyQg|K>4RP2B-%`~u-DD$>l3j)UP|!v5JZqe^CJOGqZ~d7cWkQC zCxfJO)F%0`cmA@SsR~Z7R03D-q3LVwshTh~On|n!uYO&`=G_WMNH+O)gfZXc1wZ&kaHFJ39;+^>o4JfMHr5Dw(rj069@oRF?HcbI7n>b-<1t*> zQD)TcY|D!;gso3ZygAy49e&LhUu8ZPY24R=_f*q8>&P#O8E zOJDWYBsljNGUKWqOzqcz%_=>hOhzuE`dU=1V3(LLuaykRn_I^X2HI|HWDF&@v$pNs zXLGulaCKO{<&ZL_0+Q(O|meham1oEk)u!l560r0!F_Wi5#P&Uhi0 z-w6ooeg}~@Mmx4ii1$v?IoskTu@dL?U6IevG9Ep3qbv>e@~O;Cm4qm5WOprs=jz8k zC7pB=i$!uy^}3h67jkiycCT;w#%v>UW@k{J@AS_2;e99!i^S;$W?XdG=4W2#>I(i@fOkHtOr!zCm!8ai48yONl03&)LwW9yWu{av7!Yah$|2 z9B#DTefBtq@f4*6YJ^y-zsz>N6MMbKM`C&9nOQjg23+qNN9} zOeD}63S*vyO9bP~L$V}X*E@~q~R#U73&Lk80SbNu$OsXR5|- zFcLQ%5nP35-cck0}fVM#x`uENva&2~C;jjb%J@-)V_f-C3d)ld48ks56rW zFf&>}F7xWMn64SKYTm~bVI!u=ngK~p@J0BmS3C*dWjJpwDA10EN6M4^u$5PE9$(o^ z^Np~-v(lOd0uG;s&ue>u64Rr^yV+BCfxnX|pjK6UlX>DQ(CwW9+Y9J@2M1|ru1Qbw z0w-gJzTO27S^M3}z^xISJ=S7>5rGduDYk4t+-H}b>?&)Qr0cH_XACB?&b7y5e&_?; z2aCatio{|({E#f0_T!yDxj8qPCQ}Ij@TMH(^YEvCI#GXLnZ926cU_iqgg3$nKgzQP zhi7OHtiSsqoC&Vkl#i~ar57jV3Pr7IHTJmn8!d$DCSW#91<+k2$*8b3cNNqhw;kvf zD)r;VogrgEtrWw+N?R?Af0&o6UXFhWDGhfhwkBt;Kh?`FsIhS7J&mxwh9bYOntWmU zMq*k^43)s^7pzZ}g{WI~JJ<|99Q~L8lEYy7ms3NL5`}fX^aGK&Gb4K6aQ0rjc#llh z{V6e`bm6MJe`iVNQ)9Pj%Dh7de2@^CCVyLD3R>WQW>mC(J*Ijc>cR@k(rm8JwJ}y+ zj3np&njM`{4K(hxZ1A#k`x2`e;MB9*LUFt*?yhx&~tK^x-X)q73+66uuPdVvU9FPv^s@s?Q$o`c@amJW``2xkiRs zBXGm?7pdE*&r)eTL@ie6@ZrpLsXJTgcr~t_@io5SHM6y~^~85vG-}rhYu`VsMk23b`IjRWUx|5O#U$v2mPd z=J{ru&!nhPpLI_R^x6#0HlbZ>w$gdj@rH47;_wy%x%riWzQV}UGs&)gtwFM^2M{G@ z+w#oV!UpeGQjlrmanB7tmiLEEbc6&#D4Z)}eQt}^d;~vx&-Hhht0}?dc6qIV z>C56r^fXdh!@JpsLrJ;tR+?IHlbB-h{^5m52E_tm@(r={?$nKxl_2YJI6Psn3@YT# zFy{lo%q$gzw^ z;F5-H5ich6W@Ct0$ zJ(nIiCD!p-iy6irD0@=qiU}k4QpIF>$uzu>sjt3tf>lG$e8?S(?pDTE=a6%oXD^2` zP(jOCAP$99@4uHu{um!!&$A+czFXpMHbC2d#X0=n;HLfeV9teF&>Ov(NQs>pyV$AX z^C=7?Q|r;$PqG028b5qEbCVG^&^WcYsBxJ&5e9sadJ#cIpq#5sSdFk=6-&DwM)+VO*M-h>fi^PV~)Fb*3?A~ zmRKkC%d}#Y)~o%*81q;!Pev|Nv$d8Iy^d8%h!7g@O%D_kg{q+eOC8|ll|ZsQq$`x> z0q#KCU;D5sA7Ixqw>R-|66S2jUhgies8D!5+nRWaFX4t^Lx8<6zMz$I?($kUwYA4> zb@xu6QBX}ErrgC{q#yEGs#>imG0&8vKd6<*^W9|(P%0k|9RTh>vY&?3K<2);#TO57 zTd+MGa4C~`3JILXc#hSM{?KwCJnMx8LgKXpn=I#QnuKfdGHD38zcKeG;{PrCVs=tBVfep#W=O~TRi+s3IE&8INC4X%}$kxCq}L+Z=J{%%ti0`3L?Y> z8~zo6C}v&$TI;vy3knVD7-QDOZd8h?~rz5ygU8q%Y5|VBM7L)nWH(+gPgYBKdSo1&R5DttF;)4G1{T*uqxQ= zHc|NK!fWrbXQH{pT<(;C1YHP^tvjc(sW@(^ED)PduH@S(_4!qJTCz0 zcQyLL{%AVELO)K~b2NEGF#Ir_d!?|(r~ayddpS`#!9*Sy^pGVjz3Q#3-5Dvm$-Jx0G==mYmmkpLS&JY<_`{7VkFYH|6`fG3>mKjF^) zgJ=8CFK^{n3IEJik+1o&&$9lm{JvxF@%}SDT|v^wXB-;AJr`#Zhg#+{E1hSMj47{k z4)o)bP`W`Sy&7(UiC|^o4_{_cqA{nMZ7=j+7O4N&POtRFKj^f6+qz15BJR?o5+kaC z)9YOtsYGAJL;u8)&hrMTbM_?#_Zh=;lURdutplvJSFJ%T}--wE$=TdAKr}(z7deR1sRc1x;``CM^O~XZEgPjEU7mZ^tA5!?uip7LA zwuD#;7OdnlzD^G)3!mikKlcfWt!M%7h9*rT<-;)ND8moA)A@O^ZvK}CkFu;Byp`e$EcV4S*?1$)yjv}!6`%VrE#O2#IwD06eX`>6 zyl&IlVG#a54>R}i|8rda8R7mzqj25OE#eT?64RjPwU1`#iBAgiSDqrh#0fU2x~_OLrl&yy z9i#3}5rKnYti!OWFS0L=K~hz{A}m~J7rzPDc4!&=gB92lan&`{{B&=9Pg+}o>^}jl zXQ0c?Qsx0EU#thAA=qNM94pRW0*x-A+7s!FNPJGjPk+AKP1N$9#z;b#h6Ssmf>}fK z8kB3-Kpy4DCciE>(<;uuupWgd@{cT^D7veq99&>KIlI6&2lw@)#W@N8_3a%JW&0pK zReHp2H^VPQ!gZDAXTD4OpkJy$DNt-#c_XgMsr@jB@xfAC_wU+O-qZSjw~z+fgi~Cu zMs=1Nn*CAZH3!f{kY(deN`S=eeAP*wuXRc2vyh@ORNuT{I3I>lyJuHVnqPbIUq&#z z?g^7u62AGs0=Q4x_w{$m>ngW(<`;j9{vzxj5TA-s@3d|RtwBB<`9=RNwlG>#sqBGs zM0b8NOgjjg0Idu*D!iWK@TfeDLCj)g1BpmaJQ z*E`D=x~w+~NDNspH!%tanI0^&9b#pG9It`caLa4Eqtq z#fowLCDtmC-d|0xm0Y^TAtoLkB@(Xmt<}M>{hD4-qxN933TuBi5 zks>>&7JO$z+-4hf)~^08pT@@90m4)FGW6iHS(`X;zl|>#cMdokU#c~rPc#u`4M9U} zo%t?XADki-=r&`TtV94ei+=eM-$i_&rQ~Q>@5D5AQSIu&E?-20m zEY!khO>#@!ddBo$`;-4`FY{=%Nys41=+Yzyq&H|bBj2^}lWTMIQ7d$?-{|!I-uW12 zFPuX1gQpIcowpaqZFhPjU^>?ndT zBvvCz=SDrVbklS6o*(DLx-R9t1j0|>GIpDAF<)aPW<0)sePDcHwM~XtcRe`7M9hOa zV_clhN1$MLoiZAF-U4$gxnUFB!OFD!vdM3lN=sDx75ViD>(d2hiGTs{_LzK^)aqgF z)OfA^i8|sZeUI}qXaotnx$nVw%EdRB> zYd5>r1}xs6&rq7oycG;?BDh0^#uZ7g#8+k#hRs}X@mdwH!NHW= z(mxU2sudI#6%7*sF<#-@4O(;wm>2m~9LWyD-p18ql4k)yOoWcQmr4<{$qBkAr2G>6F-*fMcT1I7Of0yu^ zhMJirj0|uJqXVi4)rUF5S3XoeTG=6xHZV~M#^huTW)%(4NUka9-Cp!eBp@7bbZOhd z%q(b_OmfA>WX*fjpJQuPnh}gyDHt{t=p}C-iPD-h? zOL3h3aFo^ibxTG5%_=6F)1a3qXhgTqXkbtwab*6L^(@wCN1BRp4=(TQ(&O>^AnJA( zTr>oewX}SUa?W(1P>DbvIo_U|bj&MF$=!TeLjEtdk<8g)n|;R=&rrz245J6Sx3IvTsvd2*F37rqZ2BhC8bmN`_S@4I zsbwl?Ok&f$TRSm5(AO&5spW8TN@b4N87^&XQ_GB*6*ppzIPC=f+Ey(`^|=?gG15FT3nU)@K_fB_%blnVW^RYDioT%f9}y z$L&Y-)fAYu1Qfxpov%(6tMceCxLwmSn-O4FC+yZ~s4|xOH{RpSBKhjVUE4)vtHB)d zeMs*fsdVu|W?-Y8d6}I@-h(^f>jqvVuPP#W$j*yiPoxGNVfnVOKJ1X=RPWa8j{Dh* zmn|78EGk-)k&)?G*2wye1jB*GvKFQN1M-;SJgB;@7>r(C>#M1_i8IEQVYF6%2&6H_ zQ=HR3MU@9Udc?~J@`xw+fI27w6WhkvB+vQr-zenW8hB03R(8Zfh0E>B>Sqs>@Bk(Z zvs)n38L~{4dBjV{c~X@ZH(LAEw$c>?n_4xoN4zDvx^&$IUEkopN7{dr|Z6F4%?kXvFqsy z_RKbd_3>I{YU1WdHhfPv1-Ab6WuM>V<1Dv66}U;S)Q26!KX>Qr$*u8{o(qSI;T@Qi z4p+YV9Et=vv>Fv$U!hO)d^eui-+~)H&&+$e>Sd)X24)_9a_{u#mDU1hIx$OYzer@XE&&rVFNH1b)1i7yFA?BzARhb^LG z@Im(QLjsRsE1yb3F_<`99ctf!v(?mJMXcz0CH~?@u zt}a014xha{v7<{c@#3)-|8Zw?#dG)lsus<<%B9EEP@`+7pGW+%;PGErU~&Oh6;KAL z17ikOPr%WILAUjBVBuc($#O1$Kq;~1#E%Aqkkz&w*O{qGt|%~g`r6Tx^TYdVU+wDx zLjEYOGx#A2JQ4q_yype&Ts8mK0WCn>T>-^@9?U{RdWk4PW-#}h-&*VGbb1Yy3vh(Y zuz!6oZCd~BDc9n35_AyE5t!~}oBRP?|HdU6|HsQhKrWSE9MW~iEbkz@GI6Zk4Dh$73379wUok>VjBE1VTr|y+vg`thK=4uQ{o+h!F z`H%As`PS+xpfHNtG|WN`qT{x3Y@CFLYVhmKFTeL79Qtg~S2dcQI>1<3G#hlNR}wRD zbXP+rUX(#iu(0dtW7*G&L?6A_9J=~jQ!Sfzn@dAz^ZYy&Uggge3tYJ!k703%hW6L5 zwaG3J%F1Hq!rl*1?a@R$(q&{#P>oc-zQ4$#pe5#49f46gQso*S10vaDtX2u7L8tya z726NSeg}&jNQXj__UH$%CFPn`lT{#Aeh4okOr7HCQIuy1>z<=D`4Flq_OTbyj)<$0 z4S@fM(siNf;;T{qWidzYu!fO#_}HP+YyQ&>%eWkbzXvXFfM$+Z{8Vc0PQq0!e(=!s zxU8QxK9*amQLC?OEk`JbwN3Lcj0`>$+L?&6y@5x0w2sYs$tzxH@c_jJN8;5p{!pe0 zj#o;H^VQlGSlOPsF7;&| zlt{m~BX+8!lDSm+r(kX`P}=?iDZF2fmy(VcI0yq8bi}K=L4pW(g6B+ikXklXx7N8x zzn2@Wd$X%^G=`U*K*?+A))v#9lxae3+cTvkIq1hcgE05%hC7(v@`u|z5OPZz!FbDN zG+W@2DP@u}vI5RPV4U}fsrmdY&kaB8@45)~uORph!OUta{ivOvBj;BN%rxPvGke%3 zGmlC{N|7rm^3|4~%=F8pta~*FrAR@&dr6IH60k2T*AVS26UG2M49uuZqUD}%ik(C0 z(msz}yPMx_f+32E!s(CY>-oG)7#uEOR=o(*)>U?#c%mMa*IoWxDT^5^br}yP^z6l+ zFN|DfflA+6ox*Fdq3#5l5qfEfZmZ6~_g1LB^E_Je`#qD}w?Be~99HueY+me7_%0YA zz3KQ=wq*|hap~dF{xd(UY{9O-Di?0D)cRu18bH_Ojqw7G)|Ik=WePnf?(QD22DUxb zhVAFC-|~``2f>=$L_uD_60Ayi1`^sU*&{%O=5{1ESR{MM{5;_MtX1m}FZkz!-2;~N zJ&=$5Q|MW2Y(V&C>jrDD`2Ge`{ur1Mj{48k?toF8Y8k)=Mjki~$Ag^ZS=vB#^VyzG zN&}$`rx@BRJmUH6YUv(`D!dG@p3d!PM!_Oo}Kj+P1mE)^~S00e5PihAgOB>Gnb z#X?_AIczNe03;A(VB)Lz+{f12$>&3aef}M_9k}?zhUe2_;W!}$UyR}NhfCu1UVoe=n^xUgJ@Qmo zH3bntBcu2X3qsbzuP1%JfDiGR#_+ec=de?8xNxyzPV{=Po5|1fd&m9!^#~@RKdZnU z60=m%j~RB1|MCl{Y3Abz-k2%%w8?&-B-24|B5K~A-9%6_Hd1^}i(QBa+`13tbZLTJ zl)>nh>8-S4*<;oD>;QlPP*apMc#(fl5a>%YUvSht|EZ(8#Y|)DgPn$IYY)y4)(S|& z-Y**`kF>9!av0*eLy%KL$kHjnGX8@fOKAM~HIjO8JqJg?9?9K0lJKZ$nQf8yMx11L z_(dA4+3S{%LApnmx4I$K^`;i{^Yc7*bC*8JS^>suW*a!}F9XeIY6UCuic32OF{A zz4*^>oo&i<4lfS+ge3T=fjW*(1^w%zWN9(h?fT_Exn-vxYdZqfN4woEKbM^b(C+8I zJ~hKEFFU;?PT4t~8_mTHQ;Wa+#(6E11haR67@e~cx`oo7DE-)7$_*zEN#j@0rxSaW zTIk?{g?_fZoqL*yPdGZ&B!a>9w{}XI#7S)3@gq@~BgVpA8<6&ABbtqRJO=-ZPZ`o>X z0Aiza=7mtVZEUU|yY7NTE0F5e&&nnDvZ*^ucNTX{97aU3fgz6_y zz!Tm*QMu}MmYTh1*41hGDie@+Eck$Sw01P@_hZU&qHpC_Ajbn(R$xITPQ}%;f6kaC zQs_u^PMS&_qH9e<_2{J8iZ&gT>e<25K6cJv&O3*@KpGEP5)eT2{il+Ct*tynb>Qcx zBmhyp8+h_HY=8QBgi(*$9U&bmm*n$XsHgOkDmK-XGI2zlJQh&#ie6PXi;%%@PK|5g zJ=32X@ii|wqOhe+BNX6}C*G^yuLx0JooK^e~|khDQ&#@9s6 zmdQ6(OT2inIViuNI7guZA3Bti^;$~+$!AHnrSg90RGN$|%6|guAl;cJ(!)Wnr^< z?f7=Psqx|kF+v8z9Da)ntSg!$OnE#8=2eYf|(5`4NtqRXH}Y^y|VVGLD2sW+Qs6q#iXDL67`_T5FRz z5BDw7`TVlUt^B;dmDEavUOD)f)|WcsFK&wMvk(GN_YnP{G<&iNRQOSUVF>nRK>lEi z^pS(1C@_BS461WKv#AgR_eXc1MJBy!3jhIN2mdiA6ERfR)l(LpDT+lHV{zMj}>q&n`HaZc~~=)d}(?q~hWI;pHnKILyG+ z1pOz0olJR`V#)z_X5_NV&&Gz41O*i(lwAP(-N`6br}wu!!)x}Ct!y{K^>^Fq=0_-5 znXa!l8u+HM0I=O7cvYKsQeP@(Zt^5qTN&@TZ!^Iw(+}3s_l%rRs0Rv&{tmQqe~_7x z)z@}d?|GRLn)spn8Wi(36il7xuo<2__e=>{zxzUCx_J79v zzUncc{|KJTcQMf_Lp^}kT@Yu8heH>(Krn}*TwbHZb`yNA9)fBlMW)w~Y)&s1D90^} zh}j&x;dx;{LDkvyJeG~Lf@&Q=JWwr>8GHi9IniIdw~>RZ43JeerPR~da4;RPUeo4{x}#5%A$_vipX?c69G#GBBi zTNE(#mQ)97(+aX*v}5k?9kb@|j-@yWHW4+#0v3(Mqr`giPMo+Sv|}d#CZLADFUE5n z%c4|v#b}iqzT)yD?%md#`L7Jk7n)C|gRY~ts6qIJhl9tFzw`^a6#QxT$quuPwcna) z>lnF3IECU@PctXnqh~3+qYe^eKSzVJHPO>E+Y>1K-{<6)1U_J-3tzapII%5AO*}4W zBXKnA7P`AbA_37F6A->?NK4QkbKG~rfE2hH59ycf2xibd(F99w|0Ln zv$3H zx2%>tuT%h!M{rC@b&VWzxz58te)e>m%kB@fBg)xiARzy6KPQ84B@j`%+LbZ%@Vj3r z_e-;hmgB=vyv-KlzLh&8J#wYCjuVkuQM$~kDFDRDz_CB;wAyaslkF7FZ$(OxUUZls zUCFQNZ%ntatDu&9>~_&S{}*Ud@Bq|k$(I53sjm>f7E{BA1)3c7}Klgx)D@8 zt}8hop7|(k&?+86Fgo&N)Th%5*e(B(hkA|$u+RVg2aN{>aJXk*x`f38U1KYi9dc;f z{;2cIvp;hHzjf4*Ff8U_s1)hS+CFCL%{H;G@|A(b!ukS&aW7caq=ug1u}ny zyLWt$+zv*&F8JUln}Oy;M$|;E?61^H8_2LCip)8}?!z;}9*Ij;F(OYH0jI}NmM8jp zwN%@iyZP02ZNoWz*ET(TuQvWy?*CsU2mfXCIMXom-G{2z&9^k~LR(uWe9K9@XmZnq zIIB6;gsGIoX_VdEc>ezVt7B*wow6b$<4})1a+~=>U)Ca|z;#Z)pd9i?MB_BLTvEHB z35I$|V1&BqIvOPCejLsb|H5f?C|himUMo703F-Sg#R{!&ZeE^%uy9n*l_ zS6(Xb{0%KF?KemvM$Oe~sryC==EJnJ;y>8Jl<Kl6IDiL0A-bOA3|SWHY?{EY`&k?z@#k@TzI zdk*@4R?`QFfL;9qqKb2ncRQ?W*@#JfI?P5zWe8%euUj4uu4Iz+@e$HVnR+ie&aM}C zUwR|weiFnO&t!S~XQ&MxKk8nKonuDW8S+3}ltn3fP%yRH9;1*D94y(QLOZW@?0b{~ zvmM0u_4OU@E$=lV^N}82UtfnXqw@vKr1agTLyBS@NA<}(brf)Xux16RH?F$nyV7+J zs}AM`UHcO6odCYJ;#s6^KOgLeojq=PW^ViF)fmn=5BA+{%FjZDd7yof{yx2I8`)#T zv&1Gqy!Im_7kPBKrFug$Fy&cwmcj3F_oP=D6hycRWiU4P!u%d`X)yxb&B5_b(wpFm z3v+f3;|w)z`t*~O;8I)P7dwSOP8K^TtwQcq zW>}~gif%db$g!*5m{U?x(sNEz37 zzWG6lhiKl0zeWJ7zc|f@>3gBj(kOz7iR0^+p5pJ!PSH_iPqZ&JpvsTF#r3(lWg9;4 zU2@NVNNb%i5HXPOaI239Hohb=?|fGf;BV6dd%AigukvD1mtN#BPAvL+8INpcUVjA@ zVwJv-%KEV$dXO7ly(IORmdz6n?WPa2U_StNPj4Vr-Lv{aImkwrpu-kxrf~-=1be@J zjg4H(5P2^_s%olO!es%`Jc9d^kM5^UArCiJkWsl|oCDe`cSEzRiCggr1@UX!2J{q~ z)F4L!t)zyQkI*K8K*fr>u4I}=?2pgv6;6qFDkt^RB}JPbE9PlFBMKITfI(4x)>pl| zN@ro}S1I%EC|4_<&{mHaZd6qjr|a$CA$`tJ>EHWN)1)3)?@3`rwjveF?-mTW73X{= z^Fs(hKjw|C2Jq@#hiEsQzMb8q?@0ur^8dz`m!MmnmWwn;(L2&37Or+nj?4w z4?yqrZ!uH@10_I-cFVAY!S0R@$q(p+NYB_ft7*#o*)z4}(3rCwF~?dAr&^8sz^R1o z={ekReyCf3BP>hRk}H$P;bsyS&pT+a^0_v9)WY8v$lgRW*Yc7zX4XV3!PsQc|Q8WCp4ab-|f=uHJ){U zyRS8A-0XbRm@^6M;)0;pg_;ci7fZ$eqQQUGlbXuLQPLshr=!KN<%NycNHzeuhO&3A zd+0acMmBc8{Ix4)?e;JLK)e-_*4MiW%FNWa{k2f+nSOptUszJBZ-o1ce2mXZET%^@ z8bBD2Z0Y-auG_L4IQ?3SV>|ce%1F4YyzCu{>eK1beb&eNzWbZn^P9pGm;2i}-WXe@ zqZE)R9$Y{ztn3Bqg;X)OVsjTnS+?u#9$FFXVY&OG##J{k{oP{V_F*cCHDA^HW*# zQ!!E!@b`~db)EXRqwbeJ;E*WK?T;5ZBg&5;jgmlYHyv+JaIrzPlmg9-?UBEA~Z{HwX%mSw=}k~wy?a`V z!ksk+`{a@0PWok0j=L;sedreS&ml*{ifoBMe~E4sldd5t2i5w%lw7_MTpXPJeoenA z)#(eAI$V!*9mn1sY@C#kk(tRziQh~8@U0Q!Tm_naHAY-7-^zUS{7-jX5XDr)JAWkJ9}i$oF?#fo@hIBsHJdOHry*``u z%CCT;)vcZf<)ptbiHb`?IW+6{8K0pTH1f5Y9dtvdcV*ELpnFhWDJ1VW)%kiVJ(lu> zn)qA-*t@|GISNaxdb7RfgBWHbKGHuD38GJ*l{n1ozrP#m7{vl0pE<~skcX@WU(Vvc zgxxbAMqS}4kw7^U=%6^||LV>Azj1$QFC*Nlj$z~$w_VeLjU9ywY zF+SUa<(Bxs+}ylZUw>hecca0Rr;{THa^oTPf@GZ7Q`i?ul+{$a$>sBlYK zO%B}J0Zq2KC|!Dy+NWp>ntLTHXe?Pdc2mTnK7j!2Fm$@N?eVrrw-H5D zca3iqcm@WL7VL+GuTKMH-oFI>O78pRxiv6*I4t%}O5`hxn9SdIHrK{9YI2GMO#7xs%B3V&k)SE*%luB*O*}alyoIeb zZEOJz615DZqW}^vh=h|d^lyEQZsgiNB?`L3ju6nb`-drdR^3H>qijr}#0XH#3t-i6 zo3R}=@M#x0>}r$w4}doqvR;hvr;=M?^s3(qH*(wa;12%DBmaEcf?!W4<%eM}^S4!G zGRDHH%W$yFY<|6Qoj}HS)l}jGa2~z2vWDGKy6ZqmA#_F;zh={jv}vq3Y#dPrV*A29 z#S?W@mwV;waVS*0~&LD==jj;y@*5?bss)bvOx1mY-&k$PvTt1oTcbv zp&hqnZYWx^0VVL@&BZ~8Ehne4V-d_2&Ay}*8MW~fA3KcN8KES=bhetRsJa@j$$p|2 ztp}9+;>@hj_*TTjEF_QnZgy7B*UwLmOi7deNe+S?zwuj)(#Nl)Mqiu*7kzEoHCvW4 z2m`((IG^FWzHLftC@~uAE2|crLP%A4xcCEg$Ihv zE2USk6#Op`6W!`<>$zw41`L~%n^+{N&LNz369p^w`(oYO-G zqrtXFfZ66bL@xg6r*?dxr6Y>`WN1)spwJBh*VKVya+<9WOaFO3@Wexgnt4kO-F+)i zWG)ikxV~M_GayD3T9#eDZzYyy!U5q7)qg_*cU_|#rBE%f;&kP4B!Lwblm7N@Cx${~ zJ&ejT!^1&~uA=AX=XUcr6k~4u*_he2Ic`LBgvum%r2i8<6A_R6Bmb6lj$GM-qSPoq zZ-m!K_RN!mpR$2iqjN&;(;7LLNJ^@4l!{y0;KIFo+@l;GU$(H~l>J1C5sLKxn#au| zA5D=9AO_fky&R?PJ2dM1mU+yM(Zgo(Vutrxyog3xm>^Q`|G|;#fVQ<}D$Y`TVQ(%2 z=?8LHw1^y=9doGqGoME!k(=o9mI|&&|MUzaca;?jJ!~;hCmGzK9B#5#q2=WCI6gk! zAWv4NP}}|VhqHWQ>kVEt-tm~n=U4P@w`DfVsvI$mmX#xE)i?snhlS6*ioI8|HriVh z1ZrUvvc{@aIo=|S$}6`mycmf|Ve;1Z@&nDxwz|HTs(s4sxx}Rhp)Q6ZmL|TS1sX&5 zSw(4g$W0LFhdrSze*CfNXLu6af+0zLcDVpodI^wya|UoX>*v)y7Ut(Ka{0kQo8Vs0 z9zBoQkX3a=bVN^RT@&zRx2Y#@*OjG-o7cc()Nt-17Hfw5=g76|@npHIvjvtxMpk7O zOg!rFtqB@t)bt^*O{%M`ISudc(l+GKZTpB)KV|PVVSZ6tiA~WDw`qtjQ*%Hh9ue{L z^QSt!$={@(Jh(f~nWd-7|9*-cJBwx&Q(xiHWfo@s7myZ(KUz{X(U>>7rHQR7#%BKu zv21dZTV%QQTPUEZQFSb?{!38{jQXKr|F++<6nsvp{u_P%e-LHYNfwcATjn~MQHn|T z|J|z#h!C=?6l%I?x{>b83+6@pbU~1ZyjQZAN^b0LX=2pv-yg2%z-f~%BXH%rHMzm!~%26d8aJ<5rq0jJlQgs5mBb-=E zwLF~$xHbJB9Ue&@-Pa}yFw2*`%8lqx9%g?McNxq)Ys@VOa^JSF;dgH?>E+BpZeG}w znIyiS)a{iT+Qo7rK*rx`;PFBLGV-j^qfaXA9>G_;@rvdn?;llJ%;#!6X9~6cd8AjtwR;Hee@$niPbhLwo zD>5^_db!xZAEV!_OWA0}l$4_XB-TaY2#G|_JIZo&71z_p<-Yx}h5?%7$T5T~etkhE z`!kKs>ZO@aEJ&Q1se(JPS72uVn*RhhpP7TIsM&_X$;qkb`{&?oTVXJZ0>SH14jvw! z4o#hdDz=)vo0}Go50X9Hys1y0@(URy@+x{s3gRX{EPaQJ6xH^P7_P+mv8$#Uf(gsH z%1xEX?FQ|h$%=rdcL-`{o(WaV%+4}VGa8br;SnSeymQtfN7qx=FK=&?QVy&gH(&k*q0E+4X1KY1xcKgbjr9@aVz6 zuGIR(UrZZzwJtO6o=pVzE`I@s1Jp(}z-!Uz`8g1Ul5X9#6H8Hqa_I+-ZQ-Xf^-HXk#ad;_fvMcxiIMqY%1Aq9su3cI#Qm`vn z-JI1uBq-@bX&AEtH&vqs*@4)3B2_8;(I4Y$*F^IPaJh4rj?nbh$iYkL2|8Shqoxt& zmU*Yzken8LO8TLvpKvx*ZP-343fuN`5gZ6Z<3ja~4b**1)lm6PDre-@eYY09o?%)1 zpR7aGt=Z|vGXJB+wEvUZk!RL(wg$)N*Pw!oru5z3LbbkHy;Ve#0Wa$H(b zud{5Nqq6Jxt715QqX4tIqEJVP?sbaKp^s%9)_Z2Tnl^pfJlr>uaunk44NI7}w47SS zCu_jW@lR*HfW3;^f!QAa?HwXyp6uLspc7(0iV8^!>KH6detrk8+D&DdODCd{sBLiQk>c`l)u&!<0(n*&`moCJsl$UW2oV#8`QR5|F2p24kq#v WMmd6S`3rsS1yEDcQmm7QNBj?+KlKv; literal 4116 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 Date: Mon, 25 Apr 2016 23:29:29 +0000 Subject: [PATCH 154/265] Automatic changelog compile --- html/changelog.html | 4475 +------------------- html/changelogs/.all_changelog.yml | 35 + html/changelogs/AutoChangeLog-pr-16940.yml | 6 - html/changelogs/AutoChangeLog-pr-16974.yml | 8 - html/changelogs/AutoChangeLog-pr-17009.yml | 6 - html/changelogs/AutoChangeLog-pr-17053.yml | 10 - html/changelogs/AutoChangeLog-pr-17054.yml | 7 - html/changelogs/AutoChangeLog-pr-17067.yml | 10 - html/changelogs/AutoChangeLog-pr-17078.yml | 4 - html/changelogs/AutoChangeLog-pr-17083.yml | 4 - 10 files changed, 65 insertions(+), 4500 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-16940.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-16974.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-17009.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-17053.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-17054.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-17067.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-17078.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-17083.yml diff --git a/html/changelog.html b/html/changelog.html index 137551269a0..e6e2ce06695 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -55,6 +55,36 @@ -->
      +

      25 April 2016

      +

      Joan updated:

      +
        +
      • You can once again hit a closet or crate with an item to open it.
      • +
      +

      Kor Razharas updated:

      +
        +
      • Adds support for autoclicking.
      • +
      • The Shock Revolver has been added to RnD.
      • +
      • The Laser Gatling Gun has been added to RnD. The Gatling Gun uses autoclick to fire as you hold down the mouse.
      • +
      • The Research Director now starts with a box of firing pins.
      • +
      • The SABR and Stun Revolver recipes have been removed from RnD
      • +
      +

      coiax updated:

      +
        +
      • Laughter demons are like slaughter demons, but they tickle people to death
      • +
      • Slaughter demons are no longer able to cast spells while phased.
      • +
      • Wizards can now speak while ethereal, but still cannot cast spells while ethereal.
      • +
      • Centcom's "drone expert" reports that drones vision filters have been upgraded to include the option of making all beings appear as harmless animals. info: As always, all drone filters are togglable.
      • +
      • As a sign of friendship between the Free Golems and Centcom, they have modified Centcom's jaunter to be worn around a user's waist, which will save them from falling to their death in a chasm.
      • +
      • The Golems warn that these modifications have created a risk of accidental activation when exposed to heavy electromagnetic fields.
      • +
      • Renamed hivelord stabilizer to stabilizing serum.
      • +
      • Centcom regret to inform you that new instabilities with nearby gas giants are causing exospheric bubbles to affect the telecommunications processors. Please contact your supervisor for further instructions.
      • +
      • The Janitor's Union has mandated additional features to station light replacer devices.
      • +
      • The light replacer now can be used on the floor to replace the bulbs of any lights on that tile.
      • +
      • The light replacer now eats replaced bulbs, and after a certain number of bulb fragments (four) will recycle them into a new bulb.
      • +
      • The description of the light replacer is now more informative.
      • +
      • Clown mask appearance toggle now has an action button.
      • +
      +

      23 April 2016

      Joan updated:

        @@ -565,4451 +595,6 @@
      • Wall-mounted flasher frames now have icons.
      • Upgraded resonators now have an inhand sprite.
      - -

      26 March 2016

      -

      CPTANT updated:

      -
        -
      • Nanotrasen found a new taser supplier. The new tasers hold 12 shots, down people with 2 hits and hybrid tasers now have a light laser attached.
      • -
      -

      CoreOverload updated:

      -
        -
      • Sorting junctions now support multiple sorting tags.
      • -
      -

      Fox McCloud updated:

      -
        -
      • Fixes Shadowlings not being spaceproof to pressure
      • -
      • Fixes being able to receive multiple spells as a Lesser Shadowling
      • -
      -

      Joan updated:

      -
        -
      • Adds assassin holoparasites, which do low damage and take full damage, but can go invisible, causing their next attack to do massive damage and ignore armor.
      • -
      • Assassin holoparasite stealth will be broken by attacking or taking damage, which will briefly prevent the parasite from recalling.
      • -
      • Traitor holoparasite injectors include this parasite type.
      • -
      -

      Kor updated:

      -
        -
      • There are a couple new lavaland ruins, including one with a new ghost role.
      • -
      -

      PKPenguin321 updated:

      -
        -
      • The RD's reactive teleport armor now has a cooldown between teleports. EMPing it will cause it to shut down and have a longer cooldown applied.
      • -
      • Bolas, both reinforced and regular, now have newer, sexier sprites.
      • -
      - -

      24 March 2016

      -

      Iamgoofball updated:

      -
        -
      • CLF3 now melts, burns, and destroys floors a lot more often, as it should be.
      • -
      • CLF3 now makes 3x3 fireballs on tiles it touches now, instead of a single fireball.
      • -
      -

      Joan updated:

      -
        -
      • Lightning Holoparasites will actually shock relatively often instead of 'sometimes, maybe, if you're really lucky'
      • -
      -

      PKPenguin321 updated:

      -
        -
      • Sand now fits in your pockets
      • -
      • Sand can now be thrown into people's eyes, doing slight stamina damage, making their vision slightly blurry, and making them stumble when they walk for a short time.
      • -
      -

      RemieRichards updated:

      -
        -
      • BEES
      • -
      • Hydroponics can now manage bee colonies, bees produce honeycombs that can be grinded to obtain honey, a decent nutriment+healing chemical
      • -
      • Hydroponics can inject a queen bee with a syringe of a reagent to alter her DNA to match that reagent, meaning all honeycombs produced will contain that reagent in small amounts
      • -
      • Bees with reagents will attack with that reagent
      • -
      -

      Xhuis updated:

      -
        -
      • Alcohol has received multiple tweaks.
      • -
      • Drunkenness will now be displayed on examine as long as the target's face is not hidden, ranging from a slight flush to being a completely drunken wreck. This also helps to measure alcohol poisoning, although the appearance will remain for thirty seconds after the alcohol leaves the imbiber's bloodstream.
      • -
      • Alcohol poisoning now has different effects. It begins with standard things such as confusion, dizziness, and slurring, but eventually escalates to constant vomiting, blacking out, and toxin damage.
      • -
      • Drinks now have a wide variety of alcoholism. Grog is barely a drink whatsoever, for instance, but Manly Dorf will completely floor you with too much consumption. Note that drinks based off of whiskey and vodka are the hardest, whereas beer and wine are the softest.
      • -
      • The speed of alcohol poisoning has been slightly reduced.
      • -
      • Some drinks have received unique effects. Experiment!
      • -
      • A new base alcohol joins the lineup! Absinthe has been added, and is very strong.
      • -
      • Whiskey Sour, made with Whiskey, Lemon Juice, and Sugar, simply expands the existing whiskey-based lineup.
      • -
      • Fetching Fizz, made with Nuka-Cola and Iron, will pull all nearby ores in the direction of the imbiber.
      • -
      • Hearty Punch, made with Brave Bull, Syndicate Bomb, and Absinthe, will provide extreme healing in critical condition.
      • -
      • Bacchus' Blessing, made with four of the most powerful alcohols on the station, is over three times stronger than any other alcohol on the station. Consume in small amounts or risk death.
      • -
      - -

      23 March 2016

      -

      Iamgoofball updated:

      -
        -
      • Cargo now works off of Credits.
      • -
      • Cargo now plays the Stock Market.
      • -
      • Buy Low, Sell High
      • -
      - -

      21 March 2016

      -

      CoreOverload updated:

      -
        -
      • You can now construct and deconstruct wall mounted flashes by using a wrench on empty wall flash. A crate with four linked "flash frame - flash controller" pairs is added to cargo.
      • -
      -

      Joan updated:

      -
        -
      • Explosive Holoparasites now have a 33% chance to explosively teleport attacked targets, doing damage to everyone near the target's appearance point.
      • -
      • Explosive Holoparasite bombs can now detonate when living mobs bump them.
      • -
      • Adds lightning holoparasites, which have medium damage resist, a weak attack, have a lightning chain to their summoner, and apply lightning chains when attacking targets.
      • -
      • Lightning chains shock everyone nearby, doing low burn damage. This is excluding the parasite and summoner; chains will shock enemies they're attached to.
      • -
      • Holoparasites can now smash tables and lockers.
      • -
      -

      PKPenguin321 && !JJRcop updated:

      -
        -
      • Milk, which is good for your bones, is now extra beneficial to species that are mostly comprised of bones.
      • -
      -

      kingofkosmos updated:

      -
        -
      • The backpack close-button has got a visual overhaul.
      • -
      • All storage items can be closed by clicking on them again.
      • -
      - -

      20 March 2016

      -

      Joan updated:

      -
        -
      • Nar-Sie will now corrupt airlocks, tables, windows, and windoors.
      • -
      • Corrupted airlocks have no access restrictions.
      • -
      • Nar-Sie no longer causes destruction while moving around in favor of additional corruption.
      • -
      • The surplus crate is less likely to give you eight space suits.
      • -
      • Nukeops can once again buy noslips. The nuke op magboots are still better than noslips, buy them instead.
      • -
      -

      Kor updated:

      -
        -
      • Runtime now has a chance to spawn with a more classic look.
      • -
      • Killing a necropolis tendril will now drop a chest full of spooky loot.
      • -
      • Killing a necropolis tendril will now cause the ground to collapse around it after 5 seconds.
      • -
      - -

      19 March 2016

      -

      Joan updated:

      -
        -
      • Xray lasers now have unique inhands.
      • -
      • Xray lasers have been recolored to match R&D equipment.
      • -
      -

      Zombehz updated:

      -
        -
      • Adds 'chicken' nuggets* in 4 shapes, including regular, star, corgi, and lizard. it. They are made with one cutlet of meat.
      • -
      - -

      17 March 2016

      -

      CoreOverload updated:

      -
        -
      • The recent jetpacks nerf is finally reverted. Turbo mode is dead and stabilization is once again can be toggled on and off.
      • -
      • Added a new chest cyberimplant: implantable thrusters set. This implant is a built-in jetpack that has no stabilization mode at all and can use gas from environment (if 30+ kPa) or from internals. It can also use plasma from plasma vessel organ, if you have one.
      • -
      -

      Joan updated:

      -
        -
      • Moved the security hud's icons down slightly to allow it to coexist with medical and antag huds.
      • -
      -

      Shadowlight213 updated:

      -
        -
      • HOG deity can now be heard by all of its followers!
      • -
      • The prophet no longer needs to wear his hat to speak with his deity.
      • -
      • The prophet's hat and staff have a new functionality! Use the staff inhand to reveal hidden structures.
      • -
      • Deities can now hide their structures from view! Pretend to be a book club when sec bursts in. experiment:Only enemy prophets or your own deity can reveal these structures and they are disabled when hidden.
      • -
      - -

      15 March 2016

      -

      Cuboos updated:

      -
        -
      • Modded the current door sound and added a few new ones, unique sound for closing, bolting up/down and a nifty denied sound.
      • -
      -

      Isratosh updated:

      -
        -
      • Security flashlights can now be attached to the bulletproof helmets.
      • -
      -

      Joan updated:

      -
        -
      • Resource blobs produce resources for their overmind slightly slower for each resource blob their overmind has.
      • -
      • Blob overminds get one free chemical reroll.
      • -
      • Blob overminds can no longer place resource and factory blobs out of range of cores and nodes, unless they Toggle Node Requirement off. It is on by default.
      • -
      • Blob UI buttons now have tooltips.
      • -
      • Cores and nodes will expand slightly slower.
      • -
      • Blob Chemicals no longer trigger effects on dead mobs.
      • -
      • Shifting Fragments has a lower chance to move shields with normal expansion and will no longer shift blobs to the location of a dying blob.
      • -
      • Flammable Goo no longer applies fire to tiles with blobs.
      • -
      • Electromagnetic Web has a slightly higher EMP range.
      • -
      -

      Kor updated:

      -
        -
      • Hunger was accidentally disabled sometime back in October 2015. We finally noticed and fixed it.
      • -
      -

      Kor (And all the lovely maintainers and spriters who helped me along the way) updated:

      -
        -
      • Adds a new, lava themed planet to mine on,with randomly generated rivers of lava and islands of volcanic rock. This mine is used on Box and Metastation. Other mappers may enable it at their discretion.
      • -
      • Added deadly ash storms to mining.
      • -
      • Added slightly deadlier variants of mining mobs to lavaland, with sprites done by my girlfriend.
      • -
      • Added portable survival capsules to mining equipment lockers. Don't forget these, or you might get caught out by a storm. You may purchase more at the venders.
      • -
      • Added randomly loaded ruins to mining. These maps contain new and unique items not seen elsewhere in thegame. There are around a dozen of them added with the "release" of lavaland, though I plan for many more.
      • -
      • Some ruins contain sleepers which allow you to spawn as various roles, such as survivors of a shuttle crash stranded in the wilderness. You can find these sleepers in the orbit list.
      • -
      • You can now fly the abandoned white ship to lavaland.
      • -
      -

      LanCartwright updated:

      -
        -
      • Choking now deals damage based on virus' Stage speed and virus Stealth.
      • -
      • Fever heats the body based on Transmittability and Stage speed.
      • -
      • Spontaneous Combustion now adjusts firestacks based on stage speed minus Stealth.
      • -
      • Necrotizing Fasciitis now deals damage based on lower Stealth values.
      • -
      • Toxic Filter now heals based on Stage speed.
      • -
      • Deoxyribonucleic Acid Restoration now heals brain damage based on Stage speed minus Stealth.
      • -
      • Shivering now chills based on Stealth and Resistance.
      • -
      • Proc for the total stage speed of a virus' symptoms.
      • -
      • Proc for the total stealth of a virus' symptoms.
      • -
      • Proc for the total resistance of a virus' symptoms.
      • -
      • Proc for the total transmittance speed of a virus' symptoms.
      • -
      -

      MrStonedOne updated:

      -
        -
      • Lag has been removed from the following systems: mob life()/virus process, machine/object/event processing, atmos, deletion subsystem, lighting, explosions, singularity's eat(), timers, wall smoothing, mass var edit, mass proc calls(and all of sdql2), map loader, and the away mission loader.
      • -
      • Removed limit on bomb cap of 32,64,128, it can now go to the MOON.
      • -
      • Minimap generation is now a config option that defaults to off so coders don't have to wait for it to generate to test their code, server operators should note that they need to enable it on production servers that want minimap generation.
      • -
      • if you find any things that still lag, please report them to MrStonedOne for lag removal.
      • -
      • I'm gonna take this time to shill out that, Lummox JR, byond's only dev, coded the tool that made this change possible, he lives off of byond membership donations, if you like the lag removal, become a byond member or at least throw 5 bucks byond's way for doing this.
      • -
      • Feel free to ask for bomb cap removals when solo antag, but remember, the later in the round it is, the more likely you'll get it.
      • -
      -

      PKPenguin321 updated:

      -
        -
      • Scooters and skateboards have been added.
      • -
      • Use rods to make a scooter frame. From there, apply metal to make wheels, creating a skateboard. Apply a few more rods to make a full scooter. You can also use tablecrafting to create them, their recipes can be found under the Misc. category.
      • -
      • Each step of scooter deconstruction is performed with either a wrench or a screwdriver, depending on the step.
      • -
      -

      xxalpha updated:

      -
        -
      • Scrubber clog event now ejects cockroaches.
      • -
      - -

      13 March 2016

      -

      Dorsisdwarf updated:

      -
        -
      • Adds Robo-Doctor board (The Hippocratic Oath: Now on your beepbot)
      • -
      • Adds Reporter board (The truth will set ye free (termsandconditionsmayapply))
      • -
      • Adds Live and Let Live board
      • -
      • Adds Thermodynamics as a dangerous board.
      • -
      -

      Impisi updated:

      -
        -
      • Improvised shells now deal more far more damage but are more inaccurate.
      • -
      • Overloaded shells now require liquid plasma in addition to black powder. Shells now fire explosive pellets that are good at hurting you and everything in front of you.
      • -
      -

      Joan updated:

      -
        -
      • Blob gamemode blobs will no longer burst from people.
      • -
      • Instead, the blob gamemode spawns overminds, which can place their blob core underneath them in an unobserved area.
      • -
      • The overminds can, until they have placed a blob core, move to any non-space, non-shuttle tile.
      • -
      • If the overminds fail to place a blob core within a time limit, it will be automatically placed for them at a random blob spawnpoint.
      • -
      • The time before the overmind automatically places the core is slightly lower than the previous average time it'd take a blob to burst.
      • -
      - -

      12 March 2016

      -

      Joan updated:

      -
        -
      • Blobbernauts and blob spores can now move near blob tiles in no gravity.
      • -
      • Boiling Oil does slightly more damage and takes slightly less damage when extinguished.
      • -
      • Flammable Goo now applies firestacks to targets, but does not ignite them.
      • -
      -

      Jordie0608 updated:

      -
        -
      • Show Server Revision will now tell you if a PR is test merged currently.
      • -
      -

      PKPenguin321 updated:

      -
        -
      • Added reinforced bolas. They do a very short stun in addition to normal functions, and take twice as long to break out of when compared to regular bolas.
      • -
      • The traitor's Throwing Star Box has been made into the Throwing Weapons Box. It now contains two reinforced bolas in addition to its old contents. It also costs 5 TCs, down from 6.
      • -
      -

      tkdrg updated:

      -
        -
      • The detective's revolver now takes three full seconds to reload.
      • -
      -

      xxalpha updated:

      -
        -
      • Detective can be a Traitor/Double Agent.
      • -
      • Removed Detective's access to security lockers and secbots.
      • -
      • Removed bowman's headset from Detective's locker.
      • -
      • Box Brig Security Office and Locker Room require a higher access level (Security Officer level).
      • -
      - -

      10 March 2016

      -

      Joan updated:

      -
        -
      • The blob can now be shocked by the tesla.
      • -
      • Strong blobs are now much more resistant to brute damage.
      • -
      • Tweaks blob reagents;
      • -
      • Removes Ripping Tendrils.
      • -
      • Removes Draining Spikes.
      • -
      • Cryogenic Liquid does less burn damage.
      • -
      • Pressurized Slime does less brute damage.
      • -
      • Reactive Gelatin now has a lower minimum damage.
      • -
      • Poisonous Strands applies its damage over a longer period of time.
      • -
      • Sporing Pods now does much less damage, and is less likely to produce spores when killed.
      • -
      • Regenerative Materia, Hallucinogenic Nectar, and Envenomed Filaments do less toxin damage.
      • -
      • Energized Fibers no longer heals when hit with stamina damage, and is instead immune to the tesla.
      • -
      • Boiling Oil now takes damage from extinguisher blasts. Boiling Oil blobbernauts, however, do not.
      • -
      • Replicating Foam now takes increased brute damage and when expanding from damage, will not expand again.
      • -
      • Flammable Goo takes 50% increased burn damage, from 30%.
      • -
      • Explosive Lattice now takes much higher damage from fire, flashbangs, and the tesla.
      • -
      • Electromagnetic Web takes full brute damage, lasers will now one-hit normal blobs, and the death EMP is smaller.
      • -
      - -

      09 March 2016

      -

      Joan updated:

      -
        -
      • Blobs can now attack people that end up on top of blob tiles with Left-Click or the Expand/Attack Blob verb.
      • -
      • The Toxin Filter virology symptom now heals 4-8 toxin damage instead of 8-14.
      • -
      • The Damage Converter virology symptom will now do toxin damage for each limb healed.
      • -
      -

      MrStonedOne updated:

      -
        -
      • Centcom has improved the the tesla generator! The generated tesla energy balls should now be more stable! Growing quicker and dissipating slower. It seems to also move around a touch more but that shouldn't be an issue as the the tesla escaping containment is unheard of!
      • -
      - -

      07 March 2016

      -

      WJohnston updated:

      -
        -
      • Queens and praetorians have new sprites!
      • -
      - -

      05 March 2016

      -

      CoreOverload updated:

      -
        -
      • Cyborg tools (screwdriver, crowbar, wrench, etc) now have new fancy sprites.
      • -
      • Said cyborg tools have received a buff and are now two times faster than their non-cyborg counterparts.
      • -
      -

      Joan updated:

      -
        -
      • Replicating Foam has lower expand chances when hit and on normal expand.
      • -
      • Shifting Fragments will no longer try and fail to swap with invalid blobs when hit.
      • -
      • Electromagnetic Web no longer always EMPs targets, instead doing it at a 25% chance.
      • -
      • Synchronous Mesh now only takes bonus damage from fire, bombs, and flashbangs.
      • -
      • Synchronous Mesh no longer tries to split damage to blob cores or nodes. Cores and nodes still split damage to nearby blobs, however.
      • -
      • Blobbernauts now attack much slower.
      • -
      • Blobbernauts are now maximum one per factory, reduce that factory's health drastically, and die slowly if that factory is destroyed.
      • -
      • Factories must still have above 50% health to produce blobbernauts.
      • -
      - -

      03 March 2016

      -

      Joan updated:

      -
        -
      • Blobbernauts now die slowly when not near a blob.
      • -
      • Blobbernauts can now see their health and the core health of the overmind that created them.
      • -
      - -

      02 March 2016

      -

      CoreOverload updated:

      -
        -
      • A new "breathing tube" mouth implant. It allows you to use internals without a mask and protects you from being choked. It doesn't protect you from the grab itself.
      • -
      • Arm cannon implants are now actually implanted into the arms, not into the chest.
      • -
      • Arm cannons have an action button again.
      • -
      • Heart removal is no longer instakill. It puts you in condition similar to heart attack instead. You can fix it by installing a new heart and applying defibrillator if it wasn't beating.
      • -
      • You can now make a stopped heart beat again by squeezing it. It will stop beating very soon, so you better be quick if you want to install it without using defibrillator.
      • -
      • There is now a chance to recover some of the internal organs when butchering aliens or monkeys.
      • -
      • A new organ - lungs. When removed, it will give you breathing and speaking troubles.
      • -
      • Human burgers are, once again, named after the generous meat donors that made them possible.
      • -
      -

      Fox McCloud updated:

      -
        -
      • Gibbing mobs will now throw their internal organs
      • -
      -

      Gun Hog updated:

      -
        -
      • Ghost security HUDs now show arrest status and implants.
      • -
      • The Alien queen, upon her death, will now severely weaken the remaining alien forces.
      • -
      -

      Joan updated:

      -
        -
      • Replicating Foam has a lower chance to expand when hit.
      • -
      • Penetrating Spines is now purple instead of sea green.
      • -
      • Blobbernauts now have a brief animation when produced.
      • -
      • Adds five new blob chemicals. This is a total of 25 blob chemicals. Will it ever stop?
      • -
      • Draining Spikes, which is reddish pink and does medium brute damage, and drains blood from targets.
      • -
      • Shifting Fragments, which is tan and does medium brute damage, and shifts position when attacked.
      • -
      • Flammable Goo, which is reddish orange and does low burn and toxin damage, and when hit with burn damage, emits a burst of flame. It takes more damage from burn, though.
      • -
      • Poisonous Strands, which is lavender and does burn, fire, and toxin damage over a few seconds, instead of instantly.
      • -
      • Adaptive Nexuses, which is dark blue and does medium brute damage, and reaps 5-10 resources from unconscious humans, killing them in the process.
      • -
      • Confused about what the chemical you're fighting does? Look at https://tgstation13.org/wiki/Blob#Blob_Chemicals
      • -
      • Adds 'Support and Mechanized Exosuits' and 'Space Suits and Hardsuits' categories to the syndicate uplink.
      • -
      • Nuke op reinforcements and mechs have been moved to the first category. Syndicate space suits and hardsuits have been moved to the second category.
      • -
      • Traitors can now properly buy the blood-red hardsuit for 8 TC.
      • -
      • Nuke ops can no longer buy the blood-red hardsuit, as the elite hardsuit costs the same amount while being absolutely better.
      • -
      -

      Kor updated:

      -
        -
      • Added door control remotes. Clicking on doors while holding them will let you open/bolt/toggle emergency access depending on the mode. They will not work on doors that have their IDscan disabled (rogue AIs take note!)
      • -
      • The Captain, RD, CE, HoS, CMO, and QM all now have door control remotes in their lockers.
      • -
      -

      LanCartwright updated:

      -
        -
      • Adds Uranium to Virus reaction. Will create a random symptom between 5 and 6 when mixed with blood.
      • -
      • Adds Virus rations, which creates a level 1 symptom when mixed with blood.
      • -
      • Adds Mutagenic agar, which creates a level 3 symptom.
      • -
      • Adds Sucrose agar which creates a level 4 symptom.
      • -
      • Adds Weak virus plasma, which creates a level 5 symptom.
      • -
      • Adds Virus plasma, which creates a level 6 symptom.
      • -
      • Adds Virus food and Mutagen reaction, creating Mutagenic agar.
      • -
      • Adds Virus food and Synaptizine reaction, creating Virus rations.
      • -
      • Adds Virus food and Plasma reaction, creating Virus plasma.
      • -
      • Adds Synaptizine and Virus plasma reaction, creating weakened virus plasma.
      • -
      • Adds Sugar and Mutagenic agar reaction, creating sucrose agar.
      • -
      • Adds Saline glucose solution and Mutagenic agar reaction, creating sucrose agar.
      • -
      • Adds Viral self-adaptation symptom, which boosts stealth and resistance, but lowers stage speed.
      • -
      • Adds Viral evolutionary acceleration, which bosts stage speed and transmittability, but lowers stealth and resistance.
      • -
      • Flypeople now vomit when they eat nutriment.
      • -
      • Flypeople can now suck the vomit off the floor to gain it's nutritional content.
      • -
      • Flypeople now must suck puke chunks and vomit to fill themselves of food content.
      • -
      -

      Malkevin updated:

      -
        -
      • Sec officers have two sets of cuffs again (one on spawn, one in locker)
      • -
      • Done some optimisation of sec spawn equipment lists and lockers to remove some of the repetitive clicking, sec belts are now preloaded with equipment.
      • -
      • HoS has a full baton instead of the collapsible one
      • -
      • Detective has a classic police baton and pepper spray instead of the collapsible baton (someone made police batons shit, so don't get overly happy)
      • -
      • pop scaled additional lockers spawned were the wrong type, changed them to the right type which has batons now (actually belts now that I've changed them).
      • -
      -

      MrStonedOne updated:

      -
        -
      • Suit sensors will now favor higher levels for starting amount with the exception of the max level, that remains unchanged.
      • -
      • Old odds: 25% off 25% binary lifesigns 25% full lifesigns 25% coordinates
      • -
      • New odds: 12.5% off 25% binary lifesigns 37.5% full lifesigns 25% coordinates
      • -
      -

      PKPenguin321 updated:

      -
        -
      • Bolas are now in the game. They're a simple device fashioned from a cable and two weights on the end, designed to entangle enemies by wrapping around their legs upon being thrown at them. The victim can remove them rather quickly, however.
      • -
      • Bolas can be crafted by applying 6 metal sheets to cablecuffs. They can also be tablecrafted.
      • -
      -

      Sestren413 updated:

      -
        -
      • Botanists have access to a new banana mutation now, bluespace bananas. These will teleport anyone unfortunate enough to slip on their peel.
      • -
      -

      Shadowlight213 updated:

      -
        -
      • A wave of dark energy has been detected in the area. Corgi births may be affected.
      • -
      -

      Shadowlight213 and Robustin updated:

      -
        -
      • "Old Cult is back baby!"
      • -
      • "Cult survival objective disabled"
      • -
      • "Imbuing talismans now consumes the imbue rune"
      • -
      • "Invoking the stun talisman now hurts the cultist more"
      • -
      • "The stun talisman duration is nerfed by 10%, mute is nerfed by 60% but a stutter and special new slur effect will last much longer"
      • -
      • "The old cult has retained the rune of time stop, now requiring 3 cultists to invoke"
      • -
      • "New Cult is removed!"
      • -
      -

      bgobandit updated:

      -
        -
      • CentComm has been informed that cargo is receiving new forms of contraband in crates. Remember, Nanotrasen has a zero-tolerance contraband policy!
      • -
      -

      lordpidey updated:

      -
        -
      • New virology symptom, projectile vomiting. It is a level four symptom.
      • -
      - -

      26 February 2016

      -

      Iamgoofball updated:

      -
        -
      • Adds the Chameleon Kit to uplinks for 4 telecrystals containing a Chameleon Jumpsuit/Exosuit/Gloves/Shoes/Glasses/Hat/Mask/Backpack/Radio/Stamp/Gun/PDA.
      • -
      • The chameleon gun fires no-damage lasers regardless of what it looks like.
      • -
      • The Voice Changer has been merged into the Chameleon Mask.
      • -
      • No-slip shoes have been combined into Chameleon Shoes.
      • -
      • Space Ninjas no longer have voice changing capabilities.
      • -
      • The Chameleon Jumpsuit has been replaced by the Chameleon Kit in the uplink for the same price.
      • -
      • All chameleon clothing items have lost EMP vulnerability.
      • -
      • Chameleon equipment provides very minor armor.
      • -
      • Agent ID Cards can now use chameleon technology to look like any other ID card.
      • -
      • The Chameleon Kit is actually purchasable now. It doesn't give a single chameleon jumpsuit anymore.
      • -
      -

      PKPenguin321 updated:

      -
        -
      • The kitchen vendor now contains two sharpening blocks.
      • -
      • Only items that are already sharp (such as fire axes, knives, etc) can be sharpened. Items used on sharpening blocks become sharper and deadlier. The sharpening blocks themselves can only be used once, and you can only sharpen items once.
      • -
      • The EMP kit has been buffed. It now contains five EMP grenades, up from two.
      • -
      • The EMP implant found in the EMP kit has been buffed. It now has three uses, up from two.
      • -
      - -

      24 February 2016

      -

      CPTANT updated:

      -
        -
      • stamina regeneration is now 50% faster.
      • -
      -

      Joan updated:

      -
        -
      • Revenants now have an essence display on their HUD
      • -
      • Revenants retain the essence cap from the previous revenant when reforming, minus any perfect souls.
      • -
      • Revenants can now toggle their night vision.
      • -
      • Revenant Defile has one tile more of range, but does less damage to windows.
      • -
      • Revenant Blight kills space vines and glowshrooms slightly more rapidly.
      • -
      • Delays before appearing when harvesting are slightly randomized.
      • -
      • Revenant fluff objectives have been changed to be slightly more interesting.
      • -
      -

      RemieRichards updated:

      -
        -
      • Cursed heart item for wizards, allows them to heal themselves in exchange for having to MANUALLY beat their heart every 6 seconds. Heals 25 brute/burn/oxy damage per correctly timed pump.
      • -
      -

      Steelpoint updated:

      -
        -
      • Syndicate engineers have reinforced the exterior of their stealth attack ships. Nuclear Operative ship hull walls are now, once again, indestructible.
      • -
      • In addition Syndicate engineers had the opportunity to revamp the interior of stealth attack ships. The inside of Op ships now has a slightly new layout, including a expanded medbay, as well as additional medical and explosive equipment.
      • -
      • Thanks to covert Syndicate operatives, strike teams can now bring the stealth attack ship within very close proximity to the station codenamed 'Boxstation'. A new ship destination labeled 'south maintenance airlock' is now available to Op strike teams.
      • -
      -

      phil235 updated:

      -
        -
      • Holo tape is replaced by holo barriers.
      • -
      • The action button of gas tanks and jetpacks now turn green when you turn your internals on.
      • -
      - -

      20 February 2016

      -

      CPTANT updated:

      -
        -
      • Due to new crystals Nanotrasen lasers weapons may now set you on FIRE.
      • -
      -

      Joan updated:

      -
        -
      • Blobbernauts and blob spores now have a visual healing effect when being healed by the blob.
      • -
      -

      xxalpha updated:

      -
        -
      • New event: Portal Storm.
      • -
      • Kinetic accelerators now reload automatically.
      • -
      - -

      19 February 2016

      -

      AnturK updated:

      -
        -
      • Chairs and stools can now be picked up and used as weapons by dragging them over your character.
      • -
      -

      PKPenguin321 updated:

      -
        -
      • The cleanbot uprising has begun.
      • -
      • Emagged cleanbots are much scarier now. Standing on top of one will yield very devastating results, namely in the form of powerful flesh-eating acid.
      • -
      - -

      18 February 2016

      -

      Kor updated:

      -
        -
      • Four more chaplain weapon options have been added: hanzo steel, light energy sword, dark energy sword, and monk's staff.
      • -
      - -

      17 February 2016

      -

      Fox McCloud updated:

      -
        -
      • Laser eyes mutation no longer drains nutrition
      • -
      -

      Joan updated:

      -
        -
      • The sleeping carp gang no longer has special equipment and an inability to use pneumatic cannons.
      • -
      -

      PKPenguin321 updated:

      -
        -
      • The traitor surgery bag now costs 3 TC, down from 4.
      • -
      -

      Zerrien updated:

      -
        -
      • adds unique icons for the two medical patch types
      • -
      - -

      14 February 2016

      -

      Joan updated:

      -
        -
      • Blobbernauts can now speak to overminds and other blobbernauts with :b
      • -
      • Blobs can now expand onto lattices and catwalks.
      • -
      • Blob expansion on space tiles with no supports is much slower.
      • -
      • Blob Sorium and Dark Matter now have less range on targets with bio protection.
      • -
      • Blob Sorium does slightly less damage.
      • -
      - -

      13 February 2016

      -

      Buggy123 updated:

      -
        -
      • You can now build cable coils using the autolathe.
      • -
      -

      Fox McCloud updated:

      -
        -
      • Fixes the sleeping carp martial arts grab not being an instant aggressive grab
      • -
      -

      KazeEspada updated:

      -
        -
      • New backpack options available! New options include: Department Bags, Leather Satchels, and Dufflebags!
      • -
      -

      Kor updated:

      -
        -
      • Chainsaw sword, force weapon, and war hammer have all been added as Chaplain weapon options.
      • -
      -

      Malkevin updated:

      -
        -
      • Tracking implants have been upgraded. The old clunky manually adjusted number system has been replaced with an automated ID scanner, this will show the implant carrier's name on both the Prisoner Management Console and the hand tracker. Happy deep striking!
      • -
      -

      PKPenguin321 updated:

      -
        -
      • Traitor EMP kits have had their cost reduced from 5 to 2, and no longer contain the EMP flashlight. rcsadd: EMP flashlights can now be bought separately for 2 TCs.
      • -
      -

      Zerrien updated:

      -
        -
      • Conveyor pieces can be placed as corner pieces when building in non-cardinal directions.
      • -
      • Using a wrench on a conveyor rotates it while in place.
      • -
      -

      neersighted updated:

      -
        -
      • Gibtonite can now be pulled.
      • -
      • Slowdown factors are ignored when in zero gravity.
      • -
      -

      phil235 updated:

      -
        -
      • Brains can no longer be blinded.
      • -
      • Fixes brain being immortal. They are immune to everything but melee weapon attacks. Brains not inside a MMI can now be attacked just like MMIs. Damaged brain can't be put into a robot, they can still be put inside a brainless humanoid corpse and cloned, but deffibing the corpse always fails (can't revive someone with a brain beaten to a pulp).
      • -
      - -

      12 February 2016

      -

      Kor updated:

      -
        -
      • Malf AIs can now get the objective to have a robot army by the end of the round.
      • -
      • Malf AIs can now get the objective to ensure only human crew (no mutants) are on the shuttle at round end.
      • -
      • Malf AIs can now get the objective to prevent a crewmember from escaping the station, while requiring that crewmember still be alive.
      • -
      -

      neersighted updated:

      -
        -
      • Cybernetic implants purchased from the uplink now include a free autoimplanter!
      • -
      -

      octareenroon91 updated:

      -
        -
      • You can no longer kill yourself with the SORD
      • -
      • Suicide attempts with the SORD will inflict 200 stamina damage. You will only die of shame.
      • -
      • Cleanup to suicide verb code.
      • -
      - -

      11 February 2016

      -

      neersighted updated:

      -
        -
      • Remove all cyborg jetpacks... They were awful...
      • -
      • Adds borg ion thrusters, which are available as an upgrade module for any borg.
      • -
      • Jetpack stabilizers are always on, but now we have...
      • -
      • Jetpack turbo mode, to move at sanic speed in space.
      • -
      - -

      10 February 2016

      -

      Joan updated:

      -
        -
      • Blob mobs now heal for 2.5% of their maxhealth when blob_act()ed, basically whenever they're on blobs near a node or the core.
      • -
      • Blob expansion no longer has a chance to fail inversely proportional with the expanding blob's health. Blobs still, however, expand at roughly the same rate as they do currently.
      • -
      • Adds five new blob chemicals.
      • -
      • Adds Penetrating Spines, which is sea green and does brute damage through armor. The damage can still be reduced by bio protection.
      • -
      • Adds Explosive Lattice, which is dark orange and does brute damage to all mobs near the target. Explosive Lattice is very resistant to explosions.
      • -
      • Adds Cyclonic Grid, which is a light blueish green and does oxygen damage, in addition to randomly throwing or pulling nearby objects.
      • -
      • Adds Zombifying Feelers, which is a fleshy zombie color and does toxin damage, in addition to killing and reviving unconscious humans as blob zombies.
      • -
      • Adds Regenerative Materia, which is light pink and does toxin damage, in addition to making the attacked mob think it is at full health.
      • -
      • Tweaks some of the existing blob chemicals slightly.
      • -
      • Sporing Pods can produce spores when killed by damage less than 21, from less than 20. This means lasers can produce spores.
      • -
      • Reactive Gelatin has a slightly higher maximum damage and will attack the nearby area when hit with brute damage projectiles, from just when attacked by brute damage in melee.
      • -
      • Sorium, Dark Matter, and the new Cyclonic Grid will not throw mobs with the 'blob' faction, such as blobbernauts and spores.
      • -
      -

      Kor updated:

      -
        -
      • The chaplain can now transform the null rod into a holy weapon of his choice by using it in hand. Each one has different strengths and drawbacks.
      • -
      -

      MrStonedOne updated:

      -
        -
      • Tesla balance changes
      • -
      • Tesla will now require increasingly more energy to trigger new orbiting balls. First ball comes with 32 energy (down from 300), fourth requires 256 (down from 1200), and so on and on, doubling with each new ball. Balls after 7 are increasingly harder to get than before, whereas balls before 6 are easier to get.
      • -
      • MULTIBOLT IS BACK!
      • -
      • Be warned that in multibolt all but 1 primary bolt now have a random shocking range, meaning they may still target a close human over a far away grounding rod as the rod may be out of range.
      • -
      • Power output of tesla massively dropped, it should no longer put out almost twice the power of a stage 3 singulo with maxed collectors without any balls, you'll need at least 3 balls for that now.
      • -
      • Tesla can now lose power, causing ball count to drop. Tesla will never shrink out of existence, just lose its balls.
      • -
      • Tesla is now more likely to head in the direction of the thing it last zapped.
      • -
      -

      PKPenguin321 updated:

      -
        -
      • Chameleon Jumpsuits now have slight melee, bullet, and laser protection.
      • -
      • The armor values for security helmets, caps, and berets have all been brought in line. Consequently, helmets and berets are a teeny bit better, and caps now have the slight bomb protection that the other two had.
      • -
      • The time needed to complete most tablecrafting recipes has been cut in half to make tablecrafting less annoying to use.
      • -
      -

      Shadowlight213 updated:

      -
        -
      • pAI controlled mulebots can now run people over.
      • -
      • Mulebot health has been greatly decreased.
      • -
      -

      neersighted updated:

      -
        -
      • Horizontal (lying) mobs now fit into crates
      • -
      • Mobs may now be stuffed into crates, as with lockers
      • -
      • Stuffing into a locker deals a mild stun (the same as tabling)
      • -
      -

      octareenroon91 updated:

      -
        -
      • New designs can now be added to Autolathes via a design disk. Simply use a disk containing a suitable design on your autolathe.
      • -
      - -

      09 February 2016

      -

      AnturK updated:

      -
        -
      • Syndicate Operatives can now buy bags full of plastic explosives for 9 TC.
      • -
      -

      Gun Hog updated:

      -
        -
      • "Nanotrasen has drafted a design for an exosuit version of the medical nanite projector normally issued to its Emergency Response Personnel. With sufficient research, a prototype may be fabricated for field testing!"
      • -
      -

      incoming5643 updated:

      -
        -
      • The wizard spell wild shapeshift has been made less terrible.
      • -
      -

      neersighted updated:

      -
        -
      • Internals tanks now provide an action button
      • -
      • Jetpacks now emit the gas consumed for propulsion onto their turf
      • -
      • Jetpacks no longer have object verbs
      • -
      • tgui no longer has internals buttons
      • -
      • Malf AI's flood ability now correctly sets vent pressure bounds -- the results are devastating... Try it!
      • -
      - -

      08 February 2016

      -

      Incoming5643 updated:

      -
        -
      • Poly will now speak a line or emote when pet.
      • -
      • Poly now responds to getting fed crackers by becoming more annoying for the round.
      • -
      • Every day he is growing stronger
      • -
      -

      Kor updated:

      -
        -
      • A certain hygiene obsessed alien is now obtainable via xenobiology gold cores.
      • -
      • Add laserguns with swappable, rechargeable magazines. They are adminspawn only.
      • -
      • Operatives now get their pinpointers in their pocket when they spawn, meaning reinforcements automatically come with them (and hopefully people stop forgetting them in general).
      • -
      • Capture the flag now features a high speed instagib mode, with guns courtesy of MMMiracles.
      • -
      -

      phil235 updated:

      -
        -
      • The vision updates for mobs are now instantaneous (e.g. you don't have to wait one second to see again when removing your welding helmet)
      • -
      • Your vision is now affected when you're inside something or viewing through a camera. You can no longer see mobs or objects when ventcrawling (unless you have xray for example), an xray user viewing through a camera do not see through walls around the camera. On the other hand, cameras with an xray upgrade let you see through walls. Unfocused camera now give you the same effect as when you are nearsighted. Being inside closets, morgue container and disposal bins give you some vision impairments.
      • -
      • The ability to toggle your hud on and off (with f12) is now available to all mobs not just humans.
      • -
      - -

      06 February 2016

      -

      LordPidey updated:

      -
        -
      • Added suicide command for pipe valves. It's quite messy.
      • -
      -

      Lzimann updated:

      -
        -
      • Combat Mechas now have a increased chance of destroying a wall with punches (40% for walls and 20% for reinforced walls)!
      • -
      • Combat mechas can now destroy tables and racks with a punch!
      • -
      -

      neersighted updated:

      -
        -
      • The Syndicate has stolen the latest tgui improvements from Nanotrasen! All uplinks now feature filtering/search.
      • -
      • Nanotrasen is proud to announce its next generation sleepers, featuring tgui!
      • -
      • Portable atmospheric components have been overhauled to use the latest interface technology.
      • -
      • The Area Atmosphere Computer has been removed.
      • -
      • Huge scrubbers now require power.
      • -
      • Borg jetpacks are now refilled from a recharger and not a canister.
      • -
      • Power monitors now have a state of the art graph. Hopefully they're actually useful to someone.
      • -
      • Cargo consoles have been redesigned and now feature search and a shopping cart!
      • -
      - -

      05 February 2016

      -

      Joan updated:

      -
        -
      • Blob expansion is faster near the expanding blob, but slower further away from it.
      • -
      • Blob spores produce a slightly larger smoke cloud when dying. Sporing Pods spores and blob zombies produce the current small cloud.
      • -
      • Blobbernauts can no longer pull anything at all.
      • -
      • Blobbernauts health reduced to 200, but blobbernauts now take half brute damage.
      • -
      • Blobbernauts now take massive damage from fire.
      • -
      • Blobbernauts do approximately 3 more damage when attacking.
      • -
      • Replicating Foam will expand more actively when damaged.
      • -
      • Adds Electromagnetic Web, which is light blue, does burn damage and EMPs targets, and causes a small EMP when dying.
      • -
      • Electromagnetic Web takes more damage; a normal blob that hasn't been near a node or the core for 6~ seconds can be oneshotted by a laser.
      • -
      • Anomalies, such as pyroclastic and vortex anomalies, now appear at the bottom of the ghost orbit and observe menus.
      • -
      -

      Kor updated:

      -
        -
      • Nuke ops can purchase sentience potions for 4tc
      • -
      -

      MMMiracles updated:

      -
        -
      • Bulldog now starts with stun-slugs instead of its usual 60-brute slugs. Slugs now cost 3 TC instead of 2.
      • -
      • Most SAW ammo has been slightly buffed in damage so maybe it'll be worth buying now along with a slight cost decrease for the gun itself.
      • -
      • Incen shells for the shotgun now apply extra firestacks on hit so it actually sets people on fire instead of turning them into a light show.
      • -
      • Incen rounds for the SAW now leave a fire trail similar to the bulldog's dragonsbreath round.
      • -
      • Nuke Ops now have the ability to purchase breaching shells, a weaker variant of the meteorslugs that can still push back people/airlocks/mechs/corgis.
      • -
      • SAW should now use its in-hand sprites for an open-closed magazine
      • -
      -

      PKPenguin321 updated:

      -
        -
      • You can now sharpen carrots into shivs by using a knife or hatchet on them.
      • -
      -

      bgobandit updated:

      -
        -
      • Seven new emoji have been added to hasten the death of the English language.
      • -
      -

      octareenroon91 updated:

      -
        -
      • Player-controlled medibots can examine a patient to know what chems are in the patient's body.
      • -
      • autolathes have been showing extra copies of the hacked designs, but no more.
      • -
      - -

      01 February 2016

      -

      Erwgd updated:

      -
        -
      • The Kitchen Vending machine now stocks salt shakers and pepper mills!
      • -
      • The NutriMax now stocks spades, cultivators and plant analyzers.
      • -
      • Rice seeds are now stocked in the MegaSeed Servitor, and the seeds supply crate now contains a pack of rice seeds.
      • -
      • Botanists should be aware that wheat stalks can no longer mutate into rice.
      • -
      -

      Fayrik updated:

      -
        -
      • pAI cards can now be inserted into simple robots, to allow for more robust robot personalities.
      • -
      -

      PKPenguin321 updated:

      -
        -
      • You can now store knives, pens, switchblades, and energy daggers in certain types of shoes (such as jackboots, workboots, winter boots, combat boots, or no-slips).
      • -
      • Horns can now be stored in clown shoes. Honk.
      • -
      -

      TrustyGun updated:

      -
        -
      • Adds gag handcuffs to the prize pool for arcade machines. They act like regular handcuffs, but you break out of them in a second.
      • -
      -

      WJohnston updated:

      -
        -
      • Adds missing booze & soda dispenser, library console, fixes door access and a few other minor things to Efficiency Station
      • -
      • Also adds direction tags so people can find their way around better.
      • -
      -

      bgobandit updated:

      -
        -
      • On Valentine's Day, all spacemen will receive candy hearts and valentines for their special someones! Label valentines with a pen.
      • -
      • Note that today is not Valentine's Day.
      • -
      - -

      31 January 2016

      -

      Kor updated:

      -
        -
      • Added a special AI upgrade disk that allows normal AIs to use malf modules and hack APCs. It is admin only.
      • -
      • Added an AI upgrade disk that grants AIs the lipreading power. It is admin only.
      • -
      - -

      30 January 2016

      -

      Boredone updated:

      -
        -
      • Due to an experiment gone wrong, the Research Director's Teleport Armor now causes some mild radiation poisoning on teleportation to the wearer.
      • -
      -

      Francinum updated:

      -
        -
      • Added two new female underwear styles.
      • -
      -

      Kor updated:

      -
        -
      • You can now use the abandoned white ship as an escape route at round end. This is possible on Box, Meta, and Dream.
      • -
      • Added support so that mappers can make any shuttle function as an escape shuttle.
      • -
      -

      MMMiracles updated:

      -
        -
      • Three new bra sets have been added for the ladies out there who want to show their patriotism.
      • -
      -

      xxalpha updated:

      -
        -
      • Blueprints will now allow the expansion of an existing area by giving its name to a new adjacent area.
      • -
      • Added a no power warning cyborg verb to Robot Commands.
      • -
      - -

      29 January 2016

      -

      Joan updated:

      -
        -
      • Holoparasites can now see their summoner's health at all times. The health displayed is a percentage, with 0 being dead.
      • -
      • Holoparasites now have visual flashes on the summoner's location when recalled due to range limits and when manifesting.
      • -
      -

      Kor updated:

      -
        -
      • Red xenobio potions now work on vehicles (janitor cart, ATV, secway, etc), causing them to go faster.
      • -
      • Stuffing people in bins uses clickdrag instead of grab.
      • -
      - -

      28 January 2016

      -

      Joan updated:

      -
        -
      • Blobs can communicate before bursting to allow for more coordination.
      • -
      -

      Kor updated:

      -
        -
      • Butchering mobs by attacking them with sharp objects will only happen on harm intent. This means it is possible to do surgery on aliens again.
      • -
      - -

      27 January 2016

      -

      Joan updated:

      -
        -
      • Golems have about a 40% chance to stun with punches, from about 60%.
      • -
      • Millitary Synths have about a 50% chance to stun with punches, from literally 100%.
      • -
      • Blobbernaut creation costs 30 points, and does much more damage to the factory.
      • -
      • Blob factories regenerate at half normal rate.
      • -
      • Blob reagents tweaked;
      • -
      • Ripping Tendrils does slightly more brute damage, but less stamina damage.
      • -
      • Lexorin Jelly does less brute damage.
      • -
      • Energized Fibers does slightly more burn damage.
      • -
      • Sporing Pods does slightly more toxin damage.
      • -
      • Replicating Foam will try to replicate when hit more often.
      • -
      • Hallucinogenic Nectar does slightly more toxin damage and causes hallucinations for longer.
      • -
      • Cryogenic Liquid does more burn damage.
      • -
      • Synchronous Mesh does slightly less damage with one blob but massive damage with more than one nearby blob.
      • -
      • Dark Matter does less brute damage.
      • -
      • Sorium does slightly less brute damage.
      • -
      • Pressurized Slime has a lower chance to emit water when killed and when attacking targets.
      • -
      • Supermatter explosion is no longer capped, and under normal conditions will produce a 8/16/24 explosion when delaminating.
      • -
      • Blob tiles now do an attack animation when failing to expand into a turf.
      • -
      • Overmind-directed expansion is more visible than automatic expansion.
      • -
      -

      Kor updated:

      -
        -
      • Capture the flag has been added in space near central command. The spawners are disabled by default, so be sure to harass admins when you die until they let you play. The arena was mapped by Ausops.
      • -
      • Nuke ops can purchase mosin nagants for 2 telecrystals.
      • -
      -

      MrStonedOne updated:

      -
        -
      • Fixes the powersink drawing less power than the smeses put out.
      • -
      • Made the powersink hold significantly more power before overloading and going boom.
      • -
      • Buffed the explosion of the power sink when it overloads. You are suggested to think twice about wiring the engine to the grid.
      • -
      -

      PKPenguin321 updated:

      -
        -
      • The Autoimplanter, a device that can insert cyberimplants into humans instantly and without the need of surgery, has been added to the game. It is currently only obtainable by nuke ops, by way of being included in the Box of Implants.
      • -
      - -

      23 January 2016

      -

      neersighted updated:

      -
        -
      • Refactor wires; port wire interface to tgui.
      • -
      • Wire colors are now fully randomized.
      • -
      • Remove pizza bombs, as the code and sprites were terrible.
      • -
      • Add pizza bomb cores, which can be combined with a pizza box to make a pizza bomb.
      • -
      -

      octareenroon91 updated:

      -
        -
      • Chemistry machinery should now all equally accept beakers, drinking glasses, etc.
      • -
      - -

      19 January 2016

      -

      neersighted updated:

      -
        -
      • Many many interfaces have been ported to tgui; uplinks and MULEbots being the most important
      • -
      • You can now tune radios by entering a frequency
      • -
      • Air Alarms now support any gas
      • -
      - -

      17 January 2016

      -

      Joan updated:

      -
        -
      • You can once again repair a hacked APC by using an APC frame on it instead of welding it off the wall, at the same stage as you'd weld it off the wall.
      • -
      -

      MrStonedOne updated:

      -
        -
      • Control clicking on a turf now un-pulls
      • -
      - -

      16 January 2016

      -

      Joan updated:

      -
        -
      • Alien queens and praetorians have suitably large speechbubbles.
      • -
      • Syndicate cyborgs and syndrones have suitably evil robotic speechbubbles.
      • -
      • Blob mobs have suitably uncomfortable-looking speechbubbles.
      • -
      • Holoparasites and guardians have suitably robotic and magical speechbubbles.
      • -
      • Swarmers have suitably holographic speechbubbles.
      • -
      • Slimes have suitably slimy speechbubbles.
      • -
      - -

      15 January 2016

      -

      Joan updated:

      -
        -
      • Holoparasites can no longer beat their owner to death while inside of them.
      • -
      • Updates traitor holoparasite descriptions for accuracy.
      • -
      • Adds 8 additional silvery metals to the holoparasite name pool.
      • -
      • Adds two new holoparasite colors, light purple and red.
      • -
      • Holoparasite HUD buttons now have new sprites.
      • -
      • Adds glow effects when guardians teleport or recall, including fire guardian teleporting and support guardian teleporting.
      • -
      -

      Kor updated:

      -
        -
      • Washing machines are activated via alt+click rather than a right click verb.
      • -
      - -

      13 January 2016

      -

      Joan updated:

      -
        -
      • Alien whisper ability has a new icon
      • -
      -

      MrStonedOne updated:

      -
        -
      • Control clicking on the thing you are pulling will no longer unpull, instead control clicking on anything too far away to be pulled will unpull. (reminder that the delete key also unpulls)
      • -
      -

      OneArmedYeti updated:

      -
        -
      • To help with colorblindness, gang HUDs have been changed so leaders have a border and normal gangster icons are smaller.
      • -
      - -

      11 January 2016

      -

      Joan updated:

      -
        -
      • Blob cores and nodes no longer cause normal pulsed blobs to animate. Factories and resource nodes will still animate.
      • -
      • Holoparasite sprites have been updated again, are now named after silvery metals and flowers and can also be colored purple, blue or yellow.
      • -
      -

      xxalpha updated:

      -
        -
      • Pipes and cables under walls, intact floors, grilles and reinforced windows will now be shielded from explosions until exposed.
      • -
      - -

      09 January 2016

      -

      Wjohnston updated:

      -
        -
      • AI Satellite has been remapped to make it more secure.
      • -
      - -

      07 January 2016

      -

      KorPhaeron updated:

      -
        -
      • Doubled cost of Lesser Summon Guns to 4 and increased charge time to 75 seconds.
      • -
      -

      TrustyGun updated:

      -
        -
      • Added two new UI styles: black and green Operative and pale green Slimecore.
      • -
      - -

      02 January 2016

      -

      Kor updated:

      -
        -
      • Guardians/Parasites are now named after constellations, and have new sprites from Ausops.
      • -
      -

      Kor and GunHog updated:

      -
        -
      • Malfunctioning AIs can now purchase Enhanced Surveillance for 30 points, which allows them to "hear" with their camera eye.
      • -
      -

      MMMiracles updated:

      -
        -
      • A distress signal was recently discovered with gateway coordinates attached to a far-off research facility owned by Nanotrasen. The signal was sent out in hopes of someone competent receiving it, unfortunately, your station was the only one to respond. Local security forces may not be welcoming your arrival group with open arms.
      • -
      - -

      01 January 2016

      -

      Iamgoofball updated:

      -
        -
      • Redid how objectives are assigned, they're now a lot more random in terms of what you can get.
      • -
      -

      Incoming5643 updated:

      -
        -
      • Removed gender restrictions from socks.
      • -
      -

      Joan updated:

      -
        -
      • Storage Blobs are gone; they were effectively a waste of resources, as there are more or less no points at which you should need them, unless you were winning excessively hard.
      • -
      • Blobs can no longer burst early; instead, the button gives some early help and serves to indicate you're a blob.
      • -
      • Blobbernauts now poll candidates instead of grabbing a candidate immediately. The poll is 5 seconds, so that there's no significant pause between making a blobbernaut and it doing stuff.
      • -
      • Blobbernaut creation replaces Storage Blob creation on the blob HUD.
      • -
      • Overmind communication is now much larger and easier to see, and blob mobs, such as blobbernauts, will hear it.
      • -
      -

      Kor updated:

      -
        -
      • The wizard has a new spell, Lesser Summon Guns. This summons an unending stream of single shot bolt action rifles into his hands, automatically replacing themselves as you fire.
      • -
      • Fixes successive generations of grey tide clones not despawning.
      • -
      • Using challenge ops now delays shuttle refuel.
      • -
      • Added a new wizard event, Advanced Darkness.
      • -
      -

      MrStonedOne updated:

      -
        -
      • GHOST POPUP RE-WORK
      • -
      • Ghost popups will no longer steal focus
      • -
      • Ghost popups will no longer submit on key press (regardless of focus) unless you tab to a button first
      • -
      • Ghost popups will close themselves after the time out has ended
      • -
      • Ghost popups are now themed.
      • -
      • Long actions (like resisting out of handcuffs) will no longer count space/nograv drifting as the user moving.
      • -
      • This does not apply to the target of a long action if that target isn't you. Pulling something while space drifting and working on it intentionally won't work.
      • -
      - -

      31 December 2015

      -

      Bawhoppen updated:

      -
        -
      • Nanotrasen has opened the availability of tactical SWAT gear to station's cargo department
      • -
      • Due to a new trade agreement with Chinese space suit manufacturers, Nanotrasen can now obtain basic space suits much cheaper; This has been reflected in the cargo prices
      • -
      • Amateur medieval enthusiasts have found a quick way to easily make wooden bucklers.
      • -
      -

      Joan updated:

      -
        -
      • Replaced every book sprite in the game with new, consistent versions.
      • -
      • Except the one-use wizard spellbooks, which already got new sprites.
      • -
      -

      PKPenguin321 updated:

      -
        -
      • Chest implants have been added that allow you to morph your arms into a gun and back at will. There are two variants, a taser version and a laser version. Both versions are self-charging. Getting EMPed with one of these implants results in the implant breaking and loads of fire damage. The implants are currently admin-only.
      • -
      • The telecrystal price for thermal imaging goggles has been lowered from 6 to 4.
      • -
      -

      incoming5643 updated:

      -
        -
      • The wizard federation has finally updated their assortment of guns for the summon guns event. Look forward to getting shot in the face with a whole new batch of interesting and rarely seen weaponry!
      • -
      - -

      28 December 2015

      -

      AnturK updated:

      -
        -
      • You can now write an entire word with crayons by setting it as a buffer and then clicking the target tiles in the right order.
      • -
      -

      Joan updated:

      -
        -
      • Blobbernauts can no longer smash walls of any type.
      • -
      -

      MrStonedOne updated:

      -
        -
      • Progress bars now have 20 states instead of 5.
      • -
      • Bump mining should be fixed.
      • -
      • Long actions now checks for movement/changed hands/etc more often to prevent edge cases.
      • -
      • Multiple progress bars will now stack properly, rather than fight each other for focus.
      • -
      -

      Ressler updated:

      -
        -
      • Adds the reagent Haloperidol.
      • -
      • It is an anti-drug reagent, good for stopping assistants hyped up on meth, bath salts, and equally illegal drugs.
      • -
      • It can be made with Chlorine, Fluorine, Aluminum, Potassium Iodide, and Oil.
      • -
      -

      neersighted updated:

      -
        -
      • Make NanoUIs transfer upon (un)ghosting.
      • -
      • Fix NanoUIs jumping when resized/dragged.
      • -
      • Lots of other NanoUI bugs.
      • -
      - -

      27 December 2015

      -

      Joan updated:

      -
        -
      • Overmind-created blobbernauts are now player-controlled if possible.
      • -
      • Creating a blobbernaut no longer destroys the factory, instead doing heavy damage to it and preventing it from spawning spores for one minute.
      • -
      • You cannot spawn blobbernauts from overly damaged factories.
      • -
      • Procedure 5-6 may be issued for biohazard containment under certain situations.
      • -
      • Blobs will now burst slightly later on average, and the nuke report with the nuke code will arrive slightly earlier.
      • -
      -

      Kor updated:

      -
        -
      • Spacemen now announce when they are changing magazines.
      • -
      • Command headsets now have a toggle to let you have larger radio speech.
      • -
      -

      LanCartwright updated:

      -
        -
      • The Syndicate Ship no longer spawns with Bulldog shotguns, operative have been given 10 extra telecrystals instead.
      • -
      -

      MrStonedOne updated:

      -
        -
      • Flashes that were emp'ed were incorrectly flashing people in range of the emper, not in range of the flash.
      • -
      • Flashes in a mob's inventory that are emp'ed will only aoe stun if it is not inside of a container like a backpack/box
      • -
      - -

      26 December 2015

      -

      Buggy123 updated:

      -
        -
      • Salicyclic Acid now rapidly heals severe bruising and slowly heals minor ones.
      • -
      -

      Iamgoofball updated:

      -
        -
      • Telsa energy ball now shoots only a single, powerful beam of lightning that can arc between mobs.
      • -
      • Energy ball can now be heard when near-by.
      • -
      -

      Incoming5643 updated:

      -
        -
      • Animated objects now revert if they have no one to attack for a while.
      • -
      • Added Golden revolver, a powerful sounding gun with large recoil.
      • -
      -

      Kor updated:

      -
        -
      • Transform Sting is now actually functional.
      • -
      -

      MrStonedOne updated:

      -
        -
      • Movement in no gravity now allows you to push off of things only dense to some mobs if it is dense to you (such as tables/blob tiles) rather than just objects that are only dense to all mobs.
      • -
      • Long/timed actions will now cancel properly if you move and quickly move back to the right location.
      • -
      - -

      25 December 2015

      -

      Joan updated:

      -
        -
      • The blob Split Consciousness ability has been removed.
      • -
      • The blob mode now spawns more roundstart blobs, instead.
      • -
      -

      Kor updated:

      -
        -
      • AI holograms no longer drift in zero gravity
      • -
      -

      LanCartwright updated:

      -
        -
      • Shotguns shells now have one extra pellet.
      • -
      -

      MrStonedOne updated:

      -
        -
      • Screen shakes will no longer allow you to see through walls
      • -
      • Screen shakes will now move with you when moving rather than lag your client behind your mob
      • -
      • Screen shakes are now less laggy in higher tickrates
      • -
      - -

      22 December 2015

      -

      Iamgoofball updated:

      -
        -
      • Tesla engine has been added alongside the singularity engine to all maps.
      • -
      -

      Joan updated:

      -
        -
      • Adds three new blob chemicals:
      • -
      • Replicating Foam, which is brown, does brute damage, has bonus expansion, and has a chance to expand when damaged.
      • -
      • Sporing Pods, which is light orange, does low toxin damage, and has a chance to produce weak spores when expanding or killed.
      • -
      • Synchronous Mesh, which is teal, does brute damage and bonus damage for each blob tile near the target, and splits damage taken between nearby blobs.
      • -
      • Synchronous Mesh blobs take 25% more damage, to compensate for the spread damage.
      • -
      -

      Kor updated:

      -
        -
      • Cayenne will no longer be targeted by the syndicate turrets.
      • -
      • Energy shields now only reflect energy projectiles.
      • -
      • Added accelerator sniper rounds to uplink, a weak projectile that ramps up damage the farther it flies.
      • -
      -

      MMMiracles updated:

      -
        -
      • Saber magazines have been dropped to 21 per magazine. When asked, Nanotrasens official ballistic department replied "There is indeed such a thing as too much bullet."
      • -
      -

      Xhuis updated:

      -
        -
      • Stun batons can now be blocked by shields, blocked hits don't deduct charge.
      • -
      -

      xxalpha updated:

      -
        -
      • Janitor cyborgs now have a bottle of drying agent.
      • -
      - -

      21 December 2015

      -

      AnturK updated:

      -
        -
      • Ghost HUD and Ghost Inquisitiveness toggles are now persistent between rounds.
      • -
      -

      Kor updated:

      -
        -
      • Malfunctioning AIs have been merged with traitor AIs. They no longer appear in their own mode.
      • -
      • Hacking APCs now gives you points to spend on your modules. Save up enough points and you can buy a doomsday device on a 450 second timer.
      • -
      • The detectives revolver reskins on alt click now.
      • -
      • You can now dual wield guns. Firing a gun will automatically fire the gun held in your off hand if you are on harm intent.
      • -
      -

      LanCartwright updated:

      -
        -
      • The TC costs for nuke ops have been rebalanced. Guns, viscerators and mechs are cheaper, ammo and borgs are more expensive.
      • -
      • Most guns can now be bought in bundles, together with some ammo and freebies for a special discount.
      • -
      -

      The-Albinobigfoot updated:

      -
        -
      • Nuclear Operative families may once again requisition ultra-adhesive footwear.
      • -
      - -

      20 December 2015

      -

      Joan updated:

      -
        -
      • Reduces Lexorin Jelly's oxygen damage significantly.
      • -
      • Blobbernaut chemical application on attack is back, but much less absurd this time; blobbernauts with an overmind will do 70% of the normal chem damage(plus 4) and attack at a much slower rate than the blob itself can.
      • -
      • As an example, a blobbernaut with the Ripping Tendrils chemical would do 14.5 brute and 10.5 stamina damage per hit.
      • -
      -

      Kor updated:

      -
        -
      • Adds reactive tesla armour. Adminspawn only.
      • -
      • Adds the legendary spear, Grey Tide. Admin only.
      • -
      • Nuke Ops can now purchase penetrator rounds for their sniper rifles.
      • -
      • Nuke ops can now purchase additional team members for 25 telecrystals. They don't come with any gear other than a pistol however, so remember to save some points for them.
      • -
      • Nuke Ops now have an assault pod. A 30tc targeting device will allow you to select any area on the station as its landing zone. The pod is one way, so don't forget your nuke.
      • -
      • The teleporter board is no longer available for purchase in the uplink.
      • -
      • After finding absolutely nothing of value, Nanotrasen away teams placed charges and scuttled the abandoned space hotel.
      • -
      • Metastation now has xenobiology computers.
      • -
      • Metastation now has escape pod computers.
      • -
      • A distress signal has been detected broadcasting in an asteroid field near Space Station 13.
      • -
      • Clicking the (F) follow link for AI speech will now make you orbit their camera eye.
      • -
      -

      MMMiracles updated:

      -
        -
      • The SAW has been revamped slightly. It now requires a free hand to fire, but includes 4 new ammo variants along with a TC cost decrease for both the gun and the ammo boxes.
      • -
      -

      MrStonedOne updated:

      -
        -
      • Fixes ghost orbit breaking ghost floating
      • -
      • Fixes orbiting ever breaking golem spawning
      • -
      • Fixes orbiting ever preventing that ghost from showing up in pictures taken by ghost cameras resdel: Fixes being able to break your ghost sprite by multiple quick consecutive orbits (FINAL SOLUTION, PROVE ME WRONG YOU CAN'T)
      • -
      -

      Remie updated:

      -
        -
      • Byond members can now choose how their ghost orbits things, their choices are: Circle, Triangle, Square, Pentagon and Hexagon!
      • -
      • orbit() should be much cheaper for clients now, allowing those of you with potato PCs to survive mega ghost swirling better.
      • -
      -

      incoming5643 updated:

      -
        -
      • the terror of double tailed lizards and featureless clones should now be over
      • -
      • the emote *stopwag no longer works, just *wag again to stop instead
      • -
      - -

      18 December 2015

      -

      Incoming5643 updated:

      -
        -
      • Soon to be blobs in blob mode can now burst at their choosing. However they will still burst if they wait too long.
      • -
      • Burst responsibly.
      • -
      -

      Joan updated:

      -
        -
      • New blob chemicals:
      • -
      • Pressurized Slime, which is grey, does low brute, oxygen, and stamina damage, but releases water when damaged or destroyed.
      • -
      • Energized Fibers, which is light yellow, does low burn damage, high stamina damage, and heals if hit with stamina damage.
      • -
      • Hallucinogenic Nectar, which is pink, does low toxin damage, causes vivid hallucinations, and does some bonus toxin damage over time.
      • -
      • Replaces Kinetic Gelatin with Reactive Gelatin, which does less brute damage, but if hit with brute damage in melee, damages all nearby objects.
      • -
      • Changes three of the old blob chemicals:
      • -
      • Ripping Tendrils does slightly more stamina damage
      • -
      • Envenomed Filaments no longer causes hallucinations, but does some stamina damage in addition to toxin damage over time.
      • -
      • Cryogenic Liquid will freeze targets more effectively.
      • -
      -

      Kor updated:

      -
        -
      • Shooting someone who is holding a grenade has a chance to set the grenade off.
      • -
      • Shooting someone who is holding a flamethrower has a chance to rupture the fuel tank.
      • -
      • Shields have a bonus against blocking thrown projectiles.
      • -
      -

      Swankcookie updated:

      -
        -
      • lanterns no longer turn into flashlights when you pick them up.
      • -
      -

      bgobandit updated:

      -
        -
      • Lizard tails can now be severed by surgeons with a circular saw and cautery, and attached the same way augmented limbs are.
      • -
      • The Animal Rights Consortium is horrified by Nanotrasen stations' sudden rise of illegal lizard tail trade, with such atrocities as lizardskin hats, lizard whips, lizard clubs and even lizard kebab!
      • -
      -

      neersighted updated:

      -
        -
      • NanoUI should now load much faster, as the filesize and file count have been reduced
      • -
      - -

      17 December 2015

      -

      Kor updated:

      -
        -
      • Security barricades are now deployed via grenade. You can no longer move them after they've been deployed, you must destroy them.
      • -
      • You can now shoot through wooden barricades while adjacent, while any other gunfire has a 50% chance of being blocked.
      • -
      • There are no longer restrictions against implanting the nuclear disk in people.
      • -
      • If the station is destroyed in a nuclear blast, any surviving traitors will complete their "escape alive" objective regardless of their location.
      • -
      • Hulks now lose hulk when going into crit, rather than at 25 health.
      • -
      • Shuttles will no longer drag random tiles of space with them. This means you can be thrown out of partially destroyed escape shuttles very easily.
      • -
      • The people and objects on destroyed tiles won't be along for the ride when the shuttle moves either.
      • -
      • Adds hardsuits with built in energy shielding. CTF and security versions are admin only.
      • -
      • Nuclear operatives can buy a shielded hardsuit for 30tc.
      • -
      • Traitors can now buy a Mulligan for 4 telecrystals, a syringe that completely randomizes your name and appearance.
      • -
      • The spy bundle now includes a switchblade and Mulligan.
      • -
      -

      MMMiracles updated:

      -
        -
      • A set of coordinates have recently reappeared on the Nanotrasen gateway project. Ask your local central official about participation.
      • -
      -

      MrStonedOne updated:

      -
        -
      • Ghosts can now double click on ANY movable thing (ie: not a turf) to orbit it
      • -
      -

      PKPenguin321 updated:

      -
        -
      • Dope golden necklaces have been added. They're a jumpsuit attachment like ties and are completely cosmetic.
      • -
      • Dope necklaces can be bought from the clothesmate with a coin. Three are in the clothesmate by default, so you can get your posse going. Gangs that aren't Sleeping Carp can also purchase necklaces for 1 influence each. Dope.
      • -
      -

      xxalpha updated:

      -
        -
      • Restores the ability to bolt and unbolt operating airlocks.
      • -
      - -

      16 December 2015

      -

      AnturK updated:

      -
        -
      • Medical Beam Gun now available for Nuclear Operatives and ERT Medics.
      • -
      -

      Joan updated:

      -
        -
      • Revenant Overload Lights reveal time lowered from 10 seconds to 8 seconds, shock damage increased from 18 to 20.
      • -
      • Revenant Blight reveal time lowered from 6 seconds to 5 seconds.
      • -
      -

      Kor updated:

      -
        -
      • Styptic once again works in patches.
      • -
      • Nuke Op team leaders can now activate challenge mode if more than 50 players are online.
      • -
      • Xenobio mobs will no longer spontaneously murder their friends if you give them sentience
      • -
      -

      The-Albinobigfoot updated:

      -
        -
      • The Wishgranter now displays its faith in humans with curbed enthusiasm.
      • -
      -

      Tkdrg updated:

      -
        -
      • Cult has been overhauled in an attempt to make the gamemode more fun.
      • -
      • Cult onversion and stunpapers have been removed. So have most cult objectives.
      • -
      • The cult's single objective is now defend and feed a large construct shell in order to summon the Geometer.
      • -
      • The cult must sacrifice souls in order to acquire summoning orbs, which must be inserted inside said shell.
      • -
      • The large construct shell can be procured by using a summoning orb in hand, but it is vulnerable to attack.
      • -
      • Once enough orbs are inserted, the station will go Delta. After three minutes, the cult will have won.
      • -
      • Cult communications now no longer damage you when done without a tome.
      • -
      • Cultists now start with a sacrificial dagger, with bleeding effects and high throwing damage.
      • -
      • Most existing runes were buffed, merged, or removed. A Immolate rune and a Time Stop rune were added. Experiment!
      • -
      • Each cultist now gets a random set of runes in their tomes. Pool together your knowledge in order to thrive.
      • -
      -

      neersighted updated:

      -
        -
      • NanoUI 3.0
      • -
      • Completely rewrite NanoUI frontend; rework backend.
      • -
      • Re-design NanoUI interface to be much more attractive.
      • -
      • Reduce NanoUI LOC count/resource size.
      • -
      • Reduce NanoUI tickrate; make UIs update properly.
      • -
      • Add chromeless NanoUI mode.
      • -
      • NanoUI's chromeless mode can be toggled with the 'Fancy NanoUI' preference.
      • -
      • Allow NanoUI to work on IE8-IE11, and Edge.
      • -
      • Close holes that allow NanoUI href spoofing.
      • -
      - -

      15 December 2015

      -

      Incoming5643 updated:

      -
        -
      • The summon events... event "RPG loot" now allows for items to have bonuses of up to +15!
      • -
      • The "RPG loot" event now also improves the damage reduction of armor!
      • -
      • Check out the item mall for new item fortification scrolls!
      • -
      -

      as334 updated:

      -
        -
      • New research has shown that when when plasma reaches a high enough temperature in the presence of a carbon catalyst, it undergoes a violent and powerful fusion reaction.
      • -
      • Adds a new gas reaction, fusion. Heat up plasma and carbon dioxide in order to produce large amounts of energy and heat.
      • -
      -

      oranges updated:

      -
        -
      • hulk no longer stuns
      • -
      • John Cena
      • -
      - -

      13 December 2015

      -

      Kor updated:

      -
        -
      • Adds reactive stealth armor. Admin spawn only.
      • -
      - -

      12 December 2015

      -

      Joan updated:

      -
        -
      • The blob Split Consciousness ability now requires a node under the overmind's selector, instead of picking the oldest living node to spawn a core on.
      • -
      • Revenant antagonist preference can once again be toggled from the Game Preferences menu.
      • -
      -

      Kor updated:

      -
        -
      • You now have a chance to flip while attacking with a dualsaber.
      • -
      • Bluespace survival capsules have been added to escape pod safes.
      • -
      • Standing between activating shield generators now has disastrous consequences.
      • -
      -

      Lo6a4evskiy updated:

      -
        -
      • Ninja drains power properly, no more infinite stealth.
      • -
      -

      RemieRichards updated:

      -
        -
      • Adds a Synth Species
      • -
      • Species can now react to being force set by admins, used for Synth species
      • -
      - -

      09 December 2015

      -

      GunHog updated:

      -
        -
      • Nanotrasen has discovered new strains of Xenomorph which resist penetration by known injection devices, including syringes. This seems to only extend to the large 'Royal' strains, designed 'Queen' and 'Praetorian'. Extreme caution is advised should these specimens escape containment.
      • -
      • Ghosts may now use Diagnostic HUD.
      • -
      • Feedback added for which HUD is active.
      • -
      -

      Kor updated:

      -
        -
      • Security barricades now block gunfire 80% of the time while deployed.
      • -
      • Standing adjacent to barricades will allow you to shoot over them.
      • -
      -

      MrStonedOne updated:

      -
        -
      • noslip floors make you slightly faster
      • -
      -

      Shadowlight213 updated:

      -
        -
      • Admins can now interact with mos of the station's machinery as if they were an AI when ghosting.
      • -
      -

      incoming5643 updated:

      -
        -
      • a mutation of glowshrooms, glowcaps, have recently been discovered in botany.
      • -
      -

      ktccd updated:

      -
        -
      • Blobs now require the correct amount of blobs to win that scales depending on number of blobs, instead of a set value of 700.
      • -
      - -

      08 December 2015

      -

      Joan updated:

      -
        -
      • Revenants can no longer move through walls and windows while revealed, though they can move through tables, plastic flaps, mobs, and other similarly thin objects.
      • -
      • Defile now reveals for 4 seconds, from 8.
      • -
      • Overload lights now reveals for 10 seconds, from 8.
      • -
      • Blight now reveals for 6 seconds, from 8.
      • -
      • Blight has a higher chance of applying stamina damage to the infected.
      • -
      -

      Kor updated:

      -
        -
      • The blocking system has been completely overhauled. Any held item, exosuit, or jumpsuit can now have a chance to block, or a custom on hit effect. Different shields can now have different block chances.
      • -
      • The clowns jumpsuit now honks when you beat the owner.
      • -
      • There is a new (admin only for now) suit of reactive armour that ignites attackers instead of warping you.
      • -
      • Shields will no longer block hugs. Give peace a chance.
      • -
      -

      neersighted updated:

      -
        -
      • MC tab reworked, more items made available.
      • -
      • Admins can now click entries in the MC tab to debug.
      • -
      - -

      07 December 2015

      -

      octareenroon91 updated:

      -
        -
      • Wallets now use the access of all IDs stored inside them.
      • -
      • As the accesses of all IDs are merged, two IDs in a wallet may grant access to a door that neither one alone would open.
      • -
      • Wallets used to be useless for access if the first ID card put into it was taken out, until another ID card was put back in. That should not happen anymore.
      • -
      - -

      06 December 2015

      -

      Gun Hog updated:

      -
        -
      • Nanotrasen is proud to announce that it has improved its Diagnostic HUD firmware to include the station's automated robot population! New features include integrity tracking, Off/On status, and mode tracking! If your little robot friend suddenly manages to acquire free will, you will be able to track that as well!
      • -
      • Artificial Intelligence units may find that their bot management interface now shows when a robot gains free will. This is also displayed on the Personal Data Assistant's bot control interface.
      • -
      -

      neersighted updated:

      -
        -
      • Cryo now properly checks it is on before healing...
      • -
      - -

      05 December 2015

      -

      Joan updated:

      -
        -
      • Magic missiles no longer do damage.
      • -
      - -

      03 December 2015

      -

      Joan updated:

      -
        -
      • Artificers now have feedback when healing other constructs, showing how much health the target has.
      • -
      • Constructs can move in space.
      • -
      • Fixes cult flooring not lining up with normal floors.
      • -
      • Fixes a juggernaut back spine not glowing where it should.
      • -
      -

      Spudboy updated:

      -
        -
      • Realigned the librarian's PDA.
      • -
      -

      Swankcookie updated:

      -
        -
      • Cakehat now creates light
      • -
      -

      YotaXP updated:

      -
        -
      • Rolled out a new line of space heaters around the station. This new model has the functionality to cool down the environment, as well as heat it. Additionally, they can be built and upgraded like any other machine.
      • -
      -

      neersighted updated:

      -
        -
      • Dominator now shows the correct area name on non-Box maps.
      • -
      • Unwrenching atmos pipes is less... nuts...
      • -
      • You don't get hopelessly spun when standing on a unwrenched pipe... Don't try it, though.
      • -
      • You can now cancel pulling by Ctrl+Clicking anything else
      • -
      • Chemistry Dispensers now have a built-in drain!
      • -
      - -

      02 December 2015

      -

      GunHog updated:

      -
        -
      • Nanotrasen has discovered a flaw in the weapon recharging station's design that makes it incompatible with the Rapid Part Exchange Device. This has been corrected.
      • -
      -

      neersighted updated:

      -
        -
      • You can now stop pulling by trying to pull the same object again.
      • -
      • Nanotrasen is proud to announce that even the dead can use our state of the art NanoUI technology.
      • -
      - -

      01 December 2015

      -

      Kor updated:

      -
        -
      • The away mission Listening Post, originally mapped by Petethegoat, has removed as a mission. It is now present in normal deep space.
      • -
      -

      neersighted updated:

      -
        -
      • Attack animations are now directional!
      • -
      • Nanotrasen brand Airlock Electronics now sport our latest NanoUI interface! Upgrade your electronics today!
      • -
      • Cryo now knocks you out.
      • -
      • Resisting out of cryo has a delay.
      • -
      • Cryo auto-ejection can now be configured.
      • -
      • Remove Cryo eject verb (resist out).
      • -
      • Cryo works... Love, neersighted
      • -
      -

      swankcookie updated:

      -
        -
      • Switches cloak usage to overclothing slot
      • -
      - -

      30 November 2015

      -

      neersighted updated:

      -
        -
      • Nanotrasen would like to apologize for Chemistry being stuck on NanoUI 1.0... Please report any further bugs to Nanotrasen Support.
      • -
      • NanoUI becomes... difficult to operate with brain damage. Who would have guessed?
      • -
      • Telekinesis enables you to use NanoUI at a distance.
      • -
      • Canisters require physical proximity to actuate...
      • -
      • NanoUI no longer leaks memory on click.
      • -
      - -

      29 November 2015

      -

      Firecage updated:

      -
        -
      • Hand tools now have variable operating speeds.
      • -
      -

      GunHog updated:

      -
        -
      • Nanotrasen has improved the interface for the hand-held teleportation device. It will now provide the user with the name of the destination tracking beacon.
      • -
      -

      JJRcop updated:

      -
        -
      • Fixes changeling Hive Absorb DNA ability runtime.
      • -
      -

      Joan updated:

      -
        -
      • When sacrificing a target with the sacrifice rune, Nar-Sie herself will briefly appear to consume them.
      • -
      • When an artificer repairs a construct, there is a visible beam between it and the target.
      • -
      • When reviving a target with the raise dead rune, there is a visible beam between the two corpses used.
      • -
      • When draining a target with the blood drain rune, there is a visible beam between you and the rune.
      • -
      • Construct sprites are now consistent and all bob in the air.
      • -
      • Most cult messages now use the cult span classes, though visible messages from cult things generally do not.
      • -
      • Examining a cultist talisman as a cultist no longer causes the paper popup to appear.
      • -
      • You no longer need to press two buttons to read a cultist tome.
      • -
      • Cult should have a few less typos and grammatical errors.
      • -
      • The sacrifice rune now uses the proper invocation.
      • -
      -

      KorPhaeron updated:

      -
        -
      • Guardians and holoparasites can now be manually recalled by their master.
      • -
      • The ghost controlling a guardian or holoparasite can be repicked by their master, only one use which is removed when a new ghost is chosen.
      • -
      -

      MrStonedOne updated:

      -
        -
      • Re-adds 100% chance timed injectors, as it was removed over a misunderstanding.
      • -
      • Fixes bug with injectors having a 100% power chance despite not being timed
      • -
      • Fixes the excessive amount of time it took the game to initialize.
      • -
      • Fixes some interface bugs.
      • -
      • when an interface window has to send a lot of resources before it can open, it will now tell you with a "sending resources" line so you know why it's not opening right away.
      • -
      -

      PKPenguin321 updated:

      -
        -
      • Teleprods can now be constructed. Make them via tablecrafting, or by putting a bluespace crystal onto a stunprod. They warp the target to a random nearby area (which may include space/the inside of a wall) in addition to giving the victim a brief stun. Like stunprods, they require a power cell to function.
      • -
      • Teleprods can have their crystal removed and be made back into stunprods by using them in your hand when they have no cell installed.
      • -
      • Mounted chainsaws now have a unique inhand sprite.
      • -
      -

      Remie + Kor updated:

      -
        -
      • Holopads now use AltClick to request the AI
      • -
      -

      Shadowlight213 updated:

      -
        -
      • Syndie melee mobs have been buffed.
      • -
      -

      TheNightingale updated:

      -
        -
      • Nuclear operatives can now buy the Elite Syndicate Hardsuit for 8 TC that has better armor and fireproofing.
      • -
      • Added throwing stars and Syndicate playing cards to nuclear operative's uplink.
      • -
      -

      Yolopanther12 updated:

      -
        -
      • Added the ability to use a box of lights on a light replacer to more quickly refill it to capacity.
      • -
      -

      incoming5643 updated:

      -
        -
      • OOC will now take steps to try and prevent accidental IC from people who mistakenly use OOC instead of say. This doesn't catch all mistakes, so please don't test it.
      • -
      -

      ktccd updated:

      -
        -
      • Blob pieces on some areas no longer count for blob mode victory (Such as space or asteroid).
      • -
      • Blobcode no longer spawns and destroys blobs uselessly, which fixes other stuff too.
      • -
      • Asteroid areas are no longer valid gang territory.
      • -
      -

      neersighted updated:

      -
        -
      • Nanotrasen would like to announce NanoUI 2.0, now being rolled out across all our stations. Existing NanoUI devices have been updated, and more will be added soon. Please report any bugs to Nanotrasen Support.
      • -
      • Many NanoUI interfaces have had +/- buttons replaced with input fields.
      • -
      • Some NanoUI interfaces have had more information added.
      • -
      • Drones can now interact with NanoUI windows.
      • -
      -

      swankcookie updated:

      -
        -
      • Fixes issue of space-Christians forgetting about the true, humbling values of space-Christmas.
      • -
      • Adds snowmen outfits
      • -
      - -

      28 November 2015

      -

      TechnoAlchemisto updated:

      -
        -
      • Cloaks are now worn in your exosuit slot!
      • -
      - -

      27 November 2015

      -

      AnturK updated:

      -
        -
      • Turret control panels can now be made through frames available at autolathe.
      • -
      • Unlocked turrets can be linked with built controls with multiool
      • -
      -

      JJRcop updated:

      -
        -
      • Restores golem shock immunity.
      • -
      -

      Kor and Ausops updated:

      -
        -
      • Added four different suits of medieval plate armour.
      • -
      • The Chaplain starts with a suit of Templar armour in his locker. God wills it!
      • -
      • Rumour has it that Nanotrasen is now training a new elite unit of soldiers to deal with paranormal threats. Corporate was unable to be reached for comment.
      • -
      -

      MMMiracles updated:

      -
        -
      • Adds a brand new away mission for the gateway called 'Caves'.
      • -
      • The away mission has multiple levels to explore and could be quite dangerous, running in without proper preparation is unadvised.
      • -
      -

      YotaXP updated:

      -
        -
      • Drones can now use the pick-up verb, and watertanks no longer get jammed in their internal storage.
      • -
      -

      bgobandit updated:

      -
        -
      • Due to changes in Nanotrasen's mining supply chain, ore redemption machines now offer a variety of upgraded items! However, certain items are more expensive. Point values for minerals have been adjusted to reflect their scarcity.
      • -
      • Nanotrasen R&D has discovered how to improve upon the resonator and kinetic accelerator.
      • -
      • After a colossal tectonic event on Nanotrasen's asteroid, ores are distributed more randomly.
      • -
      • Bluespace crystals have been discovered to be ore. They will now fit into satchels and ore boxes.
      • -
      • Mech advanced mining scanners now include meson functionality.
      • -
      -

      neersighted updated:

      -
        -
      • Wooden Barricades now take bullet damage.
      • -
      • Rebalance Wooden Barricade damage.
      • -
      - -

      26 November 2015

      -

      neersighted updated:

      -
        -
      • Cyborg Toner is now refilled by recharging stations.
      • -
      -

      oranges updated:

      -
        -
      • Removed the 'gloves' from the sailor dress which looked weird since it was a blouse basically
      • -
      • Made the skirt on the blue/red skirts less blocky,
      • -
      • Made the striped dress consistent at every direction
      • -
      - -

      25 November 2015

      -

      Incoming5643 updated:

      -
        -
      • A number of popular stunning spells have undergone balance changes. Note that for the most part the stuns themselves are untouched.
      • -
      • Lightning Bolt Changes:
      • -
      • You can no longer throw the bolt whenever you want, it will fire itself once it's done charging.
      • -
      • Getting hit by a bolt will do a flat 30 burn now, as opposed to scaling with how long the wizard spent charging the spell. Unless said wizard made a habit of charging lightning bolt to near maximum every time this is a buff to damage.
      • -
      • Every time the bolt jumps the next shock will do five less burn damage.
      • -
      • Lightning bolts can still jump back to the same body, so the maximum number of bolts you can be hit by in a single casting is three, and the maximum amount of damage you could take for that is 60 burn.
      • -
      • Magic Missile Changes:
      • -
      • Cooldown raised to 20 seconds, up from 15
      • -
      • Cooldown reduction from taking the spell multiple times raised from 1.5 seconds to 3.5 seconds. Rank 5 magic missile now has a cooldown of 6 seconds, down from 9, and is effectively a permastun.
      • -
      • Time Stop Changes:
      • -
      • Time Stop field now persists for 10 seconds, up from 9
      • -
      • Cooldown raised to 50 seconds, up from 40
      • -
      • Cooldown reduction from taking the spell multiple times raised from 7.75 seconds to 10 seconds. Rank 5 time stop now has a cooldown of 10 seconds, up from 9, and is effectively a permastun.
      • -
      -

      Kor updated:

      -
        -
      • Escape pods can now be launched to the asteroid during red and delta level security alerts. Pods launched in this manner will not travel to Centcomm at the end of the round.
      • -
      • Each pod is now equipped with a safe that contains two emergency space suits and mining pickaxes. This safe will only open during red or delta level security alerts.
      • -
      -

      MrStonedOne updated:

      -
        -
      • fixes interfaces (like the "ready" button) being unresponsive for the first minute or two after connecting.
      • -
      • Burn related code has been changed
      • -
      • This will give a small buff to fires by making them burn for longer
      • -
      • This will give a massive nerf to plasma related bombs
      • -
      • I am actively seeking feedback, if the nerf to bombs is too bad we can still tweak stuff
      • -
      -

      PKPenguin321 updated:

      -
        -
      • Chainsaws (both arm-mounted and not arm-mounted) can now be used in surgeries as a ghetto sawing tool. Arm-mounted chainsaws are a teeny bit more precise than regular ol' everyday chainsaws.
      • -
      -

      YotaXP updated:

      -
        -
      • Spruced up the preview icons on the Character Setup dialog.
      • -
      -

      incoming5643 updated:

      -
        -
      • Citing shenanigan quality concerns the wizard federation has withdrawn supermatter swords and veil renderers from spellbooks.
      • -
      -

      neersighted updated:

      -
        -
      • Make Airlock Electronics use standard ID checks, allowing Drones to use them.
      • -
      - -

      24 November 2015

      -

      Kor updated:

      -
        -
      • Added a lava turf. Expect to see it in away missions or in admin 'events'
      • -
      - -

      23 November 2015

      -

      octareenroon91 updated:

      -
        -
      • Spilling oxygen or nitrogen will obtain a release of the corresponding atmospheric gas in the effected tile.
      • -
      • Carbon Dioxide has been added as a reagent. Recipe: 2:1 carbon:oxygen, heated to 777K.
      • -
      • Spilling CO2 will produce CO2 gas.
      • -
      - -

      21 November 2015

      -

      Joan updated:

      -
        -
      • Blobs now have a hud, with jump to node, create storage blob, create resource blob, create node blob, create factory blob, readapt chemical, relocate core, and jump to core buttons.
      • -
      • Manual blob expansion is now triggered by clicking anything next to a blob tile, instead of by ctrl-click.
      • -
      • Rally Spores no longer has a cost. Reminder: You can middle-click anything you can see to rally spores to it.
      • -
      • Creating a Shield Blob with hotkeys is now ctrl-click instead of alt-click.
      • -
      • Removing a blob now refunds some points based on the blob type, usually around 40% of initial cost. Hotkey for removal is alt-click.
      • -
      • Blobs now have the *Blob Help* verb which will pull up useful information, including what your reagent does.
      • -
      • Storage Blobs now cost 20, from 40. Storage Blobs also cannot be removed by blob removal.
      • -
      • Readapt Chemical now costs 40, from 50.
      • -
      -

      octareenroon91 updated:

      -
        -
      • Add numbers and a star graffiti to crayon/spraycan designs.
      • -
      - -

      20 November 2015

      -

      AnturK updated:

      -
        -
      • Staff of Doors now creates random types of doors.
      • -
      -

      Incoming5643 updated:

      -
        -
      • Setting your species to something other than human (if available) once again saves properly. Note that if you join a round where your species setting is no longer valid it will be reset to human.
      • -
      -

      PKPenguin321 updated:

      -
        -
      • Healing Fountains in Hand of God now give cultists a better and more culty healing chemical instead of Doctor's Delight.
      • -
      -

      kingofkosmos updated:

      -
        -
      • Added the ability to upgrade your grab by clicking the grabbed mob repeatedly.
      • -
      -

      octareenroon91 updated:

      -
        -
      • Add the four-color pen, which writes in black, red, green, and blue.
      • -
      • Adds two such pens to the Bureaucracy supply pack.
      • -
      - -

      19 November 2015

      -

      Joan updated:

      -
        -
      • Constructs have action buttons for their spells.
      • -
      • The Juggernaut forcewall now has a new, more cult-appropriate sprite.
      • -
      • Cult floors and walls now have a glow effect when being created.
      • -
      • Nar-Sie and Artificers will properly produce cult flooring.
      • -
      • Nar-Sie is a she.
      • -
      - -

      18 November 2015

      -

      oranges updated:

      -
        -
      • Nanotrasen apologies for a recent bad batch of synthflesh that was shipped to the station, any rumours of death or serious injury are false and should be reported to your nearest political officer. At most, only light burns would result.
      • -
      -

      phil235 updated:

      -
        -
      • Remotely detonating a planted c4 with a signaler now works again.
      • -
      - -

      17 November 2015

      -

      Xhuis updated:

      -
        -
      • Many medicines have received rebalancing. Expect underused chemicals like Oxandralone to be much more effective in restoring damage.
      • -
      • Many toxins are now more or less efficient.
      • -
      • The descriptions of many reagents have been made more accurate.
      • -
      • New poison: Heparin. Made from Formaldehyde, Sodium, Chlorine, and Lithium. Functions as an anticoagulant, inducing uncontrollable bleeding and small amounts of bruising.
      • -
      • New poison: Teslium. Made from Plasma, Silver, and Black Powder, heated to 400K. Modifies examine text and induces periodic shocks in the victim as well as making all shocks against them more damaging.
      • -
      • Two Chemistry books have been placed in the lab. When used, they will link to the wiki page for chemistry in the same vein as other wiki books.
      • -
      - -

      16 November 2015

      -

      Gun Hog updated:

      -
        -
      • The Combat tech requirement for Loyalty Firing Pins has been reduced from 6 to 5.
      • -
      -

      Joan updated:

      -
        -
      • Plasmamen can now man the bar.
      • -
      • Defile no longer directly affects mobs. Instead, it rips up floors and opens most machines and lockers.
      • -
      • Blight added. Blight infects humans with a virus that does a set amount of damage over time and is relatively easily cured. Blight also badly affects nonhuman mobs and other living things.
      • -
      • While the cure to Blight is simple, it's not in this changelog. Use a medical analyzer to find the cure.
      • -
      • Tweaked costs and stuntimes of abilities;
      • -
      • Defile now costs 30 essence and stuns for about a second.
      • -
      • Overload Lights now costs 40 essence.
      • -
      • Malfunction now costs 45 essence.
      • -
      • Blight costs 50 essence and 200 essence to unlock.
      • -
      • Transmit has a new, spookier icon.
      • -
      • Revenant abilities can be given to non-revenants, and will work as normal spells instead of runtiming.
      • -
      -

      bgobandit updated:

      -
        -
      • Blood packs can now be labeled with a pen.
      • -
      - -

      15 November 2015

      -

      CosmicScientist updated:

      -
        -
      • Hopefully made the dehydrated carp's uplink description 100% clear.
      • -
      • Made the dehydrated carp cost 1 TC (instead of 3) to help with your traitor gear combos.
      • -
      -

      Incoming5643 updated:

      -
        -
      • The supermatter sword was being far too kind in the hands of men. They should now have the desired effect when swung at people.
      • -
      -

      Joan updated:

      -
        -
      • Anomalies move more often, are resistant to explosions and will only be destroyed if they are in devastation range. You shouldn't bomb them, though.
      • -
      • Hyper-energetic flux anomaly will shock mobs that run into it, or if it runs into them.
      • -
      • Bluespace anomaly will occasionally teleport mobs away from it in a small radius.
      • -
      • Vortex anomalies will sometimes throw objects at nearby living mobs.
      • -
      • Pyroclastic anomalies will produce bigger, hotter fires, and if not disabled, it will release an additional burst of flame. In addition, the resulting slime will be rabid and thus attack much more aggressively.
      • -
      • Gravitational anomalies will now properly throw objects at nearby living things.
      • -
      -

      MrStonedOne updated:

      -
        -
      • Away mission loading will no longer improperly expand the width of the game world to two times the size of the away mission map.
      • -
      • This should also improve the speed of loading away missions, since the game doesn't have to resize the world
      • -
      -

      RemieRichards updated:

      -
        -
      • Deities now start off with the ability to place 1 free turret
      • -
      • HoG Claymores now do 30 Brute (Down from 40) but now have 15 Armour Penetration (Up from 0)
      • -
      • Killing the other god objective is fixed
      • -
      • Turrets will no longer attack handcuffed people
      • -
      • Followers are now informed of their god's death
      • -
      • Followers are now informed of the location of their god's nexus when it is placed
      • -
      • Gods can no longer place structures near the enemy god's nexus
      • -
      - -

      13 November 2015

      -

      as334 updated:

      -
        -
      • Nanotrasen has hired a brand new supply of ~~expendable labor~~ *LOYAL CREW MEMBERS* please welcome them with open arms.
      • -
      • Plasmamen are now a playable race. They require plasma gas to survive and will ignite in oxygen environments.
      • -
      - -

      12 November 2015

      -

      Dunc updated:

      -
        -
      • DNA injectors have been restored to their original permanent RNG state from the impermanent guaranteed state.
      • -
      -

      Xhuis updated:

      -
        -
      • Reagents can no longer be determined by examining a reagent container without the proper apparatus. Silicons and ghosts can always see reagents.
      • -
      • Science goggles now allow reagents to be seen on examine. In addition, chemists now start wearing them. The bartender has a pair that looks and functions like sunglasses.
      • -
      - -

      11 November 2015

      -

      AnturK updated:

      -
        -
      • DNA Injectors now grant temporary powers on every use. Duration dependent on activated powers and machine upgrades
      • -
      • Delayed Transfer added to DNA Scanner - It will activate on the next closing of scanner door
      • -
      • UI+UE injectors/buffer transfers added for convinience
      • -
      • Injector creation timeout cut in half
      • -
      -

      Firecage updated:

      -
        -
      • NanoTrasen specialists has developed a new type of operating table. You can now make one yourself with only some rods and a sheet of silver!
      • -
      -

      Kor updated:

      -
        -
      • Adds immovable and indestructible reflector structures for badmin use.
      • -
      • The Mjolnir has been added to the wizards spellbook.
      • -
      • The Singularity Hammer has been added to the wizards spellbook.
      • -
      • The Supermatter Sword has been added to the wizards spellbook.
      • -
      • The Veil Render has been added to the wizards spellbook.
      • -
      • Trigger Multiverse War (give the entire crew multiswords) has been added to the wizards spellbook, at a cost of 8 points.
      • -
      • Converting (to cultist, rev, or gangster) a jobbaned player will now automatically offer control of their character to ghosts.
      • -
      • Emergency Response Teams and Deathsquads no longer accept non-human members if the server is configured to bar mutants from being heads of staff.
      • -
      -

      LordPidey updated:

      -
        -
      • Nanotransen doctors have re-approved Saline-Glucose Solution for usage in IV drips, when blood supplies are low. Simple pills will not suffice.
      • -
      -

      MMMiracles updated:

      -
        -
      • Water slips have been nerfed to a more reasonable duration. It is still a guaranteed way to disarm an opponent and obtain their weapon, but you can no longer manage to cuff/choke everyone who manages to slip without a problem.
      • -
      -

      MrStonedOne updated:

      -
        -
      • Fixes the smartfridge not stacking items.
      • -
      -

      Xhuis updated:

      -
        -
      • The emergency shuttle now plays unique sounds (thanks to Cuboos for creating them) when launching from the station and arriving at Central Command.
      • -
      -

      torger597 updated:

      -
        -
      • Added a syringe to boxed poison kits.
      • -
      - -

      08 November 2015

      -

      Cuboos updated:

      -
        -
      • Added a new and better sounding flashbang sound and a ringing sound for flashbang deaf effect
      • -
      -

      JJRcop updated:

      -
        -
      • Chronosuits have had their movement revised, they now take time to teleport depending on how far you've traveled, and don't teleport automatically anymore unless you stop moving for a short moment, or press the new ' Teleport Now' button.
      • -
      • Added new outfit that allows admins to dress people up in the chrono equipment easier.
      • -
      -

      Jalleo updated:

      -
        -
      • Due to a recently discovered report it turns out The Wizard Federation has devised a way for CEOs to stop having some teas from their Smartfridges due to this change all smartfridges will temporarily be unable to stack contents.
      • -
      -

      Joan updated:

      -
        -
      • Revenant draining now takes about 5 seconds to complete and can be interrupted by dragging the target away.
      • -
      • Revenants can now tell if they are currently visible.
      • -
      • Revenant ability costs tweaked; Defile now costs 40 essence to cast, Overload Lights now costs 45 essence to cast, and Malfunction now costs 50 essence to cast.
      • -
      • Malfunction now affects non-machine objects, even if they're not being held by a human.
      • -
      • Defile does an extremely low amount of toxin damage to humans and confuses, but does much less stamina damage and stuns the revenant for slightly longer.
      • -
      • Overload Lights will no longer shock if the light is broken after a light is chosen to shock an area.
      • -
      -

      Kor updated:

      -
        -
      • Using water on a dark blue slime extract will now yield a new potion capable of completely fireproofing clothing items.
      • -
      • You can once again click+drag mobs into disposal units. Xenobiologists rejoice.
      • -
      -

      Xhuis updated:

      -
        -
      • Shadowling abilities now require the user to be human.
      • -
      • Enthralling now takes 21 seconds (down from 30).
      • -
      • Regenerate Chitin has been renamed to Rapid Re-Hatch.
      • -
      • Dethralling surgery's final step now requires a flash, penlight, or flashlight.
      • -
      • Dethralling surgery now produces a black tumor, which has a high biological tech origin but dies quickly in the light.
      • -
      • Shadowlings no longer have Enthrall before hatching.
      • -
      • Shadowling clothing now has icons to better reflect its existence.
      • -
      • Ascendant Broadcast has been removed.
      • -
      • Destroy Engines is now removed from the user after it is used once.
      • -
      - -

      05 November 2015

      -

      AnturK updated:

      -
        -
      • Added wild shapeshift spell for wizards.
      • -
      - -

      01 November 2015

      -

      Gun Hog updated:

      -
        -
      • Nanotrasen listens! After numerous complaints and petitions from Security personnel regarding energy weapon upkeep, we have authorized the construction and maintenance of your station's weapon rechargers. As an added bonus, we have also provided a more modular design for the devices, allowing for greater recharge rates if fitted with a more efficient capacitor!
      • -
      • Added Diagnostic HUDs! They can be used to view the health and cell status of borgs and mechs. Silicons have them built in, Roboticists get two in their locker, and the RD's hardsuit has one built in.
      • -
      -

      Incoming5643 updated:

      -
        -
      • The number of roundstart head revolutionaries nows depends on the roundstart security force as well as the roundstart heads
      • -
      • The maximum number of head revs is 3, the minimum is 1. If there is fewer than three station heads there will never be more than that number of head revs at roundstart. For every three vacant security roles (Head of Security/Warden/Security Officer/Detective) at roundstart the number of starting head revs will be reduced by 1.
      • -
      • Head revolutionaries can be gained during play if the security/head roles are filled. They are drawn from existing revolutionaries.
      • -
      • Added dental implant surgery. While targeting the mouth drill a hole in a tooth then stick a pill in there for hands free later use.
      • -
      -

      Kor updated:

      -
        -
      • Added an experimental control console for Xenobiology. Ask the admins if you'd like to try it out. It may not work on maps other than Box if they have renamed the Xenobiology Lab.
      • -
      • Injecting blood into a cerulean slime will yield a special one use set of blueprints that will allow you to expand the territory your camera can cover.
      • -
      -

      Kor and Remie updated:

      -
        -
      • Added as series of laser reflector structures, the frame of which can be built with 5 metal sheets.
      • -
      • Completing the frame with 5 glass sheets creates a mirror that will reflect lasers at a 90 degree angle.
      • -
      • Completing the frame with 10 reinforced glass sheets creates a double sided mirror that reflects lasers at a 90 degree angle.
      • -
      • Completing the frame with a single diamond sheet creates a box that will redirect all lasers that hit it from any angle in a single direction.
      • -
      -

      MMMiracles updated:

      -
        -
      • Energy Swords can now embed when thrown for a 75% chance. Embedding
      • -
      - -

      30 October 2015

      -

      Incoming5643 updated:

      -
        -
      • Slimepeople can now split if they contain 200 units of slime jelly, and slimepeople will now slowly generate slime jelly up to 200 units provided they are very well fed. Split slimepeople are NOT player controlled, but rather the original slime person can swap between the two mobs at will. If one of the slimepeople should die under player control, the player won't be able to swap back to their living body. Splitting only creates a new body, any items you have on you are not duplicated.
      • -
      • Slimepeople now take half damage from sources of heat, but double damage from sources of cold. Lasers good, Space bad.
      • -
      - -

      29 October 2015

      -

      Kor updated:

      -
        -
      • Slightly changed what items spawn on the captain vs in his locker, hopefully saving some annoying inventory shuffle at roundstart.
      • -
      - -

      28 October 2015

      -

      Tkdrg updated:

      -
        -
      • Added a Ghost On-screen HUD. It can be toggled using the "Toggle Ghost HUD" verb. Thank you Razharas for the sprites!
      • -
      • Ghosts can now use the "Toggle med/sec HUD" verb to see the basic secHUD (jobs only) or the medHUD of humans.
      • -
      • Ghost will now get clickable icon alerts from events such as being put in a cloner, drones being created, Nar-sie being summoned, among others. The older chat messages were kept. These alerts can not be toggled.
      • -
      - -

      27 October 2015

      -

      Joan updated:

      -
        -
      • You can now click on things under timestop effects, instead of clicking the effect and looking like a fool.
      • -
      -

      Kor updated:

      -
        -
      • Added a zombie mob that turns its kills into more zombies. Currently adminspawn and xenobio only.
      • -
      • Using water with a red slime extract will now yield a speed potion. Using the speed potion on an item of clothing will paint it red and remove its slowdown.
      • -
      -

      MrStonedOne updated:

      -
        -
      • You may now access the setup character screen when not in the lobby via the game preferences verb in the preferences tab
      • -
      • The round end restart delay can now be configured by server operators. New servers will default to 90 seconds while old servers will default to the old 25 seconds until they import the config option to their server.
      • -
      - -

      26 October 2015

      -

      Fox P McCloud updated:

      -
        -
      • Standardizes the slowdown of most spacesuits to 1 as opposed to 2.
      • -
      -

      Incoming5643 updated:

      -
        -
      • 48x48 pixel mode (x1.5 zoom) has been added to the Icons menu (top left). While playing in 32x32 or 64x64 will still provide a clearer looking station, for those of us with resolutions that fall into the gap between the two zooms this can provide a more consistant looking station than stretch to fit.
      • -
      • 96x96 pixel mode (x3 zoom) has also been added for our players who enjoy looking at spacemen on their 4k monitors at a crisp and consistent scale.
      • -
      • The lich spell has been subjected to some gentle nerfing. When you die a string of energy will tie your new body to your old body for a short time, aiding others in determining your location. The duration of this beam scales with the number of deaths you've avoided.
      • -
      • Additionally the post revival stun now also scales in this way.
      • -
      • The spell will also fail if the item and the wizard don't share the same z level, though the nature of space means the odds of the item (or the wizard) looping around back to the station is pretty high.
      • -
      • The spell is still really good.
      • -
      - -

      25 October 2015

      -

      Incoming5643 updated:

      -
        -
      • The spell Charge has been added to the spellbook. It can be used to extend the life of magic and energy weapons and even reset the cooldowns of held wizards! It cannot reset your own cooldowns.
      • -
      • The Staff of Healing has been added to the spellbook. Heals all damage and raises the dead! Can't be used on yourself however.
      • -
      • The exploit that allowed you to use the staff of healing on yourself by suicide has been fixed.
      • -
      -

      Jordie0608 updated:

      -
        -
      • You can now selectively mute non-admin players from OOC with the Ignore verb in the OOC tab.
      • -
      -

      Tkdrg updated:

      -
        -
      • Added chainsaws. They can be tablecrafted using a circular saw, a plasteel sheet, some cable coil, and a welding tool. Don't forget to turn it on!
      • -
      - -

      24 October 2015

      -

      Kor updated:

      -
        -
      • The friendly gold slime reaction now spawns three mobs.
      • -
      -

      phil235 updated:

      -
        -
      • Changed the effects of alcohol to be more realistic. The effects of alcohol now appear twice as fast. Drunkenness now scales with how much alcohol is in you, not how long you've been drinking. This means drinking very little but continuously no longer makes you very drunk, or confused/slurring for a long time or give you alcohol poisoning. The dizziness and slurring effects now properly scale with how drunk you are (and dizziness is generally more pronounced).
      • -
      - -

      23 October 2015

      -

      Incoming5643 updated:

      -
        -
      • Syndicate bomb payloads will now detonate if set on fire long enough. Note that the casings for the bombs is fireproof, so if you want to set fire to a bombcore you'll need to remove it from the case first (cut all wires, then crowbar it out). A reassurance from our explosives department: it is, and always has been, impossible to detonate a syndicate bomb that isn't ticking with wirecutters alone.
      • -
      -

      Xhuis updated:

      -
        -
      • Geiger counters have been added and are obtainable from autolathes and EngiVends. They will measure the severity of radiation pulses while in your pockets, belt, or hands. One can scan a mob's radiation level by switching to Help intent and clicking on it. These counters never really discard the radiation they store, and rumor has it this can be used in nefarious ways...
      • -
      • When a mob is impacted by radiation, the radiation is now relayed to all items on the mob.
      • -
      - -

      19 October 2015

      -

      AnturK updated:

      -
        -
      • Handheld T-Ray Scanners now detect critters in pipes.
      • -
      -

      Kor updated:

      -
        -
      • Weapons and projectiles that are armour piercing now have an increased chance to bypass riot shields.
      • -
      • Slipping on lube now deals slightly more damage, but is concentrated on a random body part, rather than spread to your entire body.
      • -
      • Slipping on water no longer deals damage
      • -
      • You can now attach grenades and C4 to spears to create explosive lances. This is done via table crafting. Alt+click the spear to set a war cry.
      • -
      -

      Shadowlight213 updated:

      -
        -
      • In response to reports of stranded drones, Nanotrasen has added magnets to drone legs. They are no longer affected by lack of gravity or spacewind!
      • -
      • Drones can now set Airlock access on RCDs.
      • -
      -

      bgobandit updated:

      -
        -
      • Nanotrasen loves recycling! In the highly unlikely occasion that your space station accumulates gibs, scoop 'em up and bring them to chemistry to recycle into soap, candles, or even delicious meat product!
      • -
      • L3 biohazard closets now contain bio-bag satchels for the safe collection of biowaste products, such as slime extracts.
      • -
      -

      phil235 updated:

      -
        -
      • Removing Smile, Swedish, Chav and Elvis mutations from genetics. These mutation can still be acquired via adminspawned dna injector.
      • -
      • Added a dna injector for laser eyes mutation for admin use.
      • -
      • Fixes winter coat hood sprite appearing as a bucket.
      • -
      • Fixes using razor on non human shaving non existent hair.
      • -
      • Fixes chair deconstruction dropping too much metal.
      • -
      • Fixes snapcorn not giving seeds.
      • -
      • Fixes portable chem dispenser.
      • -
      • Changing the transfer amount of all reagent containers (beaker, bucket, glass) is now done by clicking them, similar to spray. Reagent dispensers (watertank, fueltank, pepperspray dispenser) no longer have their own transfer amounts and use the reagent container's transfer amount instead (except for sprays which get 50u for faster refilling).
      • -
      - -

      16 October 2015

      -

      MrStonedOne updated:

      -
        -
      • Added a reconnect option to the file menu. This will allow you to reconnect to the game server without closing and re-opening the game window. This should also prevent another byond ad from playing during reconnections.
      • -
      -

      Xhuis updated:

      -
        -
      • A gamebreaking bug has been fixed with buckets. You can now wear them on your head.
      • -
      -

      bgobandit updated:

      -
        -
      • The Grape Growers Consortium has complained that Nanotrasen kitchens do not use their products enough. HQ has come up with a few recipes to pacify them. Goddamn winos.
      • -
      - -

      13 October 2015

      -

      AnturK updated:

      -
        -
      • Display cases can now be built using 5 wood planks and 10 glass sheets.
      • -
      • Add airlock electronics to open it with id later, otherwise you'll have to use crowbar
      • -
      • Broken display cases can be fixed with glass sheets or removed using crowbar
      • -
      • Added start_showpiece_type variable for mappers to create custom displays
      • -
      • Syndicate Lone Operatives spotted near the nanotrasen stations! Keep the disk safe!
      • -
      • Admin spawned nuclear operatives will now have access to nukeop equipment
      • -
      -

      Gun Hog updated:

      -
        -
      • Nanotrasen's research team has released a new, high tech design for Science Goggles, which previously did nothing! They new come fitted with a portable scanning module which will display the potential research data gained from experimenting with an object. Nanotrasen has also released drivers which shall enable the prototype hardsuit's built in scan visor.
      • -
      • Supporting this new design, Nanotrasen has seen fit to provide blueprints for Science Goggles to the station's protolathe.
      • -
      -

      Kor updated:

      -
        -
      • Gang implanters now only break implants/deconvert gangsters, meaning you will have to use a pen to convert them afterwards.
      • -
      • An important function, accessible via alt+click, has been restored to the detectives hat.
      • -
      • When Nar-Sie is created, they now use the old sound effect.
      • -
      -

      Steelpoint updated:

      -
        -
      • The Chief Medical Officers 'Medical Hardsuit' has been added to the CMO's office. Boasts the usage of lightweight materials allowing fast movement while wearing the suit as well as complete biological protection to airborne and similar pathogens.
      • -
      • The Head of Security's personal 'HoS Hardsuit' has been added to the HoS's office. This Hardsuit is slightly more armored than the regular Security Hardsuit.
      • -
      • The Research Directors 'Prototype Hardsuit' has been added to the RD's office. This Hardsuit offers the highest levels of protection against explosive, as well as biological, attacks, as well as fireproofing.
      • -
      • The Command EVA space suits, due to budget concerns, have been removed and reloacted to another space station.
      • -
      -

      Xhuis updated:

      -
        -
      • All instances of autorifles have been removed from Security.
      • -
      • The armory has been re-mapped.
      • -
      • The spell book has received a rebalancing! There are now ten uses by default, but most spells cost two uses. Some underused spells, like Blind, Smoke, and Forcewall, only cost a single use.
      • -
      • After searching through the Sleeping Carp's ancient monastery in deep space, more secrets have been uncovered of their traditional fighting techniques.
      • -
      • Members of the Sleeping Carp gang are now able to deflect all ranged projectiles.
      • -
      • Members of the Sleeping Carp gang are now uanble to use any type of ranged weaponry. Doing so would be dishonorable.
      • -
      • The Sleeping Carp martial art's effects are more damaging, and many stuns have been increased in duration.
      • -
      -

      phil235 updated:

      -
        -
      • Fixes critical bug causing multiple hits from single projectile.
      • -
      • Fixes not being able to shoot a mob on same tile as the shooter.
      • -
      • Clicking your mob (without targeting your mouth) no longer causes you to shoot yourself.
      • -
      • Fixes not being able to shoot non human mobs at point blank.
      • -
      • Morphs no longer automatically drop the things they swallowed, you have to butcher their corpse to retrieve their contents.
      • -
      • butchering a corpse no longer also attacks it.
      • -
      • Dipping cigarette (to asbsorb liquids) in a glass can now only be done with an unlit cigarette. Lit cigarette now heats up the glass content (like other heat sources).
      • -
      • Fixes trashbag not being able to pickup drinks and ammo casings.
      • -
      • Slimes now attaches themselves to mobs via buckling.
      • -
      - -

      07 October 2015

      -

      Kor updated:

      -
        -
      • The alien queen can now perform a tail sweep attack, throwing back and stunning all nearby foes.
      • -
      - -

      06 October 2015

      -

      Gun Hog, for WJohnston updated:

      -
        -
      • Add new Xenomorph caste: The Praetorian. Drones may become this on their way to growing into a full queen, and a queen may promote one if there is not one already.
      • -
      • Xenomorph queens are now GIGANTIC, along with the new Praetorian. Together, they are considered royals.
      • -
      • Queens are now significantly tougher to make up for their huge size.
      • -
      • All forms of dead xenomorph may now be grabbed and placed on a surgery table for organ harvesting!
      • -
      -

      Xhuis updated:

      -
        -
      • Maintenance drones now have a more descriptive message when examined.
      • -
      • A recent Nanotrasen firmware update to drones has increased vulnerability to foreign influences. Please periodically check drones for abnormal behavior or status LED malfunction. Note, however, that cryptographic sequencers will not incur this behavior.
      • -
      • In response to complaints about rogue drones, Nanotrasen engineers have allowed factory resets on all drones by simply using a wrench.
      • -
      • Central Command reminds drones to immediately retreat, if possible, when a law override is begun. Not doing so may anger the gods and incur their wrath!
      • -
      • Some virus symptoms that had no messages now have them.
      • -
      • New virology symptom: Weakness. This will cause stamina damage and fainting spells.
      • -
      • Many virus symptom messages have been changed to be more threatening.
      • -
      - -

      04 October 2015

      -

      Fox P McCloud updated:

      -
        -
      • Adds a bar of soap to the janitor's locker.
      • -
      • Re-adds the advanced mop as a researchable R&D item.
      • -
      • Adds a bluespace trashbag as a researchable R&D item; can hold large quantities of garbage.
      • -
      -

      Jordie0608 updated:

      -
        -
      • Added Special Verb 'Create Poll', an in-game interface to create server polls for admins with +permissions.
      • -
      -

      MrPerson updated:

      -
        -
      • Removed NTSL. Sorry. People could write scripts that crashed the server, and this is the only thing that can be done to prevent them from doing that.
      • -
      -

      MrStonedOne updated:

      -
        -
      • Removed feature where quick consecutive ghost orbits while moving could be used to fuck with your sprite
      • -
      • Fixed ghosts losing floating animation when returning from an orbit
      • -
      • Fixed logic error that prevented orbit's automatic cancel when the orbiting thing moved in certain situations.
      • -
      • Ghost Orbit size now changes based on the icon size of the thing they are orbiting (for that sweet sweet singulo orbiting action)
      • -
      • Removed needless checks in ghost orbit, you can now orbit yourself and restart an orbit around the thing you are already orbiting
      • -
      -

      Xhuis updated:

      -
        -
      • Syndicate Medical cyborgs now have cryptographic sequencers.
      • -
      • Syndicate Medical cyborgs no longer have syringes.
      • -
      • Restorative Nanites now heal much more damage per type.
      • -
      • Operative pinpointers now actually point toward the nearest operative.
      • -
      • Syndicate Assault cyborgs no longer start with medical supplies.
      • -
      • Energy saws now have a proper icon.
      • -
      • Non-operatives can now longer use operative pinpointers or Syndicate cyborg teleporters.
      • -
      • Doctor's Delight now requires cryoxadone in its recipe instead of omnizine.
      • -
      • Doctor's Delight now restores half a point of brute, burn, toxin, and oxygen damage per tick.
      • -
      • Doctor's Delight now drains nutrition while it's in your system (that is, unless you're a doctor).
      • -
      • Syndicate roboticists have given Syndicate medical cyborgs sharper hypospray needles - they are now able to penetrate armor.
      • -
      - -

      29 September 2015

      -

      Kor updated:

      -
        -
      • The Chaos holoparasite can now actually set people on fire properly.
      • -
      • Guardian powers are now used via alt+click rather than shift+click.
      • -
      • Added an alert chime for ghosts when someone is summoning a Guardian.
      • -
      - -

      28 September 2015

      -

      Feemjmeem updated:

      -
        -
      • Rechargers can now be wrenched and unwrenched by cyborgs.
      • -
      • Rechargers no longer stop working forever if you move them from an unpowered area to a powered area, and now actually look powered off when they are.
      • -
      • Guns and batons can no longer be placed in unwrenched chargers.
      • -
      -

      Razharas updated:

      -
        -
      • Added button to preferences menu that kills all currently playing sounds when pressed, now you can kill midis and any other sounds for real.
      • -
      -

      phil235 updated:

      -
        -
      • Fixed the syndicate cyborg's grenade launcher.
      • -
      • You can modify the dna of corpses again.
      • -
      - -

      26 September 2015

      -

      MMMiracles updated:

      -
        -
      • Nanotrasen's genetic researchers have rediscovered the inactive dwarfism genetic defect inside all bipedal humanoids. Suffer not the short to live.
      • -
      -

      WJohnston updated:

      -
        -
      • Repiped the entire station. Atmosia and the disposals loop were not touched.
      • -
      • Moved mulebot delivery from misc lab to RnD.
      • -
      - -

      25 September 2015

      -

      Xhuis updated:

      -
        -
      • Changelings have a new ablity, Biodegrade. Costing 30 chemicals and having an unlock cost of 1, it allows them to dissolve handcuffs and straight jackets in 3 seconds, and escape from lockers in 7.
      • -
      • Fleshmend's effectiveness is now halved each time it is used in a short time span.
      • -
      • Last Resort now blinds and confuses nearby humans and briefly disables silicons upon use.
      • -
      • Headslugs now have 50 health, up from 20.
      • -
      - -

      24 September 2015

      -

      Jordie0608 updated:

      -
        -
      • Advanced energy guns now only critically fail after successive minor failures. Cease firing after multiple recent minor failures to avoid critical ones.
      • -
      -

      Kor updated:

      -
        -
      • Guardian Spirit types and powers have been heavily reworked. Full details of each type are available on the wiki.
      • -
      • Guardian damage transfer to users now deals cloneloss if their user is in crit.
      • -
      • Guardians are now undergoing a trial run in the traitor uplink, under the name of Holoparasites.
      • -
      • You can now hang human mobs (dead or alive) from meatspikes. Escaping the meatspike will further damage the victim.
      • -
      • You can no longer slam humans into the meatspike as an attack.
      • -
      - -

      23 September 2015

      -

      Xhuis updated:

      -
        -
      • Syndicate medical cyborgs have been added.
      • -
      • The Dart Pistol is now available from the uplink for 4 telecrystals. It functions as a pocket-sized syringe gun with a quieter firing sound.
      • -
      • Boxes of riot foam darts now cost 2 telecrystals, down from 10, and are available to traitors.
      • -
      • Foam dart pistols now cost 3 telecrystals, down from 6.
      • -
      • Syndicate cyborg teleporters now allow a choice between Assault and Medical cyborgs.
      • -
      • Syndicate cyborgs are now distinguished as Syndicate Assault.
      • -
      • Syndicate cyborg energy swords now cost 50 energy per use, down from 500.
      • -
      • Airlock charges now cost 2 telecrystals, down from 5.
      • -
      • Airlock charges are much more powerful.
      • -
      • There is no longer a 25% chance to detonate an airlock charge while removing it.
      • -
      • The description of many uplink items has been changed to better reflect their use.
      • -
      - -

      22 September 2015

      -

      Kor updated:

      -
        -
      • A new admin command, Offer Control to Ghosts, can be found in the view variables menu. It will randomly select a willing candidate from among dead players, providing a fair method of replacing antagonists.
      • -
      -

      Xhuis updated:

      -
        -
      • When a morph changes form, a message is shown to nearby people. This also happens upon undisguising.
      • -
      • Morphs now have an attack sound and message.
      • -
      • The Spawn Morph event now plays a sound to the chosen candidate.
      • -
      • Slaughter demons (and other creatures with blood crawl) now take two seconds to emerge from blood pools. Entering is still instantaneous.
      • -
      • The demon heart's sprite has been updated.
      • -
      • Eating a demon heart now surgically implants the heart into your chest. If the heart is removed from you, you lose the ability. Someone else can eat the heart to gain the ability.
      • -
      • Blood Crawl no longer has a 1-second cooldown, instead having none.
      • -
      • You can no longer hold items when attempting to Blood Crawl, nor can you use any items while Blood Crawling.
      • -
      • Creatures that can Blood Crawl now take two seconds to emerge from blood pools.
      • -
      • Slaughter demons now store devoured creatures, and will drop them upon death.
      • -
      • Revenants now have the ability to speak to the dead.
      • -
      • Revenant abilities now have icons.
      • -
      • Malfunction no longer EMPs a specific area - it will instead EMP nearby machines directly and stun cyborgs. Dominators are immune to this.
      • -
      • Revenants now have directional sprites.
      • -
      • Overload Lights now has a smaller radius.
      • -
      • Defile no longer corrupts tiles.
      • -
      • When glimmering residue reforms, the game will attempt to place the old revenant in control of the new one. If this cannot be done, it will find a random candidate.
      • -
      • Revenants can no longer see ghosts. They can see other revenants, however, and ghosts can still see revenants.
      • -
      • The Spawn Slaughter Demon event now plays a sound to the chosen candidate.
      • -
      -

      phil235 updated:

      -
        -
      • Lizards and other non human species can no longer acquire the hulk mutation. Hulks no longer have red eyes
      • -
      • Monkeys now always have dna and a blood type (compatible with humans).
      • -
      • Monkey transformation no longer deletes the human's clothes.
      • -
      • Space Retrovirus now correctly transfers dna SE to the infected human.
      • -
      • Changeling's Anatomic Panacea removes alien embryo again.
      • -
      • Cloning someone now correctly sets up their dna UE.
      • -
      • Fixes the laser eyes mutation not giving glowing red eyes to the human.
      • -
      • Using changeling readaptation now properly removes all evolutions bought (arm blade, chameleon skin, organic suit).
      • -
      -

      xxalpha updated:

      -
        -
      • Added a researchable cyborg self-repair module to the robotics fabricator.
      • -
      - -

      20 September 2015

      -

      Xhuis updated:

      -
        -
      • Rites have been renamed to their old runes, which reflect their functionality.
      • -
      • Examining a talisman no longer opens the paper GUI.
      • -
      • Armor talismans have been re-added.
      • -
      • EMP talismans now have the same range as their rune counterpart.
      • -
      • Some talismans now cost health to use, costing more or less depending on their effect.
      • -
      • Scribing runes now deals 0.1 brute damage instead of 1.
      • -
      • Bind Talisman runes no longer deal 5 brute damage when invoking.
      • -
      • Rune shapes and colors are now identical to their old versions.
      • -
      • Conversion runes can no longer be used by yourself, and require a static 2 cultists.
      • -
      - -

      19 September 2015

      -

      Xhuis updated:

      -
        -
      • Shadowlings are now able to sacrifice a thrall to extend the shuttle timer by 15 minutes. This will not stack.
      • -
      • Additional abilities granted by Collective Mind will now properly have icons.
      • -
      • Shadowlings now have their antagonism removed if turned into a silicon.
      • -
      • The order of abilities unlocked by Collective Mind has been changed. It now starts with Sonic Screech.
      • -
      • Veil now destroys glowshrooms in a much larger radius than before.
      • -
      - -

      17 September 2015

      -

      bgobandit updated:

      -
        -
      • Meatspikes can now be constructed and deconstructed with metal and rods, as well as wrenched and unwrenched! Humans and corgis can be used on them as well.
      • -
      -

      xxalpha updated:

      -
        -
      • Reworked nuke deconstruction: Standardized steps, partial reparation (use metal) to contain radiation.
      • -
      • New portable nuke, self-destruct terminal, syndie screwdriver sprites by WJohnston.
      • -
      - -

      16 September 2015

      -

      Razharas updated:

      -
        -
      • Replaces the space cube with space torus. Space levels are now each round randomly placed on the grid with at least one neigbour, any side of the space level that doesnt have neigbour will loop either onto itself or onto the opposite side of the furthest straight-connected space level on the same axis.
      • -
      -

      Supermichael777 updated:

      -
        -
      • The detomax pda cartridge no longer blows its user up.
      • -
      -

      Xhuis updated:

      -
        -
      • Cultists will now be able to create all runes without needing to research or collect words. This is subject to change.
      • -
      • Cult code has been significantly improved and will run much faster and be more responsive.
      • -
      • Conversion runes can now be invoked with less than three cultists, but take a small amount of time to convert the target.
      • -
      • Armor runes will only outfit the user with standard armor, rather than having different loadouts for different worn clothing items.
      • -
      • Astral Journey runes will now pull the user back to the rune if they are moved. The user also has a different color while on the rune.
      • -
      • Free Cultist has been removed. Summon Cultist now works even if the target is restrained.
      • -
      • Sacrifice and Raise Dead runes now offer more precise target selection.
      • -
      • Sacrifice runes now have different sounds, and gib rather than dust (assuming the target is not a silicon).
      • -
      • There is no longer a maximum cap on active runes.
      • -
      • Runes have been renamed to Rites. For instance, the Teleport rune is now the Rite of Translocation. The only exception to this is the rune to summon Nar-Sie, which is a Ritual.
      • -
      • Nar-Sie now has a new summon sound.
      • -
      • The Nar-Sie summon rune has a new 3x3 sprite.
      • -
      • The stun rune no longer stuns cultists.
      • -
      • The Rite of False Truths had been added, that will make all nearby runes appear as if they were drawn in crayon.
      • -
      • Runes can now be examined by cultists to determine their name, function, and words.
      • -
      -

      phil235 updated:

      -
        -
      • Riot and energy shield users now have a chance to block things thrown at them as well as xeno leaping at them.
      • -
      - -

      14 September 2015

      -

      Fox P McCloud updated:

      -
        -
      • Adds a mining voucher to the Quartermaster's locker.
      • -
      -

      Thunder12345 updated:

      -
        -
      • The captain has been issued with a new jacket for formal occasions.
      • -
      • Research has shown that is is possible to build technological shotshells without the need for silver. The design blueprints supplied to your station have been updated accordingly.
      • -
      -

      xxalpha updated:

      -
        -
      • Fixed not being able to grab things from storage while inside aliens.
      • -
      • Fixed two progress bars when devouring.
      • -
      • Shields will now block alien hunter pounces.
      • -
      • Alien hunters health reduced to 125 from 150. Alien sentinels health increased to 150 from 125.
      • -
      • Alien hunters will no longer be transparent when stalking, this ability was given to alien sentinels.
      • -
      • Alien slashing now deals constant 20 damage but has a chance to miss.
      • -
      • Reduced alien disarm stun duration vs cyborgs, from 7 seconds to 2 seconds.
      • -
      • Alien sentinels now move as fast as humans.
      • -
      • Facehuggers and alien eggs layers increased to be higher than resin walls.
      • -
      - -

      13 September 2015

      -

      Fox P McCloud updated:

      -
        -
      • Fixes an exploit and inconsistency issue with a few material amounts on a few items and designs.
      • -
      • Fixes Bibles/holy books not properly revealing runes.
      • -
      • fixes stimulants not properly applying its speedbuff.
      • -
      -

      Gun Hog updated:

      -
        -
      • Nanotrasen scientists have proposed a refined prototype design for the nuclear powered Advanced Energy guns to include a taser function along with the disable and kill modes. Addtionally, they have modified the chassis blueprint to include a hardpoint for attachable seclites.
      • -
      -

      Iamgoofball updated:

      -
        -
      • Reduced the cost of changeling armor to 1 and increased it's armor values.
      • -
      -

      Jordie0608 updated:

      -
        -
      • You can now view the reason of a jobban from character setup.
      • -
      -

      xxalpha updated:

      -
        -
      • Drying agent splashed on galoshes will turn them into absorbent galoshes that dry wet floors they walk on.
      • -
      • Drying agent can be made with ethanol, sodium and stable plasma.
      • -
      - -

      11 September 2015

      -

      CosmicScientist updated:

      -
        -
      • Drone dispenser now has a var for its cooldown, get var editing.
      • -
      - -

      09 September 2015

      -

      Joan updated:

      -
        -
      • New blob chemical; Cryogenic Liquid. Cools down targets.
      • -
      • Tweaked names, colors, and effects of remaining blob chemicals;
      • -
      • Skin Ripper is now Ripping Tendrils and does minor stamina damage, in addition to the brute damage.
      • -
      • Toxic Goop is now Envenomed Filaments and injects targets with spore toxin and causes hallucinations, in addition to the toxin damage.
      • -
      • Lung Destroying Toxin is now Lexorin Jelly and does brute damage instead of toxin damage. The oxygen loss it causes can also no longer crit you in one hit.
      • -
      • Explosive Gelatin is now Kinetic Gelatin and does random brute damage, instead of randomly exploding targets.
      • -
      • Skin Melter, Radioactive Liquid, Omnizine, and Space Drugs blob chemicals are gone.
      • -
      -

      bgobandit updated:

      -
        -
      • Nanotrasen has commissioned two new corporate motivational posters for your perusal and edification.
      • -
      • Nanotrasen also wishes to remind the crew that non-authorized posters ARE CONTRABAND. Especially those new ones with Rule 34. Perverts.
      • -
      - -

      07 September 2015

      -

      xxalpha updated:

      -
        -
      • Changed xeno weed spread to be like gas spread.
      • -
      - -

      06 September 2015

      -

      Fox P McCloud updated:

      -
        -
      • Fixes gold sheets having plasma as their material.
      • -
      -

      Xhuis updated:

      -
        -
      • Nanotrasen inspectors have discovered a fault in the buckles of chairs and beds. This has been fixed and you are now able to buckle again.
      • -
      - -

      05 September 2015

      -

      Shadowlight213 updated:

      -
        -
      • The syndicate have taken notice of the camera bug's woeful underuse, and have managed to combine all of its upgrades into one!
      • -
      - -

      01 September 2015

      -

      Dorsidwarf updated:

      -
        -
      • Changelings' Digital Camoflague ability now renders them totally invisible to the AI
      • -
      -

      ExcessiveUseOfCobblestone updated:

      -
        -
      • Added health analyzer to the autolathe.
      • -
      • Moved Cloning board to Medical Machinery section.
      • -
      • Moved Telesci stuff to Teleporter section.
      • -
      -

      Fox P McCloud updated:

      -
        -
      • Adds the emitter board to to the circuit imprinter for R&D.
      • -
      -

      Gun Hog updated:

      -
        -
      • The Disable RCD Malfunction power is now Destroy RCDs! It costs 25 CPU (down from 50), causes RCDs to explode, can be used multiple times, and no longer affects cyborgs.
      • -
      -

      Kor updated:

      -
        -
      • Revheads and Gang leaders now spawn with chameleon security HUDs, for keeping track of loyalty implanted crew.
      • -
      • Syndicate thermals now have a chameleon function as well, allowing you to disguise the goggles to match your job.
      • -
      -

      Miauw updated:

      -
        -
      • Edaggers actually work now and have been buffed to 18 brute and 2 TC.
      • -
      -

      Oisin100 updated:

      -
        -
      • Nanotransen discover ancient human knowledge confirming that trees produce Oxygen From Carbon Dioxide
      • -
      • Trees now require Oxygen to live. And will die in extreme temperatures
      • -
      -

      Xhuis updated:

      -
        -
      • The arcade machines have been stocked with a xenomorph action figure that comes with realistic sounds!
      • -
      • Darksight now has its own icon.
      • -
      • Empowered thralls have been added. While obvious, they are more powerful and can resist dethralling while conscious. Only 5 can exist at one time.
      • -
      • Shadowlings can now change their night vision radius by using the action button their eyes (glasses) now provide.
      • -
      • Torches are dimmer, being as bright as flashlights, and no longer fit on belts.
      • -
      • Black Recuperation now has a 1 minute cooldown, down from 5. It can also be used to empower living thralls.
      • -
      • Guise can now be used outside of darkness and makes the user more invisible than before.
      • -
      • Enthrall now functions properly when a shadowling is not hatched, allowing them to enthrall up to 5 people before hatching.
      • -
      -

      xxalpha updated:

      -
        -
      • Blood crawling is now a spell.
      • -
      • Engineering cyborgs now have a constant magpulse.
      • -
      • Changed foam spreading to be like gas spreading.
      • -
      - -

      28 August 2015

      -

      bgobandit updated:

      -
        -
      • Overheard at CentComm: 'This burn kit said salicyclic acid would heal my burns! WHO MADE THIS SHIT?' A muffled honking is heard in the background. (Burn first-aid kits now contain an appropriate burn pill.)
      • -
      • Oxandrolone, a new burn healing medication, has been added to burn first-aid kits and to chemistry. Ingesting 25 units or more causes burn and brute damage.
      • -
      - -

      19 August 2015

      -

      Joan updated:

      -
        -
      • Added a new revenant ability; Malfunction. It does bad stuff to machines.
      • -
      • Defile and Overload Lights now briefly stun the revenant.
      • -
      • You can now Harvest a target by clicking on them while next to them.
      • -
      • Harvesting no longer leaves you draining if the target is deleted mid-drain attempt.
      • -
      • Defile no longer emags bots or disables cyborgs, Malfunction does that now.
      • -
      -

      Kor updated:

      -
        -
      • The Ranged and Scout guardian types have been merged, and gained a new surveillance snare ability.
      • -
      -

      SconesC updated:

      -
        -
      • Added Military Belts to traitor uplinks.
      • -
      -

      bgobandit updated:

      -
        -
      • CentComm now offers its cargo department toys, as well as detective gear so their boss can figure out which tech wasted all the points on them.
      • -
      -

      phil235 updated:

      -
        -
      • You can now partially protect yourself from blob attack effects by wearing impermeable clothes like hardsuits, medical clothes, masks, etc. Max protection effect is capped at 50%.
      • -
      • Splashing someone with chemicals no longer injects those chemicals in their body.
      • -
      • Fixes splashing acid on items or floor with items not having any effect.
      • -
      - -

      18 August 2015

      -

      CoreOverload updated:

      -
        -
      • Added a new low-tech eye cyberimplant in RnD - welding shield implant.
      • -
      • Implanter and empty implant case added to protolathe.
      • -
      • You can sell tech disks and maxed reliability design disks in cargo for supply points.
      • -
      • DA menu shows current research levels.
      • -
      • You can print cyberimplants in updated mech fab.
      • -
      -

      Supermichael777 updated:

      -
        -
      • Added an ooc hotkey for borgs = O. They simply didn't have one and it was a consistency issue
      • -
      • Also added Ctrl+O as an any mode keycombo so you dont have to backspace and type ooc. Added to hotkey mode to remain consistent with all other Ctrl combos
      • -
      -

      bustygoku updated:

      -
        -
      • Most backpacks now have 21 or more slots, but are still weight restricted. What this means is that you can have a lot of tiny weight items, but only 7 medium items just like before.
      • -
      -

      phil235 updated:

      -
        -
      • Janicart rider no longer slip on wet floor or bananas. Moving on a floor tile with lube while buckled (chair, roller bed, etc) will make you fall off.
      • -
      - -

      16 August 2015

      -

      Joan updated:

      -
        -
      • Revenants will now occasionally spawn as an event.
      • -
      • Revenants gain more energy from Harvesting, and can Harvest from people in crit.
      • -
      • Revenant powers are more effective, and no longer freeze you in place, besides Harvest.
      • -
      • Slain Revenants will respawn much faster.
      • -
      • Fixed a whole bunch of revenant bugs, including one that caused the objective to always fail.
      • -
      -

      Kor updated:

      -
        -
      • The wizard can now stop time.
      • -
      -

      MMMiracles updated:

      -
        -
      • Revamps bioterror darts into a less-lethal, syringe form. Removed the coniine and spore toxins to keep it solely for quiet take-downs.
      • -
      - -

      15 August 2015

      -

      Miauw updated:

      -
        -
      • Changeling transformations have been upgraded to also include clothing instead of just DNA.
      • -
      • Patches no longer work on dead people.
      • -
      • Added 15-force edaggers that function like pens when off.
      • -
      -

      MrPerson updated:

      -
        -
      • Objects being dragged will no longer get shoved out of your grasp by space wind. Retrieving dead bodies should be possible.
      • -
      -

      RemieRichards updated:

      -
        -
      • Added Changeling Team Objectives, these are handed out to all lings, with the chance of a round having one being 20*number_of_lings% (3 lings = 60%)
      • -
      • Impersonate Department (Team Objective): As many members of a department as can reasonably be picked are chosen for the lings to kill, replace and escape as
      • -
      • Impersonate Heads (Team Objective): 3 to 6 Heads of Staff are chosen for the lings to kill, replace and escape as
      • -
      • If the Changelings have a Team Objective, their usual Kill, Maroon, Etc. objectives will not pick other changelings, to discourage backstabbing in teamling
      • -
      • Changeling Engorged Glands is now the default storage and regen rate, Engorged Glands remains for an extra boost
      • -
      • Armblades can now be used to open powered doors, however it takes 10 seconds of the changeling standing still, Their ability to instantly open unpowered doors remains unchanged
      • -
      • Debrain objective is no longer handed out to lings, it's as good as broken these days
      • -
      • Changelings may now purchase a togglable version of the Chameleon Skin genetics mutation, for 2 DNA
      • -
      - -

      13 August 2015

      -

      CoreOverload updated:

      -
        -
      • Added a new 8TC traitor item: subspace storage implant. It allows you to store two box-sized items in (almost) undetectable storage.
      • -
      • Changed the way most of the surgical operations work. See wiki for new steps.
      • -
      • You can cancel step 2+ surgeries with drapes and cautery in inactive hand.
      • -
      • Defib no longer works on humans who have no heart. Changeling/thrall/cult/strange reagent revives are still working, and this is intended.
      • -
      • You can eat all organs raw now, with exception for brains and cyberimplants.
      • -
      • Some xenos abilities are linked to their organs. Play with xenos' guts for fun and profit!
      • -
      -

      RemieRichards updated:

      -
        -
      • Modifying a string (Text) variable with View Variables or View Variables Mass Modify now allows you to embed variables like real byond strings, For example the variable real_name; you could set a text var to [real_name] and it would be replaced with the actual contents of the var, This allows for Mass fixing of certain variables but it's also useful for badmin gimmickery
      • -
      - -

      12 August 2015

      -

      CosmicScientist updated:

      -
        -
      • Added Space Carp costume to the code, get it from an autodrobe near you.
      • -
      • Added Ian costume to the code, take his place under the HoP's hand, get it from an autodrobe or corgi hide, keep it away from washing machines or it'll meat its end as clothing.
      • -
      • Added Space Carp spacesuit to the code, I know what I'm praying for.
      • -
      -

      bgobandit updated:

      -
        -
      • After multiple complaints from WaffleCo food activists, Nanotrasen has added real chocolate, berry juice and blue flavouring to its ice cream products.
      • -
      - -

      09 August 2015

      -

      RemieRichards updated:

      -
        -
      • Nanotrasen Mandatory FunCo Subsidiary: CoderbusGames, would like to announce an update to Orion Trail!
      • -
      • Spaceports: Buy/Sell Crew, Trade Fuel for Food, Trade Food for Fuel, Buy Spare Electronics, Engine Parts and Hull Plates, or maybe you think you're tough enough to attack the spaceport?
      • -
      • Changelings: Changelings can now sneak into your crew, Changelings eat double the standard food ration and have a chance to Ambush the rest of the crew!
      • -
      • Kill Crewmembers: Do you suspect changelings? or dont feel you have enough food rations? Just shoot somebody in the head, at any time!
      • -
      - -

      07 August 2015

      -

      KorPhaeron updated:

      -
        -
      • Added a new Guardian Mob that can be summoned to manifest inside a mob.
      • -
      • Guardians can communicate with their host and materialize themselves to protect their host with magic powers.
      • -
      • Guardians are invincible but cannot live without or too far from their host, they also relay injuries they suffer to the host.
      • -
      -

      Phil235 updated:

      -
        -
      • Fixed being able to run into your own bullet.
      • -
      -

      RemieRichards updated:

      -
        -
      • You no longer need to click on an item in a storage container to remove it, clicking anywhere around the item works.
      • -
      -

      bustygoku updated:

      -
        -
      • Removed the chance for a disease to make you a carrier on transfer.
      • -
      -

      phil235 updated:

      -
        -
      • The plasma cutter's fire rate is now a bit lower but its projectile can pierce multiple asteroid walls and its range isn't lowered in pressurized environment anymore.
      • -
      - -

      06 August 2015

      -

      AnturK updated:

      -
        -
      • Adds the voodoo doll as a mining treasure, link it with a victim with an item previously held by them.
      • -
      • Once linked the voodoo doll can be used to injure, confuse and control the victim.
      • -
      -

      Core0verlad updated:

      -
        -
      • Items can now be removed from storage containers inside storage containers.
      • -
      • Beds and bedsheets have new sprites.
      • -
      • MMIs are no longer ID locked.
      • -
      -

      KorPhaeron updated:

      -
        -
      • Slaughter Demon's have had their health reduced to 200 and their speed reduced but they get a speed boost when exiting blood.
      • -
      -

      MrPerson updated:

      -
        -
      • Items stacks now automatically merge unless thrown when moved onto the same tile.
      • -
      - -

      05 August 2015

      -

      CoreOverload updated:

      -
        -
      • Implants, implant cases and implanters got RnD levels and can be DA'ed for science.
      • -
      • Surgically removed implant can be placed into an implant case. Remove implant with empty implant case in inactive hand.
      • -
      • Surgical steps now got progress bars.
      • -
      • You can cancel a surgery by using drape on operable body part again. This works only before you perform surgery's first step.
      • -
      • Operating computer shows next step for surgeries. No more alt-tabbing to view next step on wiki while operating.
      • -
      • You cannot start two surgeries on one body part at once. You can start two multiloc surgeries (i.e. two augumentations) on diffirent body parts at once.
      • -
      • Monkey <-> Human transformations now keep your internal organs, cyberimplants and xeno embryos included.
      • -
      -

      Ikarrus updated:

      -
        -
      • Head beatings no longer deconvert gangsters.
      • -
      -

      LordPidey updated:

      -
        -
      • Added a new chemical. Spray tan. It is made by mixing orange juice with oil or corn oil. Warning: overexposure may result in orange douchebaggery.
      • -
      -

      Xhuis updated:

      -
        -
      • Shadowling thralls can now be deconverted via surgery or borging.
      • -
      • Thralls can be revealed by examining them. They can hide this by wearing a mask.
      • -
      • Thralls have a few minor abilities they can use in addition to night vision.
      • -
      • Hatch-exclusive abilities can no longer be used if you are not the shadowling mutant race.
      • -
      • Ascendants are now immune to bombs and singularities. Honk.
      • -
      • A Centcom report has been added for shadowlings.
      • -
      • Ascending no longer kills all shadowling thralls. This allows antagonists who were enthralled to succeed along with the ascendants.
      • -
      • Annihilate now has different sound and a shorter delay before the target explodes. In addition, it now works on all mobs, instead of just humans.
      • -
      • Glacial Blast now properly has no cooldown if used while phase shifting.
      • -
      • Fixes a runtime if a target with no mind is enthralled.
      • -
      -

      bgobandit updated:

      -
        -
      • Nanotrasen scientists have achieved the tremendous breakthrough of injecting gold slime extracts with water. Pets ensued.
      • -
      - -

      04 August 2015

      -

      Kor updated:

      -
        -
      • Soulstones will now attempt to pull ghosts from beyond if the targeted corpse has no soul.
      • -
      -

      Summoner99 updated:

      -
        -
      • Added the *roar emote back to Alien Larva
      • -
      • Fixed aliens not being able to do the *hiss and *screech emotes
      • -
      • Changed how the plural emote system works and now some emotes have plural versions, example is: *hiss and *hisses.
      • -
      - -

      02 August 2015

      -

      Incoming5643 updated:

      -
        -
      • Syndicate toolboxes now come with never before seen red insulated gloves.
      • -
      -

      Steelpoint updated:

      -
        -
      • Fixed multiple mapping errors for Boxstation and the mining base.
      • -
      • A circuit imprinter and exosuit fabrication board have been added to tech storage.
      • -
      -

      SvartaSvansen updated:

      -
        -
      • Our lizard engineers have worked hard and managed to improve Centcom airlocks so they no longer disintegrate when the electronics are removed!
      • -
      • Put a safety net in place so future airlocks without assemblies produce the default assembly instead of disintegrating.
      • -
      - -

      30 July 2015

      -

      Gun Hog updated:

      -
        -
      • The Reactivate Camera power for Malfunctining AIs now costs 10 CPU, and works on the entire camera network, up to 30 cameras fixed.
      • -
      • The Upgrade Cameras power now costs 35 CPU, upgrades all cameras in the network to have EMP proofing, X-ray, and gives the AI night-vision.
      • -
      -

      Ikarrus updated:

      -
        -
      • Door Access buttons can now be emagged to remove access restrictions.
      • -
      -

      LordPidey updated:

      -
        -
      • Added a new medication, Miner's Salve. It heals brute/burn damage over time, and has the side effect of making the patient think their wounds are fully healed. It is mixed with water+iron+oil, or grind a twinkie, a sheet of metal, and a sheet of plasma.
      • -
      • Added a grinder to the mining station.
      • -
      -

      Midaychi updated:

      -
        -
      • Random loot has been added to the derelict as salvage for drones.
      • -
      -

      Scones updated:

      -
        -
      • Adds a Rice Hat to the biogenerator.
      • -
      - -

      29 July 2015

      -

      AnturK updated:

      -
        -
      • Aliens can now mine through asteroid rock.
      • -
      -

      GunHog updated:

      -
        -
      • Cyborg headlamps have a short cooldown before reactivation when forcibly deactivated.
      • -
      • Shadowling's Veil now shuts down headlamps for the ability's entire duration.
      • -
      -

      Kor updated:

      -
        -
      • Eating the heart of a Slaughter Demon will grant you dark powers.
      • -
      -

      freerealestate updated:

      -
        -
      • Fixed bug where copying with ctrl+C didn't work due to it being assigned to resist.
      • -
      • Changed resist to B (hotkeys mode) and ctrl+B (either mode) instead.
      • -
      • Removed End resist from cyborgs.
      • -
      - -

      28 July 2015

      -

      Anonus updated:

      -
        -
      • New gang tags for Omni and Prima gangs.
      • -
      -

      Chiefwaffles updated:

      -
        -
      • After realizing how often AIs tend to 'disappear', Central Command has authorized the shipment of the Automated Announcement System to take over the AI's responsibility of announcing new arrivals.
      • -
      • In addition, users are able to configure the messages to their liking. Early testing has shown that this feature may be vulnerable to malicious external elements!
      • -
      • The station's R&D software has been updated so it can now succesfully create its own prototype AAS board once the prerequisite levels have been met.
      • -
      -

      Dorsisdwarf updated:

      -
        -
      • Increased the cost of Bioterror darts to 6TC.
      • -
      -

      Incoming5643 updated:

      -
        -
      • Double Agents no longer know they're Double Agents and not just standard Traitors.
      • -
      -

      xxalpha updated:

      -
        -
      • Removed Anti-Drop and Nutriment Pump implants from Nuclear Operative's uplink.
      • -
      - -

      27 July 2015

      -

      Bgobandit updated:

      -
        -
      • Burgers can now be made from corgi meat again.
      • -
      -

      Ikarrus updated:

      -
        -
      • Added shutters to the armory to allow quick access when needed.
      • -
      • Security can now use the Brig external airlocks.
      • -
      • Added a join queue when the server has exceeded the population cap.
      • -
      • Decreased the cost of Body Swap and removed it's genetic damage.
      • -
      -

      kingofkosmos updated:

      -
        -
      • Added a link to re-enter corpse to alert when your body is placed in a cloning scanner.
      • -
      - -

      26 July 2015

      -

      Phil235 updated:

      -
        -
      • Sechailers will now break when used too often.
      • -
      • Mechs now have new action button sprites.
      • -
      -

      Steelpoint updated:

      -
        -
      • Security Officers now spawn with a security breathmask in their internals box.
      • -
      • Abductor's batons now changes color with modes.
      • -
      • Unique sprites for Abductor hand cuffs and paper.
      • -
      -

      goosefraba19 updated:

      -
        -
      • Updated the Power Monitoring Console with better alignment and colorized readouts.
      • -
      - -

      25 July 2015

      -

      Dorsisdwarf updated:

      -
        -
      • Due to a fire sale at Syndicate HQ, many of the more interesting traitor gadgets have been cut in price dramatically. Please take this opportunity to make full use, as we cannot guarantee that the sale will last!
      • -
      -

      bgobandit updated:

      -
        -
      • Under pressure from the Animal Rights Consortium, Nanotrasen has improved conditions at its cat and dog breeding facilities. Cats and pugs are now much more responsive to their owners.
      • -
      -

      duncathan updated:

      -
        -
      • Restores RPD delay on disposals machines.
      • -
      -

      xxalpha updated:

      -
        -
      • Agent IDs are now rewrittable.
      • -
      - -

      24 July 2015

      -

      Incoming5643 updated:

      -
        -
      • The spells disintegrate and flesh to stone have had their mechanics changed. Using these spells will spawn a special touch weapon in a free hand (your dominant hand if possible) that can then be used to inflict the spell on the target of your choice. Having the touch weapon out is obvious, this is not a stealth based change. Clicking the spell while the hand is out will let you return the charge without using it.
      • -
      • The spell won't begin to recharge until the hand attack is either used or returned. Additionally these changes mean you can no longer use these spells while stunned or handcuffed. As a suggestion remember that the mutate spell allows you to break out of cuffs very easily, and warping abilities will keep you from getting cuffed to begin with!
      • -
      - -

      23 July 2015

      -

      NullQuery updated:

      -
        -
      • Crew monitoring: The minimap now supports scaling. You can zoom in and out using the buttons. Hovering over an entry in the table centers the minimap on that part of the screen.
      • -
      • Crew monitoring: If the window is wide enough the health indicator will expand to show full health data (if available).
      • -
      • Crew monitoring: Clicking on the area name will now copy the coordinates to your clipboard.
      • -
      • Crew monitoring: The AI can view health information again, but there is a 5 second delay between updates for everyone watching.
      • -
      -

      freerealestate updated:

      -
        -
      • Added resist hotkeys for borgs and humans. With hotkeys mode, use CTRL+C or C as a human and CTRL+C, C or END as a borg. With hotkeys mode off, use CTRL+C as a human and END as a borg.
      • -
      -

      xxalpha updated:

      -
        -
      • Changeling augmented eyesight night vision is now working.
      • -
      - -

      21 July 2015

      -

      Fayrik updated:

      -
        -
      • Syndicate Donksoft gear now costs less.
      • -
      -

      Xhuis updated:

      -
        -
      • Firelocks may now be constructed and deconstructed with standard tools. Circuit boards can be produced at a standard autolathe.
      • -
      -

      phil235 updated:

      -
        -
      • Thrown things no longer bounces off walls, unless they're in no gravity. Heavy items and mobs thrown can push the mobs and non anchored objects they land on. Throwing a mob onto a mob in no gravity will push each one in opposite direction. Thrown mobs landing on wall, or dense object or mob gets stunned and a bit injured. The damage when mob hit a wall is nerfed.
      • -
      - -

      20 July 2015

      -

      AnturK updated:

      -
        -
      • Lightning Bolt now always bounces 5 times and deals 15 to 50 burn damage to each target depending on the chargeup
      • -
      -

      KorPaheron updated:

      -
        -
      • Added the Multiverse Sword, a new wizard artifact that can summon clones of yourself from other universes, allowing for dangerous amounts of recursion.
      • -
      -

      phil235 updated:

      -
        -
      • Mechs no longer use object verbs and the exosuit interface tab. They now use action buttons. Mechs now have a cycle equipment action button to change weapon faster than by using the view stats window. Mechs get two special alerts when their battery or health is low. Mechs now properly consume energy when moving and having their lights on. Using a mech tool that takes time to act now shows a progress bar (e.g. mech drill).
      • -
      • Mechs now have a cycle equipment action button to change weapon faster than by using the view stats window.
      • -
      • Mechs get two special alerts when their battery or health is low.
      • -
      • Mechs now properly consume energy when moving and having their lights on.
      • -
      • Using a mech tool that takes time to act now shows a progress bar (e.g. mech drill).
      • -
      - -

      19 July 2015

      -

      Gun Hog updated:

      -
        -
      • Nanotrasen advancements in cyborg technology now allow for integrated headlamps! As such, the flashlight package normally used as a module is now seamlessly merged with their systems!
      • -
      -

      Ikarrus updated:

      -
        -
      • Asimov's subject of "human beings" can now be modified by uploaders.
      • -
      • Eaxmining AI modules while adjacent to them will show you what laws it will upload.
      • -
      -

      MMMiracles updated:

      -
        -
      • Adds a TWANG sound effect when hitting things with a guitar.
      • -
      - -

      18 July 2015

      -

      AlexanderUlanH updated:

      -
        -
      • Reduced stun duration of tabling to be closer to other stuns.
      • -
      -

      Iamgoofball updated:

      -
        -
      • The Bioterror Chemical Sprayer is now filled with a more deadly mix of chemicals.
      • -
      -

      RemieRichards updated:

      -
        -
      • Changelings now regenerate chemicals and geneticdamage while dead, but only up to specific caps (50% of their max chem storage, and 50 geneticdamage)
      • -
      • Fakedeath's length has been reduced from 80s dead (1 minute 20) to 40s dead
      • -
      • Changelings now get to see the last 8 messages the person they absorbed said, to allow them to better impersonate their victim's speech patterns
      • -
      -

      Steelpoint updated:

      -
        -
      • Reduced weight of Sechailer, it now fits in boxes.
      • -
      -

      phil updated:

      -
        -
      • Smoke and foam touch reactions gets buffed.
      • -
      • Reagent dispensers (watertank, fueltank) tells you how much reagents they have left when examined.
      • -
      • Liquid dark matter blob spore smoke now cannot throw you. The effects of sorium, blob sorium, liquid dark matter and blob liquid dark matter are now scaled by their volume. Sorium/LDM blob's touch now throws the mobs who are close but simply moves the mobs that are further away.
      • -
      - -

      17 July 2015

      -

      Ikarrus updated:

      -
        -
      • Virology is no longer all-access.
      • -
      • Changelings now have the ability to swap forms with another being.
      • -
      • Halved Domination Time.
      • -
      • Reinforced windows and windoors are a bit more resistant to fires and blasts.
      • -
      -

      MrStonedOne updated:

      -
        -
      • Scrubbers now use power: 10w + 10w for every gas its configured to filter. (60w for siphon)
      • -
      • Scrubbers can now be configured to operate on a 3x3 range via the air alarm at a high cost (ranging from 100w to 1000w depending on how many tiles are near it that aren't blocked and how much power it's using normally)
      • -
      • Huge portable scrubbers (like in toxins storage) now use a 3x3 range rather then a higher volume rate
      • -
      • Fixed issue with atmos not allowing low levels of plasma to spread
      • -
      • Fixed issue with atmos not adding or removing plasma overlays in some cases
      • -
      • Panic siphon now uses a 3x3 area range rather then increasing the scrubbers intake rate by 8x
      • -
      • Replace air uses 3x3 range for the first stage
      • -
      • Air alarms now have 3 new environmental modes:
      • -
      • Siphon - Panic siphon without the panic, operates on a 1 tile range
      • -
      • Contaminated - Activates all gas filters and 3x3 scrubbing mode
      • -
      • Refill Air - 3 times the normal vent output
      • -
      - -

      14 July 2015

      -

      AnturK updated:

      -
        -
      • New species of mimic was spotted in the wilderness of space. Watch out!
      • -
      -

      Jordie0608 updated:

      -
        -
      • Added a Local Narrate verb for admins.
      • -
      - -

      13 July 2015

      -

      Ikarrus updated:

      -
        -
      • Loyalty Implant HUD Icon has been updated.
      • -
      -

      duncathan updated:

      -
        -
      • Greatly shortened the time it takes to lay pipes with the RPD and to unwrench pipes in general.
      • -
      • Added Optical T-Ray scanners to R&D and Atmospheric Technician closets. Optical T-Ray Scanners function identically to a handheld scanner.
      • -
      - -

      11 July 2015

      -

      Dorsidwarf updated:

      -
        -
      • Due to a new Syndicate budget, uplink implants are now only 14 TC.
      • -
      • In order to facilitate inter-agent communication, Syndicate Encryption Keys have been reduced to 2TC. They retain the ability to intercept all channels and speak on a private frequency.
      • -
      -

      Ikarrus updated:

      -
        -
      • Robotic augmentations have been made a bit more difficult to maintain.
      • -
      - -

      10 July 2015

      -

      Ikarrus updated:

      -
        -
      • New Changeling Ability: False Armblade Sting. It creates an undroppable armblade on the target temporarily. It will appear exactly like a real one, except you can't do anything with it.
      • -
      • Transform stings are no longer stealthy.
      • -
      - -

      09 July 2015

      -

      AlexanderUlanH updated:

      -
        -
      • Riot Shotguns now spawn loaded with rubber pellet shells that deal high stamina damage.
      • -
      -

      kingofkosmos updated:

      -
        -
      • Both beakers and drinking glasses can now be be drunk from, fed to mobs and splashed on mobs, turfs and most objects with harm intent.
      • -
      -

      nukeop updated:

      -
        -
      • RCDs have a larger storage and can be loaded with glass, metal and plasteel.
      • -
      • Grilles and Windows can be made with an RCD.
      • -
      • Engi-Vend machine now has three RCDs.
      • -
      • Removed RCD as a steal objective.
      • -
      - -

      07 July 2015

      -

      Ikarrus updated:

      -
        -
      • Fixed bug where gang messages would occasionally fail to send.
      • -
      • Fixed bug that prevented implant breakers from recruiting security.
      • -
      • Implanters are now only blocked by helmets with THICKMATERIAL
      • -
      • Light severity explosions no longer shred clothes.
      • -
      -

      MMMiracles updated:

      -
        -
      • Adds a new crate to cargo in the security section, for when desperate times call for desperate measures.
      • -
      -

      NullQuery updated:

      -
        -
      • Crew monitoring computers now sort by department and rank again.
      • -
      • Crew monitoring computer: Hovering over a dot on the minimap will now jump to the appropriate entry in the table.
      • -
      • sNPCs were given ID cards with blank assignments.
      • -
      - -

      06 July 2015

      -

      Ikarrus updated:

      -
        -
      • Increased Uzi SMG cost to 60 influence.
      • -
      • Increased Uzi ammo cost to 40 influence.
      • -
      • Domination attempt limit is reduced to 1 per gang while the shuttle is docked with the station.
      • -
      • Gang bosses can promote and recall the shuttle using spare gangtools
      • -
      • Fixed Gang bosses getting deconverted with head trauma
      • -
      • Lizard characters can now get random names unique from humans.
      • -
      - -

      05 July 2015

      -

      AlexanderUlanH & Xhuis updated:

      -
        -
      • Shadowling Ascendants have a new ability to send messages to the world.
      • -
      • Glare now properly silences targets.
      • -
      • Veil now turns off held lights.
      • -
      • Drain Thralls replaced with Drain Life, which targets all nearby humans.
      • -
      • Spatial Relocation replaced with Black Recuperation which lets you revive a dead thrall every five minutes.
      • -
      • Removed Vortex.
      • -
      • Shadowlings can now only enthrall five people before being forced to hatch; Hatched shadowlings can continue to enthrall however non-hatched ones can't pass the global limit.
      • -
      • Enthralling sends a message to all nearby humans.
      • -
      • Removed cooldown on Glacial Freeze.
      • -
      -

      Ikarrus updated:

      -
        -
      • Reactive armor may now teleport user to space tiles. Be careful using it around space.
      • -
      -

      Razharas updated:

      -
        -
      • Firing pins can now be removed by tablecrafting a gun with a plasmacutter, screwdriver and wirecutters.
      • -
      -

      RemieRichards updated:

      -
        -
      • Melee attacks with weapons now display and animation of the weapon over the target.
      • -
      • Tablecrafting window now shows all recipies and has been split into categorized tabs.
      • -
      • 30 item limit removed.
      • -
      -

      Sabbat updated:

      -
        -
      • Updated the cult armor rune to let you get additional equipment or abilities based on what you're wearing or holding. Some nerfed versions of wizard spells can be used by the cult in exchange for unique clothing, these spells require the cult robes or armor in order to use. No armor choices are mandatory, you will always have the option of the default choice.
      • -
      • Zealot - Default armor rune. If none of the required clothing is worn this will be chosen automatically. Is the same as ever.
      • -
      • Summoner - If you are wearing the wizard robe and hat when using the armor rune this choice will be available. User will receive magus robes and hat and nerfed versions of the summon shard and summon shell spells.
      • -
      • Traveler - Available to people wearing EVA suit and helmet. Replaces the EVA suit and helmet with the cult space suit and space helmet. Gives you a sword.
      • -
      • Marauder - Available to people wearing the captain's space suit and helmet. Same as Traveler except user is given a spell of summon creature (two creatures). They can and will attack the user.
      • -
      • Trickster - Available if wearing the RD's reactive teleport armor. Gives you magus robes, a wand of doors, and a nerfed version of Blink.
      • -
      • Physician - Available if wearing the CMO's labcoat. Gives you a wand of life.
      • -
      -

      TheVekter updated:

      -
        -
      • Ian now has a dog-bed in the HoP's office.
      • -
      -

      nukeop updated:

      -
        -
      • Uplinks now have a syndicate surgery bag containing surgery tools, a muzzle, a straightjacket and a syndicate MMI.
      • -
      • Syndicate MMIs can only be placed in cyborgs to create an unlinked cyborg with syndicate laws.
      • -
      - -

      04 July 2015

      -

      Gun Hog updated:

      -
        -
      • The Ore Redemption Machine now allows users to release minerals without having to insert an ID first.
      • -
      -

      Ikarrus updated:

      -
        -
      • Fixed items that logically shouldn't spill, spilling their contents when thrown
      • -
      • Fixed Bartender's non-spilling powers
      • -
      • Fixed thrown beakers not applying their contents onto floors
      • -
      • Fixed unable to transfer reagents between beakers you are holding
      • -
      • Fixed bombs shredding clothes that should have been protected by covering clothes
      • -
      • Fixed gang mode.
      • -
      -

      MMMiracles updated:

      -
        -
      • Added patriotic underwear apparel due to the most god damn american holiday being just around the corner.
      • -
      • Also adds some other stuff for those inferior countires too, I guess.
      • -
      - -

      03 July 2015

      -

      Ikarrus updated:

      -
        -
      • Added support for up to six gangs at a time. Admins may add additional gangs to any round.
      • -
      • Gang mode now has a chance to start with a third gang.
      • -
      • Promotion of lieutenants have been re-added
      • -
      • Every lieutenant promoted will lengthen the gang's recruitment cooldowns by one minute.
      • -
      • Only gang bosses will be able to recall the shuttle from their gangtool.
      • -
      • A recruitment pen that has not been used for a while will accumilate charges, so you are no longer punished for waiting to convert people.
      • -
      • Gangs are now fully functional outside of gang mode.
      • -
      -

      Ricotez updated:

      -
        -
      • Added two categories of mutant bodyparts for humans with the same system that lizards use: ears and tails. Right now only admins can edit these.
      • -
      • Updated the system that checks for which jobs your character qualifies to be species-dependant. At this moment you won't notice any differences, but in the future coders can use this to be more specific about which jobs a species is allowed in under which circumstances.
      • -
      • Added one option to both categories, taken from the kitty ears: a cat tail and cat ears.
      • -
      • Added a new button to the VV menu drop-down list for admins: Toggle Purrbation. Putting a human on purrbation will give them cat ears and a cat tail, and send them the message 'You suddenly feel valid.' Using the button a second time removes the effects.
      • -
      • Adding categories for tattoos and scars is in the works. (Read: I need sprites!)
      • -
      -

      oranges updated:

      -
        -
      • Engineers in nanotrasen's safety equipment department announced the release of a new and improved version of the X25 taser trigger, previous triggers, which suffered from a long line of misfire problems were recalled enmasse. Nanotrasen refused to comment on rumours that the previous trigger design was the work of a saboteur.
      • -
      - -

      02 July 2015

      -

      Ikarrus updated:

      -
        -
      • Throwing reagent containers such as drinks or beakers may spill their contents onto whatever they hit
      • -
      • Slipping while carrying items in your hand may cause ~accidents~
      • -
      • Mounted and portable flashers can now only be burned out from overuse, similar to flashes.
      • -
      -

      oranges updated:

      -
        -
      • Thanks to department budget cuts we've had to remove the security cameras built into officer helmets, Nanotrasen apologies for this inconvenience.
      • -
      - -

      01 July 2015

      -

      Ikarrus updated:

      -
        -
      • Multiple gang leaders are spawned at round start, the number which depends on server population
      • -
      • Gangsters can no longer be promoted mid-game.
      • -
      • Security can once again deconvert gangsters with loyalty implants
      • -
      • Added an Implant Breaker item to the gangtool as a purchasable item for 10 influence each
        * They are a one-use item that destroys all implants in the target, including loyalty implants
        * They will also attempt to recruit the target before destroying itself
      • -
      • Implanters no longer work if the target is wearing headgear. Remove them first.
      • -
      -

      NullQuery updated:

      -
        -
      • The crew monitoring computer, AI crew monitoring popup and the handheld crew monitor now update automatically.
      • -
      • Crew monitoring: The health information has been turned into a health indicator. It goes from green to red. Hovering over the icon shows detailed information (if available).
      • -
      • Crew monitoring: The location coordinates have been hidden. You can see them by hovering over the 'Location' column.
      • -
      • Crew monitoring: A minimap has been added so you can easily see where people are.
      • -
      • Crew monitoring: Players who are not in range of a camera are not shown on the minimap.
      • -
      • Crew monitoring: AI players can quickly move to other locations or track players by clicking the minimap or items in the table.
      • -
      • Crew monitoring: For AI players, health information always shows a white indicator instead of green-to-red. This is a deliberate limitation to prevent the AI from becoming too omnipresent.
      • -
      -

      phil235 updated:

      -
        -
      • Space drug overdose no longer cause brute/brain damage but you hallucinate more. Space Drug Blob now makes you hallucinate even if you don't overdose on its space drug.
      • -
      -

      xxalpha updated:

      -
        -
      • Added a new traitor objective: steal the station's self-destruct nuke plutonium core.
      • -
      - -

      29 June 2015

      -

      Ikarrus updated:

      -
        -
      • Clothing has been separated out of equipment lockers into wardrobes to reduce clutter.
      • -
      -

      Incoming5643 updated:

      -
        -
      • The secrets of the rainbow slimes have finally been revealed. To attain this rare blob you must breed a slime with a 100% mutation chance!
      • -
      • Rainbow slime cores will generate a randomly colored slime when injected with plasma. It's a good plan B if the slimes aren't cooperating in terms of colors. You can get any color slime this way, pray to the RNG!
      • -
      -

      Xhuis updated:

      -
        -
      • The Sleeping Carp clan has made its presence known on Space Station 13. Some gangs will name themselves after this group and practice martial arts rather than using traditional gang weaponry. These shadowboxers are not to be taken lightly.
      • -
      -

      oranges updated:

      -
        -
      • Thanks to a breakthrough in directed vector thrusting, all nanotrasen brand jetpacks have been greatly improved in speed and handling
      • -
      - -

      28 June 2015

      -

      Ikarrus updated:

      -
        -
      • Gang Lieutenants can buy gang tools now, but at a higher cost than the original boss
      • -
      • Gang leaders can register additional gangtools to themselves for use as spares.
      • -
      • Number of maximum lieutenants lowered to 2
      • -
      • Pistol cost increased to 25 influence
      • -
      • Uzi cost increased to 50 influence
      • -
      • Uzi Ammo decreased to 20 influence
      • -
      • Overcoats added to items the biogenerator can produce.
      • -
      • Micro and Macro bomb implants are now restricted to the Nuclear game mode.
      • -
      -

      phil235 updated:

      -
        -
      • Smoke (and foam) no longer distribute more reagents than they have. The amount of clouds in a smoke now depends on the amount of smoke created. Acid no longer melts items on a mob at low volume, and the chances to melt them increases with the amount applied on the mob. Sprays can now contain acid again.
      • -
      - -

      27 June 2015

      -

      Ikarrus updated:

      -
        -
      • Some objects can be burned now.
      • -
      • Bombs will shred your clothes, with respect to their layering and armor values. Exterior clothing will shield clothing underneath. Storage items will drop their contents when bombed this way.
      • -
      -

      Laharl Montogmmery updated:

      -
        -
      • Storage Content Transfer : Bluespace Boogaloo! You can now transfer the content of the BoH/BRPED into tiles/bins/bags out of your reach. Range is 7 tiles.
      • -
      -

      MrStonedOne updated:

      -
        -
      • Admins will now receive a notification when one of them starts to reply to an adminhelp to cut down on multiple responses to adminhelps and let admins know when an adminhelp isn't getting replied to.
      • -
      • The keyword finder in admin helps (adds a (?) link next to player names in the text of adminhelps) has been added for all player to admin pms, as well as admin say.
      • -
      -

      NullQuery updated:

      -
        -
      • Introduces html_interface, a module to streamline the management of browser windows.
      • -
      • Adds playing cards that utilize a new HTML window management system.
      • -
      -

      Vekter updated:

      -
        -
      • Added a new military jacket to the Autodrobe and ClothesMate.
      • -
      - -

      26 June 2015

      -

      Ikarrus updated:

      -
        -
      • Added a couple of new gang tag resprites by Joan.
      • -
      -

      Kor updated:

      -
        -
      • Summon Guns has returned to its former glory. The spell will once again create antagonists, now with the objective to steal as many guns as possible.
      • -
      • Summon Guns once again costs a spell point, rather than granting one.
      • -
      -

      phil235 updated:

      -
        -
      • Buffs traitor stimpack (and adrenalin implant) to be more efficient against stuns/knockdowns.
      • -
      -

      pudl updated:

      -
        -
      • You can now play games of mastermind to unlock abandoned crates found throughout space.
      • -
      - -

      25 June 2015

      -

      Iamgoofball updated:

      -
        -
      • Changes up how Explosive Implants work.
      • -
      • They have become Microbomb Implants. They cost 1 TC each. Each implant you inject increases the size of the explosion. You gib on usage, regardless of explosion size.
      • -
      • A Macrobomb implant was added for 20 TC. It is the equivalent of injecting 20 microbombs.
      • -
      • Nuke Ops start with microbomb implants again.
      • -
      - -

      24 June 2015

      -

      Ikarrus updated:

      -
        -
      • Request Console message sent to major departments will now be broadcasted on that department's radio.
      • -
      • Request Consoles can be used to quicly declare a security, medical, or engineering emergency.
      • -
      - -

      23 June 2015

      -

      Fayrik updated:

      -
        -
      • NanoUI is now Telekenesis aware, but due to other constraints, NanoUI interfaces are read only at a distance.
      • -
      • Refactored all NanoUI interfaces to use a more universal proc.
      • -
      • Adjusted the refresh time of the NanoUI SubSystem. All interfaces will update less, but register mouse clicks faster.
      • -
      • Removed automatic updates on atmospheric pumps, canisters and tanks, making them respond to button clicks much faster.
      • -
      • Atmos alarm reset buttons work now. Probably.
      • -
      -

      Iamgoofball updated:

      -
        -
      • Adds a progress bar when performing actions.
      • -
      -

      Ikarrus updated:

      -
        -
      • New gang names with tags created by Joan
      • -
      • C4 explosive can be purchased by gangs for 10 influence.
      • -
      • Recruitment pen cost increased to 50.
      • -
      • Lieutenants recieve one free recruitment pen.
      • -
      • Recruitment pens are now stealthy and no longer give a tiny prick message.
      • -
      • Increased chance of deconversion with head trauma
      • -
      • Recalling the shuttle now takes about a minute to work, during which you won't be able to use your gangtool.
      • -
      • Pinpointers no longer point at dominators. Instead, dominators will beep while active.
      • -
      • Added puffer jackets and vests.
      • -
      • Increased gang outfit armor. It is moderately resistant to bullets now.
      • -
      • Removed bulletproof vests from gangtool menu.
      • -
      -

      Jordie0608 updated:

      -
        -
      • Admins can now flag ckeys to be alerted when they connect to the server.
      • -
      -

      MrStonedOne updated:

      -
        -
      • Admins can now reject poor adminhelps. This will tell the player how to construct a useful adminhelp and give them back their adminhelp verb
      • -
      -

      RemieRichards updated:

      -
        -
      • Cumulative armour damage resistance is now capped at 90%, you will now always take at bare minimum, 10% of the incoming damage.
      • -
      • Added a system for Armour Penetration to items, it works by temporarily (It does NOT damage the armour or anything) reducing the armour values by the AP value during the attack instance.
      • -
      • The formula for AP is Armour-ArmourPenetration = AdjustedArmour and AdjustedArmour is used for all the remaining calculations instead of Armour (Eg: 80 Melee - 15 AP = 65 Melee).
      • -
      • The Ninja's Energy Katana has 15 AP, Xenomorphs have an inbuilt AP of 10.
      • -
      • You can now unwrench pipes who's internal pressures are greater than that of their environment...
      • -
      • However it will throw you away from the pipe at extreme speed! (You are warned beforehand if the pipe will do this, allowing you to cancel)
      • -
      -

      Vekter updated:

      -
        -
      • Finally fixed immovable rods! They will now properly bisect the station (and crit anyone unlucky enough to be in their path).
      • -
      • Increased Meteor activity detected in the vicinity of the station. Be advised that many storms may be more violent than they once were.
      • -
      • Gravitational anomalies will now throw items at mobs in their vicinity. Take care while scanning them.
      • -
      • Flux anomalies explode much more violently now. Get there and destroy them, or risk losing half a department.
      • -
      -

      xxalpha updated:

      -
        -
      • Added a new Reviver implant: now it revives you from unconsciousness rather than death.
      • -
      • Added cybernetic implants and a cybernetic implants bundle to the Nuke Ops uplink.
      • -
      • Fixed Nutriment pump implant printing.
      • -
      • Health Analyzers now have the ability to detect cybernetic implants.
      • -
      • X-Ray implants are now much harder to unlock.
      • -
      - -

      22 June 2015

      -

      Iamgoofball updated:

      -
        -
      • Removed failure chance and delay when emagging an APC.
      • -
      -

      KorPhaeron updated:

      -
        -
      • Rebalanced armor to be less effective, reducing the melee, bullet and/or laser damage reduction of all armor suits.
      • -
      -

      LaharlMontogmmery updated:

      -
        -
      • You can now click and drag a storage container to empty it's contents into another container, disposal bin or floor tile.
      • -
      -

      Xhuis updated:

      -
        -
      • Revenants have received a considerable overhaul.
      • -
      • Revenants will no longer share spawn points with space carp and will spawn in locations like the morgue and prisoner transfer center.
      • -
      • Revenants can no longer cross tiles covered in holy water.
      • -
      • Revenants have a new ability called Defile for 30E. It will cause robots to malfunction, holy water over tiles to evaporate, and a few other effects.
      • -
      • Upon death, revenants will appear and play a sound before rapidly fading away and leaving behind glimmering residue as evidence of their demise.
      • -
      • This residue lingers with the essence of the revenant. If left unattended, it may reform into a new revenant. Simply scattering it is enough to stop this, but it also has high research levels.
      • -
      • Revenants now have fluff objectives as well as a set essence goal.
      • -
      • Revenanants will be revealed for longer when using abilities and also receive feedback on this revealing.
      • -
      • Revenants can now only spawn via random event with a specific amount of dead mobs on the station. The default for this is 10.
      • -
      • Revenants can no longer use abilities from inside walls.
      • -
      • Directly lethal abilities have been removed from revenants. In addition, they can no longer harvest unconscious people, only the dead.
      • -
      - -

      21 June 2015

      -

      GunHog updated:

      -
        -
      • The Hostile Lockdown ability for Malfunctioning AIs has been nerfed. It now costs 30 CPU, is much more obvious, and automatically resets in 90 seconds.
      • -
      • Buffed the Upgrade Turrets Malfunction ability. Turrets will now fire heavy lasers instead of simply shooting faster.
      • -
      • Nanotrasen has released an Artificial Intelligence firmware upgrade under the ID 41ST0L3MYB1K3. It contains drivers for interacting with all variants of exosuit technology, from the Ripley APLU design to even experimental Phazon units. Simply upload your AI to the exosuit's internal computer via the InteliCard device. Per safety regulations, the exosuit must have maintenance protocols enabled in order to remove an AI from it.
      • -
      • Malfunctioning AIs may wirelessly steal mechs via a new power, Mech Domination. For 30 CPU, a Malf AI may permanently upload itself to a mech, ejecting any pilots. Malf AIs will still lose if they leave the Z-level, and the Malf will be gibbed if the mech is destroyed - they cannot be carded out of the mech or shunt to an APC.
      • -
      -

      Iamgoofball updated:

      -
        -
      • Blobs can no longer have Morphine as their chemical.
      • -
      -

      duncathan updated:

      -
        -
      • Heat exchangers now update their color to match that of the pipe connected to them.
      • -
      • Heat exchangers are on longer dense.
      • -
      - -

      20 June 2015

      -

      Dorsisdwarf updated:

      -
        -
      • Syndicate Bulldog Shotguns now use slug ammo instead of buckshot by default
      • -
      • Nuke Ops can now buy team grab-bags of bulldog ammo at a discount.
      • -
      -

      Ikarrus updated:

      -
        -
      • Wearing your gang's outfit now increases influence and shortens takeover time faster.
      • -
      • Added several more options for gang outfits
      • -
      • Pinpointers will now point at active dominators.
      • -
      • Gang outfits are now slightly armored
      • -
      • Gang tags are now named 'graffiti' to make them harder to detect
      • -
      • Initial takeover timer is now capped at 5 minutes (50% control)
      • -
      • Server Operators: The default Delta Alert texts have changed. Please check if your game_options.txt is up to date.
      • -
      • Loyalty implants now treat gangs as it treats cultists. Implants can no longer deconvert gangsters, but it can still prevent recruitments.
      • -
      • Replaced tommy guns with 9mm 2-burst 32 mag uzis that costs 40 influence. Unlike tommy guns gangs will be able to purchase ammo for uzis.
      • -
      -

      Jordie0608 updated:

      -
        -
      • For Admins: Jump-to-Mob (JMP) notification command replaced with Follow (FLW).
      • -
      • Message and Follow links added to many notifications.
      • -
      • New buttons to toggle nuke and set security level.
      • -
      • Flamethrowers are logged in attack_log.
      • -
      -

      Thunder12345 updated:

      -
        -
      • Combat shotguns are now semi automatic, and will be pumped automatically after firing.
      • -
      • Combat shotgun capacity has been reduced to six shells.
      • -
      -

      Xhuis updated:

      -
        -
      • You will now trip over securitrons if you run over them whilst they are chasing a target.
      • -
      • An admin-spawnable drone dispenser has been added that will automatically create drone shells when supplied with materials.
      • -
      • Airlock charges are available to traitors and will cause a lethal explosion on the next person to open the door.
      • -
      • Nuclear operatives can now buy drum magazines for their Bulldog shotguns filled with lethal poison-filled darts.
      • -
      • When a malfunctioning AI declares Delta, all blue tiles in its core will begin flashing red.
      • -
      • Back-worn cloaks have been added for all heads except the HoP. LARPers rejoice!
      • -
      • More suicide messages have been added for a few items.
      • -
      - -

      18 June 2015

      -

      AnturK updated:

      -
        -
      • Added new photo-over-pda function. Apply the photo to PDA to send it with your next message!
      • -
      -

      Ikarrus updated:

      -
        -
      • Department Management consoles have been added to Head of Staff offices. These will enable heads to modify ID's access to their department, as well as preform demotions.
      • -
      -

      Miauw updated:

      -
        -
      • Bullets can now damage cameras.
      • -
      • Camera alarms now trigger 90 seconds after the first EMP pulse, instead of when all EMP pulses run out.
      • -
      • Makes the force required to damage cameras greater than or equal to ten instead of greater than ten.
      • -
      • Camera alarms now trigger when cameras are disabled with brute force or bullets.
      • -
      -

      Xhuis updated:

      -
        -
      • Nanotrasen scientists have determined that a delaminating supermatter shard combining with a gravitational singularity is an extremely bad idea. They advise keeping the two as far apart as possible.
      • -
      -

      phil235 updated:

      -
        -
      • Nerfed the xray gun. Its range is now 15 tiles.
      • -
      - -

      15 June 2015

      -

      Incoming5643 updated:

      -
        -
      • Lizards can now choose from a wide varity of physical appearances in character creation! Sprites made by WJohn. Hiss Responsibly.
      • -
      -

      Kor updated:

      -
        -
      • A terrible new creature stalks the halls of SS13.
      • -
      • The wizard has a new artefact related to said creature.
      • -
      • Added a new sepia slime plasma reaction. Try it out!
      • -
      -

      spasticVerbalizer updated:

      -
        -
      • Drones can now properly quick-equip.
      • -
      - -

      14 June 2015

      -

      Ikarrus updated:

      -
        -
      • White suits added to gang outfits
      • -
      • Gang outfits are now free, but are now limited in stock (that replenishes over time)
      • -
      • While attempting a Hostile Takeover, gangs do not gain influence. Instead, the takeover timer will be reduced by how many territories they control.
      • -
      • Spraycan cost reduced to 5 influence.
      • -
      • Recruitment Pen cooldown increased to 2 minutes, but is reduced if the enemy gang has more members than yours.
      • -
      • Tommy guns no longer deal stamina damage.
      • -
      • Gangtools can no longer recall the shuttle if the game mode is not Gang War
      • -
      - -

      12 June 2015

      -

      Ikarrus updated:

      -
        -
      • Gang Updates
      • -
      • New objective: To win, Gangs must now buy a Dominator machine (50 influence) and defend it for a varying time frame.
        * The location of the dominator is broadcasted to the entire station the moment it is activated
        * The more territories the gang controls, the less time it will take
        * Gangs no longer win by capturing territories
      • -
      • A choice of gang outfits are now purchasable for 1 influence each
      • -
      • Thompson SMGs aka "tommy guns" are now purchasable for 50 influence
      • -
      • Bulletproof armor vests are now purchasable for 10 influence
      • -
      • Gang messages are now free to send
      • -
      • Prices of pistols and pens reduced to 20 and 30, respectively
      • -
      • Gang spraycans have been made a lot less obvious. They look nearly identical to regular ones, now.
      • -
      • Gangs will no longer be notified how much territory the enemy controls
      • -
      -

      Incoming5643 updated:

      -
        -
      • Growing tired of reports of slain members, the Wizard Federation has cautiously sactioned the dark path of lichdom. Beware of the powerful lich who hides his phylactery well, for he is immortal!
      • -
      • The trick to defeating liches is to destroy either their body or their phylactery item before they can ressurect to it. The more a lich is slain the longer it will take him to make use of his phylactery and the more likely the crew is to catch him during a vunerable moment.
      • -
      • Due to the addition of proper liching, skeletons as a choosable race from magic mirrors has been discontinued. My apologies to the powergamers. A special admin version of the mirror that allows for skeletons has also been added to the code.
      • -
      -

      Miauw updated:

      -
        -
      • AIs have received several minor nerfs in order to increase antagonist counterplay:
      • -
      • AI tracking is no longer instant, it takes an amount of time that increases with distance from the AI eye, up to 4 seconds. The AI detector item will light up when an AI begins tracking.
      • -
      • A random camera failure event has been added, which will break one or two random cameras.
      • -
      • You can no longer keep tracking people that are outside of your camera vision.
      • -
      • Camera wires have been removed. Screwdriver a camera to open the panel, then use wirecutters to disable it or a multitool to change the focus.
      • -
      • You can now hit cameras with items to break them. To repair a camera, simply open the panel and use wirecutters on it.
      • -
      • Camera alerts now only happen after a camera is reactivated.
      • -
      -

      RemieRichards updated:

      -
        -
      • New optional explosion effect ported from /vg/'s DeityLink, Explosions that are affected by Walls and Doors
      • -
      - -

      11 June 2015

      -

      Cheridan updated:

      -
        -
      • Removes the powerdrain for individiual active modules on cyborgs.
      • -
      - -

      09 June 2015

      -

      Aranclanos updated:

      -
        -
      • Structures and machines can now be built on shuttles.
      • -
      -

      Iamgoofball updated:

      -
        -
      • Adds the Bluespace Rapid Part Exchange Device: holds up to 400 stock parts and can be used to upgrade machines at range without needing to open their maintenance panel.
      • -
      • A new tier of stock parts have been added, they're very expensive to produce but provide ample improvements.
      • -
      • Many machines can now also be upgraded.
      • -
      • Emitter: Lasers decrease firing delay and Capacitors decrease power consumption.
      • -
      • Gibber: Matter Bins increase yield of meat and Manipulators speed up operation time, at high level can gib creatures with clothes.
      • -
      • Seed Extractor: Matter Bins increase storage and Manipulators multiply seed production.
      • -
      • Monkey Recycler: Matter Bins increase the amount of monkey cubes produced and Manipulators reduce the monkey-to-cubes ratio to a minimum of 1-to-1.
      • -
      • Crusher: Matter Bins increase material yield and Manipulators increase chance to yield materials, at high level there is a chance for rarer materials.
      • -
      • Holopad: Capacitors increase an AI's traversal range from the holopad.
      • -
      • Smartfridge: Matter Bins increase storage.
      • -
      • Processor: Matter Bins increase yield and Manipulators speed up operation time.
      • -
      • Microwave: Matter Bins increase storage.
      • -
      • Ore Redemption Machine: Matter Bins increase yield per ore, Lasers increase points per ore and Manipulators speed up operation time.
      • -
      • Hydroponics Tray: Manipulators improve water and nutrients efficiency.
      • -
      • Biogenerator: Matter Bins increase storage.
      • -
      -

      bananacreampie updated:

      -
        -
      • Added several new options to the ghostform sprites
      • -
      - -

      08 June 2015

      -

      AnturK updated:

      -
        -
      • Improved the interface of Spellbooks.
      • -
      -

      Cheridan updated:

      -
        -
      • Push-force from Atmospherics now depends on an entity's weight, heavier objects are less prone to being pushed.
      • -
      • Magboots and No-Slip shoes now prevent pushing from spacewind.
      • -
      -

      Firecage updated:

      -
        -
      • Protolathes can now build Experimental Welding Tools.
      • -
      - -

      07 June 2015

      -

      Aranclanos updated:

      -
        -
      • Malfunctioning AIs can preview placement of a Robotic Factory.
      • -
      -

      Iamgoofball updated:

      -
        -
      • Bicardine, Dexalin, Kelotane, Anti-toxin, Inaprovaline and Tricordrazine have been re-added.
      • -
      -

      RemieRichards updated:

      -
        -
      • Lizards can now wag their tails, emote *wag to start and *stopwag to stop.
      • -
      -

      kingofkosmos updated:

      -
        -
      • Mops can now be wet from normal buckets and sinks.
      • -
      - -

      06 June 2015

      -

      Incoming5643 updated:

      -
        -
      • Antagonists with escape alone can now escape with others on the shuttle, so long as they are also antagonists.
      • -
      • Antagonists with escape alone can also win if non-antagonists are on the shuttle provided they are locked in the brig.
      • -
      • Escaping to syndicate space on board the nuke op shuttle is now a valid way to escape the station.
      • -
      -

      Jordie0608 updated:

      -
        -
      • Admin-delaying the round now works once it has finished.
      • -
      - -

      05 June 2015

      -

      CandyClown updated:

      -
        -
      • Ointments, bruise packs, and gauze are now stacked to 6 instead of 5.
      • -
      -

      CorruptComputer updated:

      -
        -
      • Security lockers no longer spawn in front of each other on Box.
      • -
      • Hooked up the scrubbers in QM's office on Box.
      • -
      • Fixed bar disposals on Box
      • -
      • Fixed the stacked heater+freezer in expirementor maint on Box
      • -
      • Made the turbine into Atmos and Engineering access only, and renamed the doors to Turbine on Box.
      • -
      -

      Ikarrus updated:

      -
        -
      • Gang Bosses will now be able to discreetly send messages to everyone in their gang for 5 influence a message.
      • -
      • Conversion pens now use a flat 60sec cooldown rate.
      • -
      -

      KorPhaeron updated:

      -
        -
      • You can now lay tiles on the asteroid. Go nuts building forts.
      • -
      - -

      04 June 2015

      -

      Cuboos updated:

      -
        -
      • Added casting and firing sounds for wizard spells and staves.
      • -
      • A new title theme has been added.
      • -
      -

      Gun Hog updated:

      -
        -
      • Nanotrasen has approved the designs for destination taggers and hand labelers in the autolathe.
      • -
      -

      Palpatine213 updated:

      -
        -
      • Allows sechuds to have their id locks removed via emag as well as EMP
      • -
      - -

      31 May 2015

      -

      duncathan updated:

      -
        -
      • Clarified the ability to retract changeling armblades.
      • -
      - -

      30 May 2015

      -

      duncathan updated:

      -
        -
      • Fixes passive gates not auto-coloring.
      • -
      -

      spasticVerbalizer updated:

      -
        -
      • Players trying to speak but unable to will now get a message.
      • -
      - -

      26 May 2015

      -

      CosmicScientist updated:

      -
        -
      • Corrected wording for the pAI, donksoft riot darts and some tip of the round tips.
      • -
      -

      xxalpha updated:

      -
        -
      • Fixed changeling revival.
      • -
      - -

      25 May 2015

      -

      spasticVerbalizer updated:

      -
        -
      • Glass airlocks can now be made heat-proof by using a sheet of reinforced glass to create the window, regular glass creates a normal glass airlock.
      • -
      -

      xxalpha updated:

      -
        -
      • You can no longer drop items inside mechas nor machinery (this includes gas pipes, disposal pipes, cryopods, sleepers, etc.).
      • -
      • Fixed exploit of changelings being able to keep thermal vision after resetting their powers.
      • -
      • Fixed being able to implant NODROP items with cavity implant surgery.
      • -
      - -

      22 May 2015

      -

      Jordie0608 updated:

      -
        -
      • Smothering someone with a damp rag when in harm intent will apply reagents onto them, for acid-burning their face; otherwise it will inject them, for drugging with chloral hydrate.
      • -
      • The healthdoll is now blue when at full health to make it more clear when a body part is injured.
      • -
      - -

      20 May 2015

      -

      xxalpha updated:

      -
        -
      • Added three drone shells to the derelict.
      • -
      - -

      16 May 2015

      -

      MartiUK updated:

      -
        -
      • Fixed a typo when cleaning a Microwave.
      • -
      • Fixed a typo when burning someone with a lighter.
      • -
      - -

      15 May 2015

      -

      xxalpha updated:

      -
        -
      • Fixed emitter beams not being reflectable.
      • -
      - -

      13 May 2015

      -

      Firecage updated:

      -
        -
      • Kudzu is now admin-logged in Investigate.
      • -
      -

      GunHog updated:

      -
        -
      • Positronic brains are now entered by clicking on an empty one, in the same manner as drones.
      • -
      • Ghosts are alerted when a new posibrain is made.
      • -
      -

      Jordie0608 updated:

      -
        -
      • Borg reagent containers (beakers, spraybottles, shakers etc.) are no longer emptied when stowed.
      • -
      • Fixes North and West Mining Outposts having empty SMESs.
      • -
      • Aliens and slimes can smash metal foam again.
      • -
      • Deconstructing reinforced walls no longer creates additional rods out of nowhere.
      • -
      • Pepperspray now has inhand sprites.
      • -
      -

      Xhuis updated:

      -
        -
      • Fixes the recipe for pneumatic cannons; it now only requires a wrench, 4 metal, 2 pipes and 8 package wrappers .
      • -
      - -

      11 May 2015

      -

      Firecage updated:

      -
        -
      • New icons for Industrial and Experimental welding tools.
      • -
      -

      Gun Hog updated:

      -
        -
      • The power mechanic for mining drills and the jackhammer has been removed. They no longer require cells or recharging.
      • -
      • The diamond drill upgrade for mining cyborgs has been fixed.
      • -
      -

      Xhuis updated:

      -
        -
      • Adds the pneumatic cannon, attach an air tank and shoot anything out of it.
      • -
      • Improvised pneumatic cannons can be tablecrafted with a wrench, 4 metal, 2 pipes, a pipe manifold, a pipe valve and 8 package wrappers.
      • -
      -

      spasticVerbalizer updated:

      -
        -
      • False walls no longer stackable.
      • -
      - -

      10 May 2015

      -

      AnturK updated:

      -
        -
      • Fixed borg's cells draining much faster than they're meant to.
      • -
      -

      Gun Hog updated:

      -
        -
      • Station bot performance greatly increased.
      • -
      • Captain PDA cartridge now includes nearly all utilities and functions, including signaller and all bots! HoP now has janitor and quartermaster functions! The RD and Roboticists now have access to Floor, Clean, and Medibots!
      • -
      • Bot access on PDA is now one button across all PDAs. You will only see what bots you can access, however.
      • -
      • Cartridges that include a signaller have been improved so they will work on a larger frequency range.
      • -
      • All bots now have Robotics access, so they may be set to patrol and released once constructed.
      • -
      • Roboticists now have access to bot navigation beacons. They are found under the floor tiles as patrol route nodes.
      • -
      - -

      09 May 2015

      -

      Firecage updated:

      -
        -
      • Increased the manifestation chance of super powers.
      • -
      -

      Ikarrus updated:

      -
        -
      • Loyalty implants will no longer survive deconverting a gangster. Security now needs to use two of them if they want the permanent effects: The first to deconvert them, and the second to make them loyal.
      • -
      -

      KorPhaeron updated:

      -
        -
      • Slime mutation chance now starts at 30%.
      • -
      • Baby slimes have a -5% to 5% difference of their parent's mutation chance, allowing you to breed slimes that are more likely to mutate.
      • -
      • Plasma and epinephrine no longer affect mutation chance of slimes.
      • -
      • Red slime extract and plasma makes a potion that can increase mutation chance, Blue slime extract and plasma potions will decrease it.
      • -
      - -

      08 May 2015

      -

      Firecage updated:

      -
        -
      • Mobs can now be buckled to operating tables.
      • -
      -

      Gun Hog updated:

      -
        -
      • Top scientists at Nanotrasen have made strong progress in Artificial Intelligence technology, and have completed a design for replicating a human mind: Positronic Brains. Prototypes produced on your research station should be compatible with all Man-Machine Interface compliant machines, be it Mechs, AIs, and even Cyborg bodies. Please note that Cyborgs created from artificial brains are called Androids.
      • -
      • The pAI role preference and related jobbans have been renamed to properly reflect that they are not soley for pAI, but include drones and positroinc prains.
      • -
      -

      astralenigma updated:

      -
        -
      • Cargo packages are now delivered with their manifests taped to the outside. Click on them with an open hand to remove them.
      • -
      -

      optimumtact updated:

      -
        -
      • Machine frame and girder deconstruction now uses a screwdriver instead of welding tool.
      • -
      - -

      07 May 2015

      -

      Xhuis updated:

      -
        -
      • Emagged defibrillators will now do burn damage and stop the patient's heart if used in harm intent.
      • -
      • The previous stunning functionality of the emagged defibrillator has been moved to disarm intent.
      • -
      -

      phil235 updated:

      -
        -
      • Temperature effects from frost oil and capsaicin reagents and basilisk have been buffed to be significant again.
      • -
      -

      xxalpha updated:

      -
        -
      • Hulks can now break windoors.
      • -
      - -

      06 May 2015

      -

      Jordie0608 updated:

      -
        -
      • Borgs can now open lockers with the 'Toggle Open' verb.
      • -
      -

      Thunder12345 updated:

      -
        -
      • Severed the cryo tube's connection to the spirit world. Ghosts will no longer be able to eject people from cryo. Please report further instances of poltergeist activity to your local exorcist.
      • -
      -

      Xhuis updated:

      -
        -
      • Many minor technical changes have been made to cult.
      • -
      • Cultist communications now show the name of the person using them. Emergency communications do not do this.
      • -
      • Emergency communication does less damage.
      • -
      -

      xxalpha updated:

      -
        -
      • Engineering cyborgs can now pick their cable coil color whenever they want.
      • -
      - -

      05 May 2015

      -

      Firecage updated:

      -
        -
      • Golems and skeletons no longer fall over when stepping on shards.
      • -
      -

      Gun Hog updated:

      -
        -
      • Mining borg diamond drill upgrade now functional.
      • -
      -

      Ikarrus updated:

      -
        -
      • Doubled the initial charge of SMESs in Engineering.
      • -
      • Influence cap for gangs has been increased.
      • -
      -

      incoming5643 updated:

      -
        -
      • All modes now select their antagonists before job selection, this means that a player who prefers roles normally immune to being certain antagonists (implanted roles/silicons) can still have a fair shot at every antagonist roll they opt into. If they're selected they simply will not end up with an incompatible job.
      • -
      • As an example if someone loved to play Head of Security (humor me here) and had it set to high, and the only other jobs he had set were security officer at medium and botanist at low but he was selected to be a traitor, he would spawn as a botanist even if there ended up being no Head of Security.
      • -
      • Please give playing security another chance if you'd written it off because it affected your antag chances.
      • -
      -

      xxalpha updated:

      -
        -
      • Hulks can now break windoors.
      • -
      • Fixed smoking pipe messages. Fixed emptying a smoking pipe with nothing in it.
      • -
      - -

      04 May 2015

      -

      Firecage updated:

      -
        -
      • Emagged windoors can now be deconstructed.
      • -
      -

      RemieRichards updated:

      -
        -
      • Adds Plasmamen, a species that breathes plasma and bursts into flames if they don't wear special suits.
      • -
      • New burning icon for all humanoid mobs.
      • -
      • New sprite for Skeletons to match Plasmamen.
      • -
      -

      oranges updated:

      -
        -
      • Thanks to recent advances in fork science, you no longer need to aim at your eyes to eat the food off a fork
      • -
      -

      xxalpha updated:

      -
        -
      • Adds a new barsign: 'The Net'.
      • -
      - -

      03 May 2015

      -

      AnturK updated:

      -
        -
      • Abductors can purchase spare gear with experimentation points.
      • -
      -

      Ikarrus updated:

      -
        -
      • Admins can now adjust the pre-game delay time.
      • -
      -

      MrStonedOne updated:

      -
        -
      • MasterController and subsystem rejiggering!
      • -
      • The MC can now dynamcially change the rate a subsystem is triggered based on how laggy it's being. This has been applied to atmos to allow for faster air processing without lagging the server
      • -
      • Pipes and atmos machinery now processes in tune with air, rather than seperately.
      • -
      • Fixed hotspots and fire causing more lag than they needed to
      • -
      • Fixed some objects not getting garbage collected because they didn't properly clear references in Destory()
      • -
      • The qdel subsystem will now limit its processing time to a 5th of a second each tick to prevent lag when a lot of deletes happen
      • -
      • Fixed the ticker not showing a tip of the round if an admin forces the round to start immediately
      • -
      - -

      02 May 2015

      -

      Boggart updated:

      -
        -
      • Cryo tubes can no longer be used for ventcrawling.
      • -
      -

      Ikarrus updated:

      -
        -
      • Admins can choose the strength and size of Centcom teams to send, ranging from officials to deathsquads, with the 'Make Centcom Respone Team' button.
      • -
      -

      phil235 updated:

      -
        -
      • Space carps can no longer knock down anyone, but they now deal additional stamina damage to humans.
      • -
      • Radiation effects from uranium walls are nerfed to the level of uranium floor.
      • -
      • You can no longer put an inactive MMI in a cyborg shell. Ghosted brains now get an alert when someone puts their brain in a MMI. You can now examine the MMI to see if its brain is active.
      • -
      - -

      01 May 2015

      -

      Ikarrus updated:

      -
        -
      • Gang bosses can now rally their gang to their location with their gangtool.
      • -
      • Gangtools can no longer recall the shuttle if station integrity is lower than 70%
      • -
      • Removed requirement to be in the territory to tag it.
      • -
      • Recruitment Pen cost reduced to 40.
      • -
      • Communications console should now accurately print the (lack of a) location of the last shuttle call.
      • -
      -

      Xhuis updated:

      -
        -
      • Revenants will no longer spawn without admin intervention. They are pending a remake.
      • -
      - -

      30 April 2015

      -

      Fayrik updated:

      -
        -
      • Ported NanoUI to most atmospherics equipment.
      • -
      -

      TheVekter updated:

      -
        -
      • Hooch is now made with 2 parts Ethanol, 1 part Welder fuel and 1 part Universal Enzyme as a catalyst.
      • -
      • No-slip shoes are paintable, painting them doesn't remove no-slip properties.
      • -
      - -

      29 April 2015

      -

      AndroidSFV updated:

      -
        -
      • Dehydrated carp now are friendly to both the imprinter of the plushie as well as any coded-in allies (I.E. Nuke Ops team), and unfriendly to carp of other origin othan than yourself or your coded-in allies. Dehydrated carp that are not imprinted will still have the same behavior as regular carp.
      • -
      -

      AnturK updated:

      -
        -
      • Advanced cameras now have all functionality of the abductor consoles.
      • -
      • Pinpoint teleportation takes 8 seconds and spawns a flashy silhouette at the target location. Can be used as distraction since it appears even if teleporter is empty.
      • -
      • Abductors are now immune to viruses.
      • -
      • Dissection surgery ignores clothes.
      • -
      • Non-abductors can escape the ship by fiddling with consoles enough.
      • -
      • Three new negative glands.
      • -
      • Bloody glands spray blood everywhere and injure the host.
      • -
      • Bodysnatch glands turn the host into a cocoon that hatches doppelgangers.
      • -
      • Plasma glands cause the host to explode into a cloud of plasma.
      • -
      -

      GoonOnMoon updated:

      -
        -
      • Added a new assault rifle to the game for use by Nanotrasen fighting forces in special events. Also happens to be available in the Liberation Station vending machine and the summon guns spell usable by the wizard and badminnery.
      • -
      -

      Iamgoofball updated:

      -
        -
      • Acid blob has been removed.
      • -
      • Charcoal and Silver Sulf are more powerful now.
      • -
      • Styptic power and Silver Sulf metabolize at the default rate.
      • -
      -

      Ikarrus updated:

      -
        -
      • Spraycans and crayons can now draw Poseur Tags, aka Fake Gang Tags, as grafiti.
      • -
      • Influence income changed to provide weaker gangs a bigger boost, while slowing down stronger gangs to promote opportunity for comebacks.
      • -
      • Gangs only earn influence on territories they have held on to since the previous Status Report (the income calculation every 5 minutes). This places more significance on defending your existing territory.
      • -
      • You must be in the territory physically to tag it now. So no more tagging everything from maint.
      • -
      • Gang income delay reduced to 3 minutes intervals.
      • -
      • Gang Capture goal reduced to 50%
      • -
      • Gang spraycan use increased to 20
      • -
      • Gang Boss icon is now a red [G] icon to make it stand out better from regular gang icons
      • -
      -

      JJRcop updated:

      -
        -
      • TED's kill duration has been halved.
      • -
      • Escaping from the TED's field no longer kills you.
      • -
      -

      RemieRichards updated:

      -
        -
      • Adds Easels and canvases for custom drawings.
      • -
      • Place a canvas on an easel and draw on it with crayons, clean one pixel with a rag or soap and activate it in-hand to erase the whole canvas.
      • -
      • Ports VG's Ventcrawling overhaul!
      • -
      • Crawling through vents is no longer instant, you now have to move and navigate manually
      • -
      • While inside pipes and other atmos machinery, you now see pipe vision
      • -
      -

      phil235 updated:

      -
        -
      • Podplants are no longer unharvestable.
      • -
      • Choosing your clown, mime, cyborg and AI name as well as religion and deity is now done in the preferences window. As a chaplain , your bible's icon is now chosen by clicking the bible.
      • -
      - -

      25 April 2015

      -

      Boggart updated:

      -
        -
      • Generalizes handheld instrument code and Ports Nienhaus's guitar, sounds by BartNixon of Tau Ceti.
      • -
      • Fixes being unable to build disposal pipes on walls, makes changing the RPD's settings not affect pipes that are currently building, makes the RPD use the datum/browser ui, makes it use categories and makes it show the selected mode.
      • -
      -

      Gun Hog updated:

      -
        -
      • Nanotrasen has provided designs for fabrication of APC power control modules. You may print them at any autolathe.
      • -
      -

      Ikarrus updated:

      -
        -
      • Gangs can now purchase switchblades, a relatively cheap and decently robust melee weapon.
      • -
      • Gangs now require at least 66% control of the station to win.
      • -
      • Gang spraycan uses reduced to 15.
      • -
      • Pistol cost increased to 30 Influence
      • -
      • Promotions now start off cheap at 20 influence but get more expensive the more people you promote.
      • -
      -

      Xhuis updated:

      -
        -
      • Added a Create Antagonist button for revenants.
      • -
      • Removed Mind Blast.
      • -
      • Revenants no longer get killed by explosions.
      • -
      • Mind spike cooldown increased to 4 seconds.
      • -
      • Harvest now takes 8 seconds and requires you to be adjacent to the target.
      • -
      • Hypnotise sleeps targets for longer.
      • -
      • Revenant now starts with 3 strikes.
      • -
      -

      phil235 updated:

      -
        -
      • Telecom machines are now deconstructed the same way as all other constructable machines.
      • -
      • You can no longer overdose on nicotine but you can get addicted (very mild effects).
      • -
      - -

      22 April 2015

      -

      Incoming5643 updated:

      -
        -
      • Adds a new fun button for admins: 'Set Round End Sound'. You can use the set round end sound button to set the round end sound. Glad we cleared that up!
      • -
      -

      Miauw62 updated:

      -
        -
      • Very slightly expanded atmos and added an external airlock.
      • -
      -

      Xhuis updated:

      -
        -
      • A few issues have been fixed for revenants. In addition, the Mind Blast/Mind Spike sound effect has been removed.
      • -
      • Adds the Hypnotize ability to revenants. It will cause a target to fall asleep after a short time.
      • -
      -

      xxalpha updated:

      -
        -
      • Added an Exosuit Mining Scanner to the robotics fabricator.
      • -
      • Buffed Ripley's movement and drilling speed in low pressure environments.
      • -
      - -

      21 April 2015

      -

      Ikarrus updated:

      -
        -
      • Gang mode has had some considerable work done on it, including a new objective and currency dynamic.
      • -
      • New objective: Claim half the station as territory by tagging it with spray cans supplied to gang bosses, but usable by any member.
      • -
      • An area can only be tagged by one gang at a time, remove your opponent's tag or spray over it.
      • -
      • New recruitment: Recruiment pens replace flashes, stab people to recruit them.
      • -
      • Recruitment is silent, but causes brief seizures and has a cooldown that scales upwards with a gang's size.
      • -
      • New tool: The Gangtool is used by bosses and lieutenants to recall the shuttle and purchase supplies.
      • -
      • Pistols, ammo, spraycans, recruitment pens and additional gangtools can all be bought.
      • -
      • Gangtools also alert the user of promotions, purchases and territory changes within the gang.
      • -
      • Lieutenants are promoted from gang members when given their own gangtool; they're immune to deconversion and able to do anything a boss can except promotion.
      • -
      • New currency: Influence is used to purchase with the gangtool and is generated every 5 minutes by each territory owned by the gang.
      • -
      • Thermite can be cleaned off walls now.
      • -
      - -

      20 April 2015

      -

      Fayrik updated:

      -
        -
      • Abductors now get advanced camera consoles.
      • -
      • Redesigned Centcom again. There's a bar at the thunderdome now.
      • -
      • Headsets can now be locked to a spesific frequency, this only occurs for nuke ops and deathsquads.
      • -
      • The Centcom channel is now available over all z-levels, regardless of telecomms status.
      • -
      • The Deathsquad space suits have been upgraded to hardsuits.
      • -
      • The Deathsquad now have thermal imaging huds, which can swap which hud they display on the fly.
      • -
      -

      phil235 updated:

      -
        -
      • Reagents are now back to being metabolized every tick. Fixes frost oil and capsaicin not working.
      • -
      • Fixes not being able to make sterilizine.
      • -
      • Adding overdose to space drug, causing mild hallucination and toxin and brain damage.
      • -
      • Nerfed healing power of stimulant reagent. Buffed ephedrine a bit.
      • -
      • Nitroglycerin can now be stabilized with stabilizing agent, and explodes when heated.
      • -
      - -

      19 April 2015

      -

      AnturK updated:

      -
        -
      • Observers can now see abductor hivemind messages.
      • -
      • Adds advanced baton for abductors: Stun, Sleep and Cuff in one tool.
      • -
      • Abductor agents now have vest cameras.
      • -
      • New sprites for abductors and their gear made by Ausops.
      • -
      -

      Fayrik updated:

      -
        -
      • Added jobban options for Abductors and Deathsquads.
      • -
      • Made admin antag spawning buttons more efficient and less prone to failure.
      • -
      -

      Xhuis updated:

      -
        -
      • Recent sightings aboard space stations shows that spirits seem to be manifesting as malevolent revenants and draining the life of crew. The chaplain may be helpful in stopping this new threat.
      • -
      -

      kingofkosmos updated:

      -
        -
      • Girder and machine frame construction protocols has been changed. They can now be secured/unsecured with a wrench and disassembled with a welder.
      • -
      - -

      16 April 2015

      -

      AnturK updated:

      -
        -
      • Nanotrasen authorities are reporting sightings of unidentified space craft near space station 13. Report any strange sightings or mental breakdowns to central command.
      • -
      • PS : Abductions are not covered by health insurance.
      • -
      • Shadowlings and their thralls now have HUD icons.
      • -
      • Thralls learn their master's objectives when enthralled.
      • -
      • Regenerate Chitin ability lets shadowlings re-equip their armor if lost.
      • -
      • Loyalty implanted people take 25% longer to enthrall, but lose their implant and become immune to re-implanting.
      • -
      • Shadowlings now have a message in their spawning text which specifies that cooperation is mandatory.
      • -
      • Veil now works on equipped lights.
      • -
      • Shadowlings now take correct amount of burn damage and in light and heal clone and brain damage in darkness.
      • -
      • Fixes 'Round end code broke' displaying every round.
      • -
      • Shadowlings who ascend will nore greentext properly.
      • -
      -

      Gun Hog updated:

      -
        -
      • Thinktronic Systems, LTD. has increased the Value of the Value-PAK PDA cartridge! Standard issue for Captain PDAs, it can now access security bots, medibots, cleanbots, and floorbots ALL AT ONCE! In addition, it can also connect to your station's Newscaster network at NO EXTRA CHARGE! As a Thank you for our contract with them, they have thrown in Newscaster access for the HumanResources9001 cartridge, Heads of Personnel rejoice!
      • -
      • The Newscaster app has also gotten a free upgrade which allows it to display images and comments inside of posts!
      • -
      • Nanotrasen has concurrently released a patch for bots which will allow off-station bots to properly patrol.
      • -
      -

      Incoming5643 updated:

      -
        -
      • Changeling head slugs have been given player control, ventcrawling, and a short escape period after egg laying.
      • -
      -

      MrStonedOne updated:

      -
        -
      • Admin ghosts can now drag ghosts to mobs to put that ghost in control of that mob.
      • -
      -

      Xhuis updated:

      -
        -
      • Nanotrasen scientists have recently observed a strange genome shift in green slimes. Experiments have shown that injection of radium into an active green slime extract will create a very unstable mutation toxin. Use with caution.
      • -
      - -

      13 April 2015

      -

      AnturK updated:

      -
        -
      • Spacemen have learned the basics of martial arts: Boxing, unleash it's power by wearing Boxing Gloves.
      • -
      • While boxing you can't grab or disarm, but you hit harder with a knockout chance that scales off stamina damage above 50.
      • -
      • Rumors have been heard of powerful martial styles avaliable only to the gods themselves.
      • -
      -

      CosmicScientist updated:

      -
        -
      • Added a dehydrated space carp to traitor items, bought with telecrystals. Use dehydrated space carp in hand to school them on loyalty. Add water to create a vicious murder machine just for the halibut.
      • -
      • The toy carp plushie now has attack verbs for fun, hit your friend with one today. I put my sole into this mod.
      • -
      • If you can think of a better fish pun let minnow but I shouldn't leave it to salmon else.
      • -
      -

      Ikarrus updated:

      -
        -
      • Gang bosses can no longer purchase certain potent traitor items but instead have access to some of a nuke op's arsenal of weapons.
      • -
      -

      Incoming5643 updated:

      -
        -
      • Three new chemical types of blob can occur: Omnizine, Morphine and Space Drugs.
      • -
      -

      MrPerson updated:

      -
        -
      • New lighting system! Lighting now smoothly transfers from one lighting level to the next.
      • -
      -

      Xhuis updated:

      -
        -
      • There have been... odd sighting in Space Station 13's sector. Alien organisms have appeared on stations 57, 23, and outlying.
      • -
      • Nanotrasen personnel have reason to believe that Space Station 13 is under attack by shadowlings. We have little intel on these creatures, but be on the lookout for odd behavior and dark areas. Use plenty of lights.
      • -
      -

      Zelacks updated:

      -
        -
      • Defibs no longer have a minimum damage requirement for a successful revive. Patients will have 150 total damage on a successful revive.
      • -
      • Additional feedback is given for several failure states of the defib.
      • -
      -

      xxalpha updated:

      -
        -
      • Airlock crushing damage increased.
      • -
      - -

      11 April 2015

      -

      Gun Hog updated:

      -
        -
      • Nanotrasen has approved an access upgrade for Cargo Technicians! They are now authorized to release minerals from the ore redemption machine, to allow proper inventory management and shipping.
      • -
      -

      Iamgoofball updated:

      -
        -
      • Blobbernauts no longer deal chemical damage, brute damage increased however.
      • -
      -

      Ikarrus updated:

      -
        -
      • Getting converted by a rev or cultist will stun you for a few seconds.
      • -
      -

      Incoming5643 updated:

      -
        -
      • Fixes some AI malf powers being usable when dead.
      • -
      -

      MrPerson updated:

      -
        -
      • Reduces movement speed penalty from being cold.
      • -
      -

      Xhuis updated:

      -
        -
      • Adds a pizza bomb traitor item for 4 telecrystals. It's a bomb, diguised as a pizza box. You can also attempt to defuse it by using wirecutters.
      • -
      -

      kingofkosmos updated:

      -
        -
      • Activating internals with an adjusted breath mask will automatically push it up to normal state.
      • -
      • Masks can now be adjusted when buckled to a chair.
      • -
      -

      optimumtact updated:

      -
        -
      • Stun batons no longer lose charge over time when on.
      • -
      -

      phil235 updated:

      -
        -
      • The AI holopads now use a popup window just like computers and other machines.
      • -
      • Nerfs kinetic accelerator and plasma cutters. Plasma cutter is no longer in the mining vendor. Reduces the drilling cost of all drills.
      • -
      • Adding 40+ new food and drink recipes, mostly using the newest plants. Notably rice recipes, burritos, nachos, salads, pizzas.
      • -
      • Opening the tablecrafting window can now also be done by dragging the mouse from any food (that's on a table) onto you.
      • -
      • The kitchen cabinet starts with one rice pack.
      • -
      • Glasses with unknown reagent will no longer be always brown but will take the color of their reagents.
      • -
      - -

      09 April 2015

      -

      Iamgoofball updated:

      -
        -
      • Quite a lot of cleanables can now be scooped up with a beaker in order to acquire the contents.
      • -
      • Light a piece of paper on fire with a lighter, and scoop up the ashes!
      • -
      • Scoop up the flour the clown sprayed everywhere as a 'joke'!
      • -
      • Scoop up the oil left behind by exploding robots for re-usage in chemistry!
      • -
      • You can splash the contents of a beaker onto the floor to create a Chemical Pile! This pile can be heated or blown up and have the reagents take the effects. Make a string of black powder around a department in maint. and then heat it with a welder today!
      • -
      • Reagents now can have processing effects when just sitting in a beaker.
      • -
      • Pyrosium and Cryostylane now feed off of oxygen and heat/cool the beaker without having to be inside of a person!
      • -
      • Reagents can now respond to explosions!
      • -
      • Black Powder now instantly detonates if there is an explosion that effects it.
      • -
      • Fire now heats up beakers and their contents!
      • -
      • Activate some smoke powder in style by lighting the beaker on fire with a burning hot plasma fire!
      • -
      -

      RemieRichards updated:

      -
        -
      • Ninja stars are summoned to your hand to be thrown rather than automatically targetting nearby mobs.
      • -
      • Added Sword Recall: pulls your katana towards you, hitting mobs in the way. Free if within sight, cost scales with distance otherwise.
      • -
      • Enemies can be electrocuted by a ninja as the cost of his energy, stunning and injuring them.
      • -
      • Removed SpiderOS, functions moved to status panel.
      • -
      • Fixed energy nets not anchoring target, katana emag spam and sound delay.
      • -
      -

      optimumtact updated:

      -
        -
      • Mimes can't use megaphone without breaking their vow anymore.
      • -
      -

      phil235 updated:

      -
        -
      • Flying animals no longer triggers mouse traps, bear traps or mines.
      • -
      - -

      04 April 2015

      -

      ACCount updated:

      -
        -
      • Emergency welding tool added to emergency toolbox.
      • -
      • Changed industrial welding tool sprite.
      • -
      • Replaced welder in syndicate toolbox with industrial one.
      • -
      • All tools in syndicate toolbox are red. Corporate style!
      • -
      • Red crowbar is a bit more robust.
      • -
      • Fixed two bugs: welder icon disappearing and drone toolbox spawning with invisible cable coil.
      • -
      -

      AnturK updated:

      -
        -
      • Picket signs: table crafted with a rod and two cardboard sheets, write on them with pen or crayon.
      • -
      -

      Cheridan updated:

      -
        -
      • The bar's layout has been changed with a poker table and re-arranged seating.
      • -
      -

      Dannno updated:

      -
        -
      • Added gun lockers for shotguns and energy guns. Click on the lockers with an item to close them if they're full.
      • -
      -

      Gun Hog updated:

      -
        -
      • Nanotrasen research has finalized improvements for the experimental Reactive Teleport Armor. The armor is now made of a thinner, lightweight material which will not hinder movement. In addition, the armor shows an increase in responsiveness, activating in at least 50% of tests.
      • -
      -

      Incoming updated:

      -
        -
      • The iconic blood-red hardsuits of nuke ops can now be purchased for a moderate sum of 8 TC by traitors.
      • -
      -

      Jordie0608 updated:

      -
        -
      • Cyborg mining drills now use up their internal battery before drawing power from a borg's cell.
      • -
      • Fixes cyborg mining drills not recharging.
      • -
      -

      RemieRichards updated:

      -
        -
      • Burning mobs will ignite others they bump into or when they are stepped on.
      • -
      -

      Xhuis updated:

      -
        -
      • Malfunctioning AIs can no longer leave the station z-level. Upon doing this, they will fail the round.
      • -
      • Phazon exosuits now require an anomaly core as the final step in their construction.
      • -
      -

      xxalpha updated:

      -
        -
      • Added Nutriment Pump, Nutriment Pump Plus and Reviver implants.
      • -
      • Added origin technologies to all implants.
      • -
      • The following implants are now much harder to obtain: X-ray, Thermals, Anti-Stun, Nutriment Pump Plus, Reviver.
      • -
      • Cauterizing a surgery wound will now heal some of the damage done by the bonesaw if it was used as part of the same surgery.
      • -
      • Added ability for Medical HUDs to detect cybernetic implants in humans.
      • -
      GoonStation 13 Development Team diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 4fd3cb663bb..3d1210ce8b6 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -4600,3 +4600,38 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - rscadd: You can craft primitive gear from bone and sinew. coiax: - bugfix: Non-humans are now able to interact with bee boxes. +2016-04-25: + Joan: + - bugfix: You can once again hit a closet or crate with an item to open it. + Kor Razharas: + - rscadd: Adds support for autoclicking. + - rscadd: The Shock Revolver has been added to RnD. + - rscadd: The Laser Gatling Gun has been added to RnD. The Gatling Gun uses autoclick + to fire as you hold down the mouse. + - rscadd: The Research Director now starts with a box of firing pins. + - rscadd: The SABR and Stun Revolver recipes have been removed from RnD + coiax: + - rscadd: Laughter demons are like slaughter demons, but they tickle people to death + - tweak: Slaughter demons are no longer able to cast spells while phased. + - tweak: Wizards can now speak while ethereal, but still cannot cast spells while + ethereal. + - rscadd: 'Centcom''s "drone expert" reports that drones vision filters have been + upgraded to include the option of making all beings appear as harmless animals. + info: As always, all drone filters are togglable.' + - rscadd: As a sign of friendship between the Free Golems and Centcom, they have + modified Centcom's jaunter to be worn around a user's waist, which will save + them from falling to their death in a chasm. + - experiment: The Golems warn that these modifications have created a risk of accidental + activation when exposed to heavy electromagnetic fields. + - tweak: Renamed hivelord stabilizer to stabilizing serum. + - rscadd: Centcom regret to inform you that new instabilities with nearby gas giants + are causing exospheric bubbles to affect the telecommunications processors. + Please contact your supervisor for further instructions. + - rscadd: The Janitor's Union has mandated additional features to station light + replacer devices. + - rscadd: The light replacer now can be used on the floor to replace the bulbs of + any lights on that tile. + - rscadd: The light replacer now eats replaced bulbs, and after a certain number + of bulb fragments (four) will recycle them into a new bulb. + - tweak: The description of the light replacer is now more informative. + - rscadd: Clown mask appearance toggle now has an action button. diff --git a/html/changelogs/AutoChangeLog-pr-16940.yml b/html/changelogs/AutoChangeLog-pr-16940.yml deleted file mode 100644 index 1ab63958340..00000000000 --- a/html/changelogs/AutoChangeLog-pr-16940.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: coiax -delete-after: True -changes: - - rscadd: "Laughter demons are like slaughter demons, but they tickle people to death" - - tweak: "Slaughter demons are no longer able to cast spells while phased." - - tweak: "Wizards can now speak while ethereal, but still cannot cast spells while ethereal." diff --git a/html/changelogs/AutoChangeLog-pr-16974.yml b/html/changelogs/AutoChangeLog-pr-16974.yml deleted file mode 100644 index 26c9011ff0e..00000000000 --- a/html/changelogs/AutoChangeLog-pr-16974.yml +++ /dev/null @@ -1,8 +0,0 @@ -author: Kor Razharas -delete-after: True -changes: - - rscadd: "Adds support for autoclicking." - - rscadd: "The Shock Revolver has been added to RnD." - - rscadd: "The Laser Gatling Gun has been added to RnD. The Gatling Gun uses autoclick to fire as you hold down the mouse." - - rscadd: "The Research Director now starts with a box of firing pins." - - rscadd: "The SABR and Stun Revolver recipes have been removed from RnD" diff --git a/html/changelogs/AutoChangeLog-pr-17009.yml b/html/changelogs/AutoChangeLog-pr-17009.yml deleted file mode 100644 index 81dc53b9e65..00000000000 --- a/html/changelogs/AutoChangeLog-pr-17009.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: coiax -delete-after: True -changes: - - rscadd: "Centcom's \"drone expert\" reports that drones vision filters have -been upgraded to include the option of making all beings appear as harmless animals. -info: As always, all drone filters are togglable." diff --git a/html/changelogs/AutoChangeLog-pr-17053.yml b/html/changelogs/AutoChangeLog-pr-17053.yml deleted file mode 100644 index e8f61cf4668..00000000000 --- a/html/changelogs/AutoChangeLog-pr-17053.yml +++ /dev/null @@ -1,10 +0,0 @@ -author: coiax -delete-after: True -changes: - - rscadd: "As a sign of friendship between the Free Golems and Centcom, -they have modified Centcom's jaunter to be worn around a user's waist, -which will save them from falling to their death in a chasm." - - experiment: "The Golems warn that these modifications have created -a risk of accidental activation when exposed to heavy electromagnetic -fields." - - tweak: "Renamed hivelord stabilizer to stabilizing serum." diff --git a/html/changelogs/AutoChangeLog-pr-17054.yml b/html/changelogs/AutoChangeLog-pr-17054.yml deleted file mode 100644 index 8b8b5ff8e55..00000000000 --- a/html/changelogs/AutoChangeLog-pr-17054.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: coiax -delete-after: True -changes: - - rscadd: "Centcom regret to inform you that new instabilities with nearby -gas giants are causing exospheric bubbles to affect the -telecommunications processors. Please contact your supervisor for -further instructions." diff --git a/html/changelogs/AutoChangeLog-pr-17067.yml b/html/changelogs/AutoChangeLog-pr-17067.yml deleted file mode 100644 index 69d7d32a0f7..00000000000 --- a/html/changelogs/AutoChangeLog-pr-17067.yml +++ /dev/null @@ -1,10 +0,0 @@ -author: coiax -delete-after: True -changes: - - rscadd: "The Janitor's Union has mandated additional features to station -light replacer devices." - - rscadd: "The light replacer now can be used on the floor to replace -the bulbs of any lights on that tile." - - rscadd: "The light replacer now eats replaced bulbs, and after a certain -number of bulb fragments (four) will recycle them into a new bulb." - - tweak: "The description of the light replacer is now more informative." diff --git a/html/changelogs/AutoChangeLog-pr-17078.yml b/html/changelogs/AutoChangeLog-pr-17078.yml deleted file mode 100644 index fba30ec9bcd..00000000000 --- a/html/changelogs/AutoChangeLog-pr-17078.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Joan -delete-after: True -changes: - - bugfix: "You can once again hit a closet or crate with an item to open it." diff --git a/html/changelogs/AutoChangeLog-pr-17083.yml b/html/changelogs/AutoChangeLog-pr-17083.yml deleted file mode 100644 index ea4a2146270..00000000000 --- a/html/changelogs/AutoChangeLog-pr-17083.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: coiax -delete-after: True -changes: - - rscadd: "Clown mask appearance toggle now has an action button." From 98030c8480aef74012f4d36ca9502d097e11c046 Mon Sep 17 00:00:00 2001 From: TechnoAlchemist Date: Mon, 25 Apr 2016 16:51:09 -0700 Subject: [PATCH 155/265] """"""""Design Lead""""""""""" --- code/modules/mining/equipment_locker.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm index af458a83571..b0d9c788204 100644 --- a/code/modules/mining/equipment_locker.dm +++ b/code/modules/mining/equipment_locker.dm @@ -415,12 +415,12 @@ ..() /obj/machinery/mineral/equipment_vendor/proc/RedeemVoucher(obj/item/weapon/mining_voucher/voucher, mob/redeemer) - var/selection = input(redeemer, "Pick your equipment", "Mining Voucher Redemption") as null|anything in list("Two Survival Capsules", "Resonator", "Mining Drone", "Advanced Scanner") + var/selection = input(redeemer, "Pick your equipment", "Mining Voucher Redemption") as null|anything in list("Survival Capsule and Explorer Belt", "Resonator", "Mining Drone", "Advanced Scanner") if(!selection || !Adjacent(redeemer) || qdeleted(voucher) || voucher.loc != redeemer) return switch(selection) - if("Two Survival Capsules") - new /obj/item/weapon/survivalcapsule(src.loc) + if("Survival Capsule and Explorer Belt") + new /obj/item/weapon/storage/belt/mining(src.loc) new /obj/item/weapon/survivalcapsule(src.loc) if("Resonator") new /obj/item/weapon/resonator(src.loc) From 2f1b5d8fba4d518b2a32c32c14619e49fd323ceb Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Tue, 26 Apr 2016 00:28:29 +0000 Subject: [PATCH 156/265] Automatic changelog generation for PR #17076 --- html/changelogs/AutoChangeLog-pr-17076.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-17076.yml diff --git a/html/changelogs/AutoChangeLog-pr-17076.yml b/html/changelogs/AutoChangeLog-pr-17076.yml new file mode 100644 index 00000000000..6e2acc3ef64 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-17076.yml @@ -0,0 +1,7 @@ +author: Joan +delete-after: True +changes: + - tweak: "Blobbernauts now spawn at half health." + - tweak: "Blobbernauts regeneration on blob is now 2.5 health per tick, from 5." + - tweak: "Blobbernauts now cost 40 resources to produce, from 30." + - rscdel: "Factories supporting blobbernauts do not spawn spores." From 7576665b1ade719c3af794868453e3c516a73c60 Mon Sep 17 00:00:00 2001 From: sybil-tgstation13 Date: Tue, 26 Apr 2016 00:32:24 +0000 Subject: [PATCH 157/265] Automatic changelog compile --- html/changelog.html | 98 ++-------------------- html/changelogs/.all_changelog.yml | 6 ++ html/changelogs/AutoChangeLog-pr-17076.yml | 7 -- 3 files changed, 15 insertions(+), 96 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-17076.yml diff --git a/html/changelog.html b/html/changelog.html index e6e2ce06695..2dd16a891d2 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -55,6 +55,15 @@ -->
      +

      26 April 2016

      +

      Joan updated:

      +
        +
      • Blobbernauts now spawn at half health.
      • +
      • Blobbernauts regeneration on blob is now 2.5 health per tick, from 5.
      • +
      • Blobbernauts now cost 40 resources to produce, from 30.
      • +
      • Factories supporting blobbernauts do not spawn spores.
      • +
      +

      25 April 2016

      Joan updated:

        @@ -506,95 +515,6 @@
      • Honey buns and honey nut bars are now craftable using honey.
      • Brewing mead now requires actual honey.
      - -

      29 March 2016

      -

      Bawhoppen updated:

      -
        -
      • Bruisepacks, ointment, and gauze now will apply significanty faster.
      • -
      • SWAT crates no longer contain combat knives.
      • -
      • SWAT crates now contain combat gloves.
      • -
      • Combat knives now can be ordered in their own crate.
      • -
      -

      Iamsaltball updated:

      -
        -
      • GRAB SUPER NERFED
      • -
      • IT'S WAY EASIER TO ESCAPE GRABS NOW
      • -
      • IT TAKES WAY LONGER TO UPGRADE GRABS NOW
      • -
      • YOU CAN ACTUALLY FUCKING ESCAPE GRABS NOW TOO #WOW #WHOA
      • -
      • GRAB TEXT IS ALL BIG BOLD AND RED MUCH LIKE YOUR MOM LAST NIGHT
      • -
      • GIT GUDDERS GO FUCK YOURSELVES YOU CAN'T GET GOOD AGAINST "LOL INSTANT PERMASTUN THAT ISN'T OBVIOUS IN CHAT LIKE THE REST OF THE STUNS"
      • -
      -

      Joan updated:

      -
        -
      • Ghost revival/body creation alerts now use the ghost's hud style.
      • -
      • Support holoparasites now have a healing effect with their color when successfully healing a target.
      • -
      • Ranged holoparasite projectiles now take on the color of the holoparasite.
      • -
      • Holoparasite communication(holo->summoner) now sends the message to all holoparasites the summoner has.
      • -
      • If you have multiple holoparasites for some reason, Reset Guardian allows you to choose which to reset.
      • -
      • Resetting a holoparasite also resets its color and name, to make it more obvious it's a new player.
      • -
      • Holoparasites can now see their summoner's health and various ability cooldowns from the status panel.
      • -
      • Blobbernauts are now alerted when their factory is destroyed.
      • -
      -

      KazeEspada updated:

      -
        -
      • Blob Mobs no longer swap with other mobs.
      • -
      -

      RemieRichards updated:

      -
        -
      • Added the ability to make Apiaries and Honey frames with wood
      • -
      • Added the ability to make Royal Bee Jelly from 10 Mutagen and 40 Honey
      • -
      • Added the ability to make more Queen Bees from Royal Bee Jelly by using it on an existing Queen, to split her into two Queens
      • -
      • Made homeless bees more obvious
      • -
      • Fixed a typo that made almost all bees homeless, severely reducing the odds of getting honeycomb
      • -
      • Made bee progress reports (50% towards new honeycomb, etc.) always show, even if it's 0%
      • -
      • Made some feedback text more obvious
      • -
      • Fixed being able to duplicate the bee holder object, this was not exploity, just weird
      • -
      • Fixed being able to put two (or more) queens in the same apiary
      • -
      • Fixed some runtimes from hydro code assuming a plant gene exists
      • -
      • Fixed runtime when you use a honeycomb in your hand
      • -
      • It now takes and uses 5u of a reagent to give a bee that reagent
      • -
      • Removed unused icon file
      • -
      -

      Ricotez updated:

      -
        -
      • The default white ghost form now has directional sprites.
      • -
      • The default white ghost form now also has (your) hair! Here's how it works.
      • -
      • If you ghost from a body, you'll get the hair from that body. If it has hair.
      • -
      • If you hit Observe, you'll get the hair from the character you had active in your setup window. If they had hair.
      • -
      • This only works with the default white ghost form right now (because the other forms have the wrong shape or lack directional sprites), and with human bodies since they're the only ones that have hair. Sorry lizards and plasmamen! You'll get your turn next time.
      • -
      • A new preference called Ghost Accessories. This lets you configure if you want your ghost sprite to show both hair and directional sprites, only directional sprites or just use its original default version without directional sprites.
      • -
      • A new preference called Ghosts of Others. This preference is clientside and lets you configure how other ghosts appear to you: as their own setting, as the form they chose but without any hair or directional sprites, or as the simple white ghost sprite if you're sick of those premium users with their rainbow ghosts.
      • -
      • The layout of the ghost preference buttons has slightly changed. The old Choose Ghost Form and Choose Ghost Orbit are now a part of Ghost Customization, which also contains the new Ghost Accessories button. Clicking Ghost Customization will send you directly to Ghost Accessories if you don't have premium. The Preferences tab now also contains the Ghost Display button, which lets you configure how other ghosts appear to you.
      • -
      • Fixed a bug where the toggles for Ghost Accessories and Ghosts of Others in the Preferences menu wouldn't save your preference update to your save file.
      • -
      • Renamed the "Ghost Display Settings" preference toggle button to "Ghosts of Others", so it fits with the name the preference has everywhere else.
      • -
      -

      TehZombehz updated:

      -
        -
      • Paper sacks are now craftable by tablecrafting with 5 sheets of paper.
      • -
      • Comes in 5 different designs: Use a pen on a paper sack to change the design.
      • -
      • Certain paper sack designs can be modified with a sharp object to craft a (creepy) paper sack hat.
      • -
      -

      Xhuis updated:

      -
        -
      • Portal storm messages now use the station name rather than the world name.
      • -
      • Shadowlings can no longer glare while shadow walking.
      • -
      • Progress bars are now properly shown when reloading revolvers.
      • -
      • Cyborgs and AIs are no longer knocked out when being stuffed into lockers.
      • -
      • Plasmamen can no longer be the patient zero of the space retrovirus.
      • -
      • Cyborgs and AIs now properly display death messages.
      • -
      • Revenants can no longer be closed into lockers.
      • -
      • Airlocks no longer play sounds or flash lights when denying access if the airlock has no power.
      • -
      • Job spawn icons in mapping have been fixed.
      • -
      • Gibtonite's disarm message no longer include the outside viewer.
      • -
      • Cult walls and girders are now more streamlined and can be built with runed metal.
      • -
      • Positronic brains and MMIs can no longer see ghosts.
      • -
      • When someone is turned into a statue, the statue now appears as a greyscale version of them.
      • -
      • Returning from a statue to a human now knocks you down.
      • -
      • Flesh to Stone no longer works on dead mobs.
      • -
      • Wall-mounted flasher crates now have the proper price.
      • -
      • Wall-mounted flasher frames now have icons.
      • -
      • Upgraded resonators now have an inhand sprite.
      • -
      GoonStation 13 Development Team diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 3d1210ce8b6..822c5f31361 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -4635,3 +4635,9 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. of bulb fragments (four) will recycle them into a new bulb. - tweak: The description of the light replacer is now more informative. - rscadd: Clown mask appearance toggle now has an action button. +2016-04-26: + Joan: + - tweak: Blobbernauts now spawn at half health. + - tweak: Blobbernauts regeneration on blob is now 2.5 health per tick, from 5. + - tweak: Blobbernauts now cost 40 resources to produce, from 30. + - rscdel: Factories supporting blobbernauts do not spawn spores. diff --git a/html/changelogs/AutoChangeLog-pr-17076.yml b/html/changelogs/AutoChangeLog-pr-17076.yml deleted file mode 100644 index 6e2acc3ef64..00000000000 --- a/html/changelogs/AutoChangeLog-pr-17076.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: Joan -delete-after: True -changes: - - tweak: "Blobbernauts now spawn at half health." - - tweak: "Blobbernauts regeneration on blob is now 2.5 health per tick, from 5." - - tweak: "Blobbernauts now cost 40 resources to produce, from 30." - - rscdel: "Factories supporting blobbernauts do not spawn spores." From 1a3aaff808738c7f2d8a6d402a2f317541e120cb Mon Sep 17 00:00:00 2001 From: MrPerson Date: Mon, 25 Apr 2016 18:20:01 -0700 Subject: [PATCH 158/265] Removes monkeycube and chocolate unwrapping Pointless time wasters that add nothing to the game experience. Also removed the two wrapped sprites for completeness. --- .../objects/items/weapons/storage/boxes.dm | 2 +- code/game/objects/structures/watercloset.dm | 14 +++++------- code/modules/food&drinks/food/snacks.dm | 6 ----- code/modules/food&drinks/food/snacks_meat.dm | 16 ------------- code/modules/food&drinks/food/snacks_other.dm | 21 +----------------- .../kitchen machinery/monkeyrecycler.dm | 2 +- .../chemistry/reagents/other_reagents.dm | 5 +---- icons/obj/food/food.dmi | Bin 44786 -> 44836 bytes 8 files changed, 9 insertions(+), 57 deletions(-) diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index bb95dbf2d7f..2fd9b9c47dc 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -311,7 +311,7 @@ /obj/item/weapon/storage/box/monkeycubes/New() ..() for(var/i = 1; i <= 5; i++) - new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped(src) + new /obj/item/weapon/reagent_containers/food/snacks/monkeycube(src) /obj/item/weapon/storage/box/permits diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 1a9586b7449..fe14145ffad 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -442,15 +442,11 @@ if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/monkeycube)) var/obj/item/weapon/reagent_containers/food/snacks/monkeycube/M = O - if(M.wrapped) - user << "You need to unwrap [src] first!" - return - else - user << "You place [src] under a stream of water..." - user.drop_item() - M.loc = get_turf(src) - M.Expand() - return + user << "You place [src] under a stream of water..." + user.drop_item() + M.loc = get_turf(src) + M.Expand() + return var/obj/item/I = O if(!I || !istype(I)) diff --git a/code/modules/food&drinks/food/snacks.dm b/code/modules/food&drinks/food/snacks.dm index 5a90cc0d225..7ba88bcd75a 100644 --- a/code/modules/food&drinks/food/snacks.dm +++ b/code/modules/food&drinks/food/snacks.dm @@ -9,7 +9,6 @@ var/slice_path // for sliceable food. path of the item resulting from the slicing var/slices_num var/eatverb - var/wrapped = 0 var/dried_type = null var/dry = 0 var/cooked_type = null //for microwave cooking. path of the resulting item after microwaving @@ -65,9 +64,6 @@ M << "You don't feel like eating any more junk food at the moment." return 0 - if(wrapped) - M << "You can't eat wrapped food!" - return 0 else if(fullness <= 50) M << "You hungrily [eatverb] some of \the [src] and gobble it down!" else if(fullness > 50 && fullness < 150) @@ -81,8 +77,6 @@ return 0 else if(!isbrain(M)) //If you're feeding it to someone else. - if(wrapped) - return 0 if(fullness <= (600 * (1 + M.overeatduration / 1000))) M.visible_message("[user] attempts to feed [M] [src].", \ "[user] attempts to feed [M] [src].") diff --git a/code/modules/food&drinks/food/snacks_meat.dm b/code/modules/food&drinks/food/snacks_meat.dm index 5000e581448..79cc725e8a8 100644 --- a/code/modules/food&drinks/food/snacks_meat.dm +++ b/code/modules/food&drinks/food/snacks_meat.dm @@ -129,30 +129,14 @@ desc = "Just add water!" icon_state = "monkeycube" bitesize = 12 - wrapped = 0 list_reagents = list("nutriment" = 2) filling_color = "#CD853F" -/obj/item/weapon/reagent_containers/food/snacks/monkeycube/attack_self(mob/user) - if(wrapped) - Unwrap(user) - /obj/item/weapon/reagent_containers/food/snacks/monkeycube/proc/Expand() visible_message("[src] expands!") new /mob/living/carbon/monkey(get_turf(src)) qdel(src) -/obj/item/weapon/reagent_containers/food/snacks/monkeycube/proc/Unwrap(mob/user) - icon_state = "monkeycube" - desc = "Just add water!" - user << "You unwrap the cube." - wrapped = 0 - -/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped - desc = "Still wrapped in some paper." - icon_state = "monkeycubewrap" - wrapped = 1 - /obj/item/weapon/reagent_containers/food/snacks/enchiladas name = "enchiladas" desc = "Viva La Mexico!" diff --git a/code/modules/food&drinks/food/snacks_other.dm b/code/modules/food&drinks/food/snacks_other.dm index f962ff5e48e..21d3b51ff7d 100644 --- a/code/modules/food&drinks/food/snacks_other.dm +++ b/code/modules/food&drinks/food/snacks_other.dm @@ -33,29 +33,10 @@ /obj/item/weapon/reagent_containers/food/snacks/chocolatebar name = "chocolate bar" desc = "Such, sweet, fattening food." - icon_state = "chocolatebarunwrapped" - wrapped = 0 + icon_state = "chocolatebar" list_reagents = list("nutriment" = 2, "sugar" = 2, "cocoa" = 2) filling_color = "#A0522D" -/obj/item/weapon/reagent_containers/food/snacks/chocolatebar/attack_self(mob/user) - if(wrapped) - Unwrap(user) - else - ..() - -/obj/item/weapon/reagent_containers/food/snacks/chocolatebar/proc/Unwrap(mob/user) - icon_state = "chocolatebarunwrapped" - desc = "It won't make you all sticky." - user << "You remove the foil." - wrapped = 0 - - -/obj/item/weapon/reagent_containers/food/snacks/chocolatebar/wrapped - desc = "It's wrapped in some foil." - icon_state = "chocolatebar" - wrapped = 1 - /obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice name = "huge mushroom slice" desc = "A slice from a huge mushroom." diff --git a/code/modules/food&drinks/kitchen machinery/monkeyrecycler.dm b/code/modules/food&drinks/kitchen machinery/monkeyrecycler.dm index 47a8d236b6f..48019536aca 100644 --- a/code/modules/food&drinks/kitchen machinery/monkeyrecycler.dm +++ b/code/modules/food&drinks/kitchen machinery/monkeyrecycler.dm @@ -100,7 +100,7 @@ playsound(src.loc, 'sound/machines/hiss.ogg', 50, 1) grinded -= required_grind for(var/i = 0, i < cube_production, i++) - new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped(src.loc) + new /obj/item/weapon/reagent_containers/food/snacks/monkeycube(src.loc) user << "The machine's display flashes that it has [grinded] monkeys worth of material left." else user << "The machine needs at least [required_grind] monkey(s) worth of material to produce a monkey cube. It only has [grinded]." diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 767f1521cac..959d2c1c6e2 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -147,16 +147,13 @@ // Monkey cube if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/monkeycube)) var/obj/item/weapon/reagent_containers/food/snacks/monkeycube/cube = O - if(!cube.wrapped) - cube.Expand() + cube.Expand() // Dehydrated carp else if(istype(O,/obj/item/toy/carpplushie/dehy_carp)) var/obj/item/toy/carpplushie/dehy_carp/dehy = O dehy.Swell() // Makes a carp - return - /* * Water reaction to a mob */ diff --git a/icons/obj/food/food.dmi b/icons/obj/food/food.dmi index 6213ecdfa7ae0b37c214533b47872dc563df47b6..20fcc6a245039b71557cef802140ddefe63a2f38 100644 GIT binary patch literal 44836 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%0D~%&&uvBlu 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 aLFaq>`)jD@?n?mjqa>#;TO(~A^1lEgQ>Tsq literal 44786 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≠Eg~<4$>iL6v+4^8VK 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 From 18e1c7825d5349a384c3897bfd201cee9cfdd03e Mon Sep 17 00:00:00 2001 From: TechnoAlchemist Date: Mon, 25 Apr 2016 19:40:51 -0700 Subject: [PATCH 159/265] bigger --- code/game/objects/items/weapons/storage/belt.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index 70c9d7905b2..1cf063e31a2 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -125,6 +125,7 @@ icon_state = "ebelt" //I'm doing this because I love you, syndicate son. item_state = "ebelt" storage_slots = 5 + w_class = 4 max_w_class = 4 //Pickaxes are big. can_hold = list( /obj/item/weapon/crowbar, From f84b00441ac7ae0a04b65d2ed3c386e1ae38e360 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Tue, 26 Apr 2016 03:35:45 +0000 Subject: [PATCH 160/265] Automatic changelog generation for PR #17101 --- html/changelogs/AutoChangeLog-pr-17101.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-17101.yml diff --git a/html/changelogs/AutoChangeLog-pr-17101.yml b/html/changelogs/AutoChangeLog-pr-17101.yml new file mode 100644 index 00000000000..b747e7cc3af --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-17101.yml @@ -0,0 +1,4 @@ +author: TechnoAlchemisto +delete-after: True +changes: + - tweak: "Goliath plates can now be stacked." From 930f49589d411bb1af99493a1d414cc9d145fc6f Mon Sep 17 00:00:00 2001 From: TechnoAlchemist Date: Mon, 25 Apr 2016 21:01:31 -0700 Subject: [PATCH 161/265] nerfs bracers :( --- code/modules/clothing/gloves/miscellaneous.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index 1a261f16d4a..6cf66684ab9 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -51,5 +51,5 @@ min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT burn_state = FIRE_PROOF - armor = list(melee = 60, bullet = 35, laser = 35, energy = 20, bomb = 35, bio = 35, rad = 35) //Not like anything ever hits the arms anyways. + armor = list(melee = 15, bullet = 35, laser = 35, energy = 20, bomb = 35, bio = 35, rad = 35) //Not like anything ever hits the arms anyways. From 0aa0c39d9bc19ccdde69334d442859cec3598d3e Mon Sep 17 00:00:00 2001 From: sybil-tgstation13 Date: Tue, 26 Apr 2016 04:07:49 +0000 Subject: [PATCH 162/265] Automatic changelog compile --- html/changelog.html | 4 ++++ html/changelogs/.all_changelog.yml | 2 ++ html/changelogs/AutoChangeLog-pr-17101.yml | 4 ---- 3 files changed, 6 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-17101.yml diff --git a/html/changelog.html b/html/changelog.html index 2dd16a891d2..d9b0177b8df 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -63,6 +63,10 @@
    • Blobbernauts now cost 40 resources to produce, from 30.
    • Factories supporting blobbernauts do not spawn spores.
    +

    TechnoAlchemisto updated:

    +
      +
    • Goliath plates can now be stacked.
    • +

    25 April 2016

    Joan updated:

    diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 822c5f31361..78ff59445de 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -4641,3 +4641,5 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - tweak: Blobbernauts regeneration on blob is now 2.5 health per tick, from 5. - tweak: Blobbernauts now cost 40 resources to produce, from 30. - rscdel: Factories supporting blobbernauts do not spawn spores. + TechnoAlchemisto: + - tweak: Goliath plates can now be stacked. diff --git a/html/changelogs/AutoChangeLog-pr-17101.yml b/html/changelogs/AutoChangeLog-pr-17101.yml deleted file mode 100644 index b747e7cc3af..00000000000 --- a/html/changelogs/AutoChangeLog-pr-17101.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: TechnoAlchemisto -delete-after: True -changes: - - tweak: "Goliath plates can now be stacked." From 0f0aa25976144682d38cbe982c210480435cba6a Mon Sep 17 00:00:00 2001 From: duncathan salt Date: Mon, 25 Apr 2016 23:44:06 -0600 Subject: [PATCH 163/265] fixes watcher sinew origin tech --- code/game/objects/items/stacks/sheets/leather.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/stacks/sheets/leather.dm b/code/game/objects/items/stacks/sheets/leather.dm index 099ddd5bc78..e4f86b5ce89 100644 --- a/code/game/objects/items/stacks/sheets/leather.dm +++ b/code/game/objects/items/stacks/sheets/leather.dm @@ -133,7 +133,7 @@ var/global/list/datum/stack_recipe/xeno_recipes = list ( \ desc = "Long stringy filaments which presumably came from a watcher's wings." singular_name = "watcher sinew" icon_state = "sinew" - origin_tech = "bio=4" + origin_tech = "biotech=4" /* * Plates From 62688574bc7550da4ca07f8b7f372fb8f33cb742 Mon Sep 17 00:00:00 2001 From: duncathan salt Date: Tue, 26 Apr 2016 01:05:15 -0600 Subject: [PATCH 164/265] processor overload requires 20 players --- code/modules/events/processor_overload.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/modules/events/processor_overload.dm b/code/modules/events/processor_overload.dm index 9ad23fd69ae..5214d9fea37 100644 --- a/code/modules/events/processor_overload.dm +++ b/code/modules/events/processor_overload.dm @@ -2,16 +2,17 @@ name = "Processor Overload" typepath = /datum/round_event/processor_overload weight = 15 + min_players = 20 /datum/round_event/processor_overload announceWhen = 1 /datum/round_event/processor_overload/announce() var/alert = pick( "Exospheric bubble inbound. Processor overload is likely. Please contact you*%xp25)`6cq-BZZT", \ - "Exospheric bubble inbound. Processor overload is likel*1eta;c5;'1v¬-BZZZT", \ + "Exospheric bubble inbound. Processor overload is likel*1eta;c5;'1v¬-BZZZT", \ "Exospheric bubble inbound. Processor ov#MCi46:5.;@63-BZZZZT", \ "Exospheric bubble inbo'Fz\\k55_@-BZZZZZT", \ - "Exospheri:%£ QCbyj^j Date: Tue, 26 Apr 2016 01:43:48 -0700 Subject: [PATCH 165/265] Adds a download link. --- code/modules/client/client procs.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index 9b2151039a4..0abe489df35 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -145,6 +145,7 @@ var/next_external_rsc = 0 src << config.client_error_message src << "Your version: [byond_version]" src << "Required version: [config.client_error_version] or later" + src << "Visit http://www.byond.com/download/ to get the latest version of byond." if (holder) src << "Because you are an admin, you are being allowed to walk past this limitation, But it is still STRONGLY suggested you upgrade" else @@ -155,6 +156,7 @@ var/next_external_rsc = 0 src << config.client_warn_message src << "Your version: [byond_version]" src << "Required version to remove this message: [config.client_warn_version] or later" + src << "Visit http://www.byond.com/download/ to get the latest version of byond." if (connection == "web") if (!config.allowwebclient) From dadae277cbbf43c2c5dd3ae0a3887f4f5c244fd3 Mon Sep 17 00:00:00 2001 From: Zuvassin Date: Tue, 26 Apr 2016 18:55:31 +1000 Subject: [PATCH 166/265] Adds champion armour to necro chests --- .../clothing/spacesuits/miscellaneous.dm | 13 +++++++++++++ .../mining/lavaland/necropolis_chests.dm | 3 ++- icons/mob/head.dmi | Bin 143251 -> 143601 bytes icons/mob/suit.dmi | Bin 291711 -> 294139 bytes icons/obj/clothing/hats.dmi | Bin 68694 -> 68915 bytes icons/obj/clothing/suits.dmi | Bin 95473 -> 96224 bytes 6 files changed, 15 insertions(+), 1 deletion(-) diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index d03d7e169b5..48188b2764d 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -312,3 +312,16 @@ Contains: name = "inquisitor's helmet" icon_state = "hardsuit0-inq" item_state = "hardsuit0-inq" + +/obj/item/clothing/suit/space/hardsuit/ert/paranormal/beserker + name = "champion's hardsuit" + desc = "Voices echo from the hardsuit, driving the user insane." + icon_state = "hardsuit-beserker" + item_state = "hardsuit-beserker" + helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal/beserker + +/obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal/beserker + name = "champion's helmet" + desc = "Peering into the eyes of the helmet is enough to seal damnation." + icon_state = "hardsuit0-beserker" + item_state = "hardsuit0-beserker" diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index a6fabeb90dc..b0b3ab28b58 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -38,7 +38,7 @@ if(11) new /obj/vehicle/lavaboat/dragon(src) if(12) - new /obj/item/upgradescroll(src) + new /obj/item/clothing/suit/space/hardsuit/ert/paranormal/beserker(src) if(13) new /obj/item/weapon/sord(src) if(14) @@ -68,6 +68,7 @@ new /obj/item/weapon/spellbook/oneuse/smoke(src) + //Spooky special loot /obj/item/device/wisp_lantern diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index c5de161057880b5fc72610903cb4e6c50b0a34a8..c434ad6a378b96032e02ed4a4cced2bc05b9ec15 100644 GIT binary patch delta 8803 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 wsYqi*np}2J@n$3(Cy0=}%m!W3vkcA|$$&JamW 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 Z6$Ki8oECMmrAgE2K6rS);-15+{{lTzX9NHM diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index 77a3ec6f9edd757b3744e46ee695672b045d0e75..11f55cbc902e04bba4572b6af87e94417d8a37e6 100644 GIT binary patch delta 15111 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 OYAOnv@@2B-Z~qsCBJfE7 delta 12664 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 z

    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 b<0Z%0FKFX?J2AHhK%eId8uDeb=7IkQpP3-p delta 11233 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 YC)a`qH$hE42Egm7iYBZ=*&^is04|G;+5i9m delta 21629 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

    GwK)&_{skW;M$mWLw{+s${zcIe&D7ue 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 MRJ*TQq-^2)9|R3`(f|Me From deef8525162a8230c0d44709a7bdf1511c40269c Mon Sep 17 00:00:00 2001 From: bawhoppen Date: Tue, 26 Apr 2016 05:06:01 -0500 Subject: [PATCH 167/265] phil's suggestion --- code/modules/mining/mine_items.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index 1583c48ae60..14ef7f79654 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -448,3 +448,4 @@ qdel(W) qdel(src) return + else return ..() From 9b1512e0b1a50ce55b7f38764517de2aa293558b Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Tue, 26 Apr 2016 10:13:10 +0000 Subject: [PATCH 168/265] Automatic changelog generation for PR #16732 --- html/changelogs/AutoChangeLog-pr-16732.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-16732.yml diff --git a/html/changelogs/AutoChangeLog-pr-16732.yml b/html/changelogs/AutoChangeLog-pr-16732.yml new file mode 100644 index 00000000000..6f9aae5797a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-16732.yml @@ -0,0 +1,5 @@ +author: Iamgoofball & Super Aggro Crag +delete-after: True +changes: + - tweak: "Fluorosulfuric Acid now has doubled acid power." + - experiment: "Fluorosulfuric Acid now does BONUS burn damage scaling on the time it's been inside the consumer." From 534d970567aded572f8c5f9bb74b1d6379d82554 Mon Sep 17 00:00:00 2001 From: Razharas Date: Tue, 26 Apr 2016 15:34:49 +0300 Subject: [PATCH 169/265] Fixes drone or any other boh in boh abuse Fixes drone or any other boh in boh abuse --- code/game/objects/items/weapons/storage/backpack.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index 46ccead351f..5bae7ddf7ee 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -71,7 +71,7 @@ return 0 /obj/item/weapon/storage/backpack/holding/handle_item_insertion(obj/item/W, prevent_warning = 0, mob/user) - if(istype(W, /obj/item/weapon/storage/backpack/holding) && !W.crit_fail) + if((istype(W, /obj/item/weapon/storage/backpack/holding) || count_by_type(GetAllContents(W), /obj/item/weapon/storage/backpack/holding)) && !W.crit_fail) var/safety = alert(user, "Doing this will have extremely dire consequences for the station and its crew. Be sure you know what you're doing.", "Put in [name]?", "Proceed", "Abort") if(safety == "Abort" || !in_range(src, user) || !src || !W || user.incapacitated()) return From fe0f4e2ad069be5d5b03593e8377f95cc3c90b65 Mon Sep 17 00:00:00 2001 From: Nerd Lord Date: Tue, 26 Apr 2016 11:22:22 -0400 Subject: [PATCH 170/265] Charger holoparasites now shake the target's camera --- .../mob/living/simple_animal/guardian/types/charger.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/guardian/types/charger.dm b/code/modules/mob/living/simple_animal/guardian/types/charger.dm index 43ad31d865c..f2903408299 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/charger.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/charger.dm @@ -57,7 +57,7 @@ blocked = 1 if(ishuman(A)) var/mob/living/carbon/human/H = A - if(H.check_shields(90, "the [name]", src, attack_type = THROWN_PROJECTILE_ATTACK)) + if(H.check_shields(90, "[name]", src, attack_type = THROWN_PROJECTILE_ATTACK)) blocked = 1 if(!blocked) @@ -65,6 +65,9 @@ L.drop_l_hand() L.visible_message("[src] slams into [L]!", "[src] slams into you!") L.apply_damage(20, BRUTE) + playsound(get_turf(L), 'sound/effects/meteorimpact.ogg', 100, 1) + shake_camera(L, 4, 3) + shake_camera(src, 2, 3) charging = 0 From 02b29f888a5956ded459f19a67300b7d9cf0204b Mon Sep 17 00:00:00 2001 From: erwgd Date: Tue, 26 Apr 2016 18:41:21 +0100 Subject: [PATCH 171/265] Prevents collapsing roller beds or grabbing chairs whilst incapacitated (#17074) * added if(usr.incapacitated) for grabbing a chair * added if(usr.incapacitated()) for collapsing a roller bed --- code/game/objects/structures/beds_chairs/bed.dm | 3 +++ code/game/objects/structures/beds_chairs/chair.dm | 3 +++ 2 files changed, 6 insertions(+) diff --git a/code/game/objects/structures/beds_chairs/bed.dm b/code/game/objects/structures/beds_chairs/bed.dm index fc16964286d..0488755e685 100644 --- a/code/game/objects/structures/beds_chairs/bed.dm +++ b/code/game/objects/structures/beds_chairs/bed.dm @@ -69,6 +69,9 @@ return 0 if(buckled_mobs.len) return 0 + if(usr.incapacitated()) + usr << "You can't do that right now!" + return 0 usr.visible_message("[usr] collapses \the [src.name].", "You collapse \the [src.name].") new foldabletype(get_turf(src)) qdel(src) diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm index 82218cdbd37..9950aa178c0 100644 --- a/code/game/objects/structures/beds_chairs/chair.dm +++ b/code/game/objects/structures/beds_chairs/chair.dm @@ -214,6 +214,9 @@ if(over_object == usr && Adjacent(usr)) if(!item_chair || !ishuman(usr) || buckled_mobs.len || src.flags & NODECONSTRUCT) return + if(usr.incapacitated()) + usr << "You can't do that right now!" + return usr.visible_message("[usr] grabs \the [src.name].", "You grab \the [src.name].") var/C = new item_chair(loc) usr.put_in_hands(C) From de5a21413231b78389e0387c2564fa074041e199 Mon Sep 17 00:00:00 2001 From: kevinz000 Date: Tue, 26 Apr 2016 10:49:11 -0700 Subject: [PATCH 172/265] Fixes detection multitool (#17011) * detectionfix * unnessacary_things_removal * Uranges --- code/game/objects/items/devices/multitool.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm index 2ec98bab769..bc65f1a0f12 100644 --- a/code/game/objects/items/devices/multitool.dm +++ b/code/game/objects/items/devices/multitool.dm @@ -31,7 +31,6 @@ var/track_cooldown = 0 var/track_delay = 10 //How often it checks for proximity var/detect_state = PROXIMITY_NONE - var/turf/our_turf var/rangealert = 8 //Glows red when inside var/rangewarning = 20 //Glows yellow when inside @@ -47,12 +46,12 @@ if(track_cooldown > world.time) return detect_state = PROXIMITY_NONE - our_turf = get_turf(src) multitool_detect() icon_state = "[initial(icon_state)][detect_state]" - track_cooldown = world.time + track_delay // 1 second + track_cooldown = world.time + track_delay /obj/item/device/multitool/ai_detect/proc/multitool_detect() + var/turf/our_turf = get_turf(src) for(var/mob/living/silicon/ai/AI in ai_list) if(AI.cameraFollow == src) detect_state = PROXIMITY_ON_SCREEN @@ -76,7 +75,8 @@ track_delay = 5 /obj/item/device/multitool/ai_detect/admin/multitool_detect() - for(var/mob/J in range(rangewarning,src)) + var/turf/our_turf = get_turf(src) + for(var/mob/J in urange(rangewarning,our_turf)) if(admin_datums[J.ckey]) detect_state = PROXIMITY_NEAR var/turf/detect_turf = get_turf(J) From b7da04e8c89b3f06ab10faee1441b47f97df3254 Mon Sep 17 00:00:00 2001 From: phil235 Date: Tue, 26 Apr 2016 21:43:11 +0200 Subject: [PATCH 173/265] You can now use your PDA on the emergency shuttle console. --- code/modules/shuttle/emergency.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm index 1a12c3eb759..987cb75af14 100644 --- a/code/modules/shuttle/emergency.dm +++ b/code/modules/shuttle/emergency.dm @@ -8,8 +8,8 @@ /obj/machinery/computer/emergency_shuttle/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/weapon/card/id)) - var/obj/item/weapon/card/id/ID = I + var/obj/item/weapon/card/id/ID = I.GetID() + if(ID) if(stat & (BROKEN|NOPOWER)) return if(SSshuttle.emergency.mode != SHUTTLE_DOCKED) From da570054fe8a7839b62dc25670478b1e425c5375 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Tue, 26 Apr 2016 20:00:45 +0000 Subject: [PATCH 174/265] Automatic changelog generation for PR #17092 --- html/changelogs/AutoChangeLog-pr-17092.yml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-17092.yml diff --git a/html/changelogs/AutoChangeLog-pr-17092.yml b/html/changelogs/AutoChangeLog-pr-17092.yml new file mode 100644 index 00000000000..802054d39c6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-17092.yml @@ -0,0 +1,9 @@ +author: phil235 +delete-after: True +changes: + - rscadd: "More structures and machines are now breakable and/or destroyable with melee weapon. Additionally, Some structures and machines that are already breakable/destroyable are now affected by more attack methods (gun projectiles, thrown items, melee weapons, xeno/animal attacks, explosions)." + - rscadd: "Hitting any machine now always makes a sound." + - rscadd: "You can hit closed closets/crates and doors by using an item on harm intent (but it doesn't actually hurt them)." + - rscadd: "you can now burst filled water balloons with sharp items." + - bugfix: "Wooden barricade drops wood when destroyed." + - bugfix: "Slot machines with coins inside are deconstructable now." From 5b19023f249054219fdc6ca68b8ae7ae87bef032 Mon Sep 17 00:00:00 2001 From: TechnoAlchemist Date: Tue, 26 Apr 2016 13:35:00 -0700 Subject: [PATCH 175/265] adds skull helmet. --- code/modules/clothing/head/helmet.dm | 10 ++++++++++ code/modules/crafting/recipes.dm | 7 +++++++ icons/mob/head.dmi | Bin 143601 -> 144295 bytes icons/obj/clothing/hats.dmi | Bin 68915 -> 69446 bytes 4 files changed, 17 insertions(+) diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index 9a2da325ac4..0de25cc3366 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -203,6 +203,16 @@ icon_state = "knight_templar" item_state = "knight_templar" +/obj/item/clothing/head/helmet/skull + name = "skull helmet" + desc = "An intimidating tribal helmet, it doesn't look very comfortable." + flags_inv = HIDEEARS|HIDEHAIR + flags_cover = HEADCOVERSEYES + armor = list(melee = 25, bullet = 25, laser = 25, energy = 10, bomb = 10, bio = 5, rad = 20) + icon_state = "skull" + item_state = "skull" + strip_delay = 100 + //LightToggle /obj/item/clothing/head/helmet/update_icon() diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index a2b1e4a81e7..e1422fed664 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -373,4 +373,11 @@ time = 20 reqs = list(/obj/item/stack/sheet/bone = 2, /obj/item/stack/sheet/sinew = 1) + category = CAT_MISC + +/datum/table_recipe/skullhelm + name = "Skull Helmet" + result = /obj/item/clothing/head/helmet/skull + time = 30 + reqs = list(/obj/item/stack/sheet/bone = 4) category = CAT_MISC \ No newline at end of file diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index c434ad6a378b96032e02ed4a4cced2bc05b9ec15..7a45a41000ef314ef4842e66dc261218699985a5 100644 GIT binary patch delta 9861 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 B%eepm delta 9161 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 Date: Tue, 26 Apr 2016 13:49:35 -0700 Subject: [PATCH 176/265] Var stuff --- code/game/machinery/machinery.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index c5b5df6e648..b5c35f5fa12 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -157,7 +157,7 @@ Class Procs: PoolOrNew(/obj/effect/overlay/temp/emp, loc) ..() -/obj/machinery/proc/open_machine(var/drop = 1) +/obj/machinery/proc/open_machine(drop = 1) state_open = 1 density = 0 if(drop) From 926e351fee8120c37e2d5a52d9a227e65ac1e81e Mon Sep 17 00:00:00 2001 From: TechnoAlchemist Date: Tue, 26 Apr 2016 14:10:42 -0700 Subject: [PATCH 177/265] adds sinew restraints, changes sinew droprate. --- .../objects/items/stacks/sheets/leather.dm | 8 ++++++++ code/game/objects/items/weapons/handcuffs.dm | 8 ++++++++ .../simple_animal/hostile/mining_mobs.dm | 2 +- icons/obj/items.dmi | Bin 59624 -> 60180 bytes 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/stacks/sheets/leather.dm b/code/game/objects/items/stacks/sheets/leather.dm index 9f43e348474..537b1646462 100644 --- a/code/game/objects/items/stacks/sheets/leather.dm +++ b/code/game/objects/items/stacks/sheets/leather.dm @@ -135,6 +135,14 @@ var/global/list/datum/stack_recipe/xeno_recipes = list ( \ icon_state = "sinew" origin_tech = "biotech=4" + +var/global/list/datum/stack_recipe/sinew_recipes = list ( \ + new/datum/stack_recipe("sinew restraints", /obj/item/weapon/restraints/handcuffs/sinew, 1, on_floor = 1), \ + ) + +/obj/item/stack/sheet/sinew/New(var/loc, var/amount=null) + recipes = sinew_recipes + return ..() /* * Plates */ diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index aa0f83182a8..6ccf6f3b0b0 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -67,6 +67,14 @@ qdel(src) return +/obj/item/weapon/restraints/handcuffs/sinew + name = "sinew restraints" + desc = "A pair of restraints fashioned from long strands of flesh." + icon_state = "sinewcuff" + item_state = "sinewcuff" + breakouttime = 300 //Deciseconds = 30s + cuffsound = 'sound/weapons/cablecuff.ogg' + /obj/item/weapon/restraints/handcuffs/cable name = "cable restraints" desc = "Looks like some cables tied together. Could be used to tie something up." diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm index a7186efb514..82c1949e81d 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm @@ -635,7 +635,7 @@ stat_attack = 1 robust_searching = 1 loot = list() - butcher_results = list(/obj/item/weapon/ore/diamond = 2, /obj/item/stack/sheet/sinew = 1, /obj/item/stack/sheet/bone = 1) + butcher_results = list(/obj/item/weapon/ore/diamond = 2, /obj/item/stack/sheet/sinew = 2, /obj/item/stack/sheet/bone = 1) //Goliath diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index 6f50b46333ff05aa094fe80c3a9e57e5d9f19cd5..c7a796bf35d3c96211cfedec3f5ff902599c79a6 100644 GIT binary patch delta 21796 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 Q5f1P$GqN%yA-%Bw1J|ExJ^%m! From 12f9d205e8a513aa97f3f7385bf5d996289a0dad Mon Sep 17 00:00:00 2001 From: LatD Date: Wed, 27 Apr 2016 00:28:01 +0300 Subject: [PATCH 178/265] Syndicate bomb delay wire changed to one time use (#16790) * Syndicate bomb delay wire * Fixes delay wires * Add bomb delay variables * Forgot to remove unused var * Small fix --- code/datums/wires/syndicatebomb.dm | 17 ++++++++++++----- code/game/machinery/syndicatebomb.dm | 4 ++++ 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/code/datums/wires/syndicatebomb.dm b/code/datums/wires/syndicatebomb.dm index a9ad735a92c..570e45ba7af 100644 --- a/code/datums/wires/syndicatebomb.dm +++ b/code/datums/wires/syndicatebomb.dm @@ -24,9 +24,13 @@ if(WIRE_UNBOLT) holder.visible_message("\icon[B] The bolts spin in place for a moment.") if(WIRE_DELAY) - holder.visible_message("\icon[B] The bomb chirps.") - playsound(B, 'sound/machines/chime.ogg', 30, 1) - B.timer += 10 + if(B.delayedbig) + holder.visible_message("\icon[B] The bomb has already been delayed.") + else + holder.visible_message("\icon[B] The bomb chirps.") + playsound(B, 'sound/machines/chime.ogg', 30, 1) + B.timer += 30 + B.delayedbig = TRUE if(WIRE_PROCEED) holder.visible_message("\icon[B] The bomb buzzes ominously!") playsound(B, 'sound/machines/buzz-sigh.ogg', 30, 1) @@ -42,9 +46,12 @@ playsound(B, 'sound/machines/click.ogg', 30, 1) B.active = TRUE B.update_icon() + else if(B.delayedlittle) + holder.visible_message("\icon[B] Nothing happens.") else holder.visible_message("\icon[B] The bomb seems to hesitate for a moment.") - B.timer += 5 + B.timer += 10 + B.delayedlittle = TRUE /datum/wires/syndicatebomb/on_cut(wire, mend) var/obj/machinery/syndicatebomb/B = holder @@ -72,4 +79,4 @@ holder.visible_message("\icon[B] The timer stops! The bomb has been defused!") B.active = FALSE B.defused = TRUE - B.update_icon() \ No newline at end of file + B.update_icon() diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index 3e843a10ad0..23a44cd1be5 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -16,6 +16,8 @@ var/defused = FALSE //is the bomb capable of exploding? var/obj/item/weapon/bombcore/payload = /obj/item/weapon/bombcore var/beepsound = 'sound/items/timer.ogg' + var/delayedbig = FALSE //delay wire pulsed? + var/delayedlittle = FALSE //activation wire pulsed? /obj/machinery/syndicatebomb/process() if(active && !defused && (timer > 0)) //Tick Tock @@ -250,6 +252,8 @@ holder.wires.shuffle_wires() holder.defused = 0 holder.open_panel = 0 + holder.delayedbig = FALSE + holder.delayedlittle = FALSE holder.update_icon() holder.updateDialog() From 48a23c6c7feacd51448ada313b267065d82c73e4 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Tue, 26 Apr 2016 21:28:03 +0000 Subject: [PATCH 179/265] Automatic changelog generation for PR #16790 --- html/changelogs/AutoChangeLog-pr-16790.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-16790.yml diff --git a/html/changelogs/AutoChangeLog-pr-16790.yml b/html/changelogs/AutoChangeLog-pr-16790.yml new file mode 100644 index 00000000000..ef65cc526db --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-16790.yml @@ -0,0 +1,4 @@ +author: Lati +delete-after: True +changes: + - tweak: "Syndicate bomb can be only delayed once by pulsing the delay wire. Time gained from this is changed from 10 seconds to 30 seconds." From dc730e9b5bd634efa4bc317526b96a7508f48801 Mon Sep 17 00:00:00 2001 From: phil235 Date: Wed, 27 Apr 2016 01:00:39 +0200 Subject: [PATCH 180/265] Fixes typo making the destructive analyzer always be busy. --- code/modules/research/destructive_analyzer.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm index 76a65f9015d..85a492092c5 100644 --- a/code/modules/research/destructive_analyzer.dm +++ b/code/modules/research/destructive_analyzer.dm @@ -55,4 +55,6 @@ Note: Must be placed within 3 tiles of the R&D Console O.loc = src user << "You add the [O.name] to the [src.name]!" flick("d_analyzer_la", src) + spawn(10) + busy = 0 From 0a8da62457b97ec7c730b8507998526a7a6a3e97 Mon Sep 17 00:00:00 2001 From: TechnoAlchemist Date: Tue, 26 Apr 2016 16:34:54 -0700 Subject: [PATCH 181/265] adds primal category to stop clutter in cat_misc. --- code/__DEFINES/tablecrafting.dm | 3 ++- code/modules/crafting/recipes.dm | 8 ++++---- code/modules/crafting/table.dm | 2 +- code/modules/mining/lavaland/necropolis_chests.dm | 4 ++-- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/code/__DEFINES/tablecrafting.dm b/code/__DEFINES/tablecrafting.dm index 4f10232baf6..cfe3f8cb388 100644 --- a/code/__DEFINES/tablecrafting.dm +++ b/code/__DEFINES/tablecrafting.dm @@ -4,4 +4,5 @@ #define CAT_AMMO "Ammunition" #define CAT_ROBOT "Robots" #define CAT_FOOD "Food" -#define CAT_MISC "Misc" \ No newline at end of file +#define CAT_MISC "Misc" +#define CAT_PRIMAL "Tribal" \ No newline at end of file diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index e1422fed664..6bb6ac9ab5d 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -357,7 +357,7 @@ result = /obj/item/clothing/suit/armor/bone time = 30 reqs = list(/obj/item/stack/sheet/bone = 6) - category = CAT_MISC + category = CAT_PRIMAL /datum/table_recipe/bonetalisman name = "Bone Talisman" @@ -365,7 +365,7 @@ time = 20 reqs = list(/obj/item/stack/sheet/bone = 2, /obj/item/stack/sheet/sinew = 1) - category = CAT_MISC + category = CAT_PRIMAL /datum/table_recipe/bracers name = "Bone Bracers" @@ -373,11 +373,11 @@ time = 20 reqs = list(/obj/item/stack/sheet/bone = 2, /obj/item/stack/sheet/sinew = 1) - category = CAT_MISC + category = CAT_PRIMAL /datum/table_recipe/skullhelm name = "Skull Helmet" result = /obj/item/clothing/head/helmet/skull time = 30 reqs = list(/obj/item/stack/sheet/bone = 4) - category = CAT_MISC \ No newline at end of file + category = CAT_PRIMAL \ No newline at end of file diff --git a/code/modules/crafting/table.dm b/code/modules/crafting/table.dm index 687cae5be3b..ec813ea7e80 100644 --- a/code/modules/crafting/table.dm +++ b/code/modules/crafting/table.dm @@ -3,7 +3,7 @@ mouse_drag_pointer = MOUSE_ACTIVE_POINTER var/list/table_contents = list() var/viewing_category = 1 //typical powergamer starting on the Weapons tab - var/list/categories = list(CAT_WEAPON,CAT_AMMO,CAT_ROBOT,CAT_FOOD,CAT_MISC) + var/list/categories = list(CAT_WEAPON,CAT_AMMO,CAT_ROBOT,CAT_FOOD,CAT_MISC,CAT_PRIMAL) /obj/structure/table/MouseDrop(mob/living/user) diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index b0b3ab28b58..6ac52843391 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -369,14 +369,14 @@ result = /obj/item/weapon/oar reqs = list(/obj/item/stack/sheet/bone = 2) time = 15 - category = CAT_MISC + category = CAT_PRIMAL /datum/table_recipe/boat name = "goliath hide boat" result = /obj/vehicle/lavaboat reqs = list(/obj/item/stack/sheet/animalhide/goliath_hide = 3) time = 50 - category = CAT_MISC + category = CAT_PRIMAL //Dragon Boat From ed23269f7b74eeddcfad96f99fc5a982960a0965 Mon Sep 17 00:00:00 2001 From: sybil-tgstation13 Date: Tue, 26 Apr 2016 23:39:28 +0000 Subject: [PATCH 182/265] Automatic changelog compile --- html/changelog.html | 18 ++++++++++++++++++ html/changelogs/.all_changelog.yml | 18 ++++++++++++++++++ html/changelogs/AutoChangeLog-pr-16732.yml | 5 ----- html/changelogs/AutoChangeLog-pr-16790.yml | 4 ---- html/changelogs/AutoChangeLog-pr-17092.yml | 9 --------- 5 files changed, 36 insertions(+), 18 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-16732.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-16790.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-17092.yml diff --git a/html/changelog.html b/html/changelog.html index d9b0177b8df..91e13a61e84 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,11 @@ -->

    26 April 2016

    +

    Iamgoofball & Super Aggro Crag updated:

    +
      +
    • Fluorosulfuric Acid now has doubled acid power.
    • +
    • Fluorosulfuric Acid now does BONUS burn damage scaling on the time it's been inside the consumer.
    • +

    Joan updated:

    • Blobbernauts now spawn at half health.
    • @@ -63,10 +68,23 @@
    • Blobbernauts now cost 40 resources to produce, from 30.
    • Factories supporting blobbernauts do not spawn spores.
    +

    Lati updated:

    +
      +
    • Syndicate bomb can be only delayed once by pulsing the delay wire. Time gained from this is changed from 10 seconds to 30 seconds.
    • +

    TechnoAlchemisto updated:

    • Goliath plates can now be stacked.
    +

    phil235 updated:

    +
      +
    • More structures and machines are now breakable and/or destroyable with melee weapon. Additionally, Some structures and machines that are already breakable/destroyable are now affected by more attack methods (gun projectiles, thrown items, melee weapons, xeno/animal attacks, explosions).
    • +
    • Hitting any machine now always makes a sound.
    • +
    • You can hit closed closets/crates and doors by using an item on harm intent (but it doesn't actually hurt them).
    • +
    • you can now burst filled water balloons with sharp items.
    • +
    • Wooden barricade drops wood when destroyed.
    • +
    • Slot machines with coins inside are deconstructable now.
    • +

    25 April 2016

    Joan updated:

    diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 78ff59445de..9a9ddcc0f08 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -4636,10 +4636,28 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - tweak: The description of the light replacer is now more informative. - rscadd: Clown mask appearance toggle now has an action button. 2016-04-26: + Iamgoofball & Super Aggro Crag: + - tweak: Fluorosulfuric Acid now has doubled acid power. + - experiment: Fluorosulfuric Acid now does BONUS burn damage scaling on the time + it's been inside the consumer. Joan: - tweak: Blobbernauts now spawn at half health. - tweak: Blobbernauts regeneration on blob is now 2.5 health per tick, from 5. - tweak: Blobbernauts now cost 40 resources to produce, from 30. - rscdel: Factories supporting blobbernauts do not spawn spores. + Lati: + - tweak: Syndicate bomb can be only delayed once by pulsing the delay wire. Time + gained from this is changed from 10 seconds to 30 seconds. TechnoAlchemisto: - tweak: Goliath plates can now be stacked. + phil235: + - rscadd: More structures and machines are now breakable and/or destroyable with + melee weapon. Additionally, Some structures and machines that are already breakable/destroyable + are now affected by more attack methods (gun projectiles, thrown items, melee + weapons, xeno/animal attacks, explosions). + - rscadd: Hitting any machine now always makes a sound. + - rscadd: You can hit closed closets/crates and doors by using an item on harm intent + (but it doesn't actually hurt them). + - rscadd: you can now burst filled water balloons with sharp items. + - bugfix: Wooden barricade drops wood when destroyed. + - bugfix: Slot machines with coins inside are deconstructable now. diff --git a/html/changelogs/AutoChangeLog-pr-16732.yml b/html/changelogs/AutoChangeLog-pr-16732.yml deleted file mode 100644 index 6f9aae5797a..00000000000 --- a/html/changelogs/AutoChangeLog-pr-16732.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: Iamgoofball & Super Aggro Crag -delete-after: True -changes: - - tweak: "Fluorosulfuric Acid now has doubled acid power." - - experiment: "Fluorosulfuric Acid now does BONUS burn damage scaling on the time it's been inside the consumer." diff --git a/html/changelogs/AutoChangeLog-pr-16790.yml b/html/changelogs/AutoChangeLog-pr-16790.yml deleted file mode 100644 index ef65cc526db..00000000000 --- a/html/changelogs/AutoChangeLog-pr-16790.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Lati -delete-after: True -changes: - - tweak: "Syndicate bomb can be only delayed once by pulsing the delay wire. Time gained from this is changed from 10 seconds to 30 seconds." diff --git a/html/changelogs/AutoChangeLog-pr-17092.yml b/html/changelogs/AutoChangeLog-pr-17092.yml deleted file mode 100644 index 802054d39c6..00000000000 --- a/html/changelogs/AutoChangeLog-pr-17092.yml +++ /dev/null @@ -1,9 +0,0 @@ -author: phil235 -delete-after: True -changes: - - rscadd: "More structures and machines are now breakable and/or destroyable with melee weapon. Additionally, Some structures and machines that are already breakable/destroyable are now affected by more attack methods (gun projectiles, thrown items, melee weapons, xeno/animal attacks, explosions)." - - rscadd: "Hitting any machine now always makes a sound." - - rscadd: "You can hit closed closets/crates and doors by using an item on harm intent (but it doesn't actually hurt them)." - - rscadd: "you can now burst filled water balloons with sharp items." - - bugfix: "Wooden barricade drops wood when destroyed." - - bugfix: "Slot machines with coins inside are deconstructable now." From 1192b48c973a0f907c299ef34a834ace5b127f77 Mon Sep 17 00:00:00 2001 From: PKPenguin321 Date: Tue, 26 Apr 2016 16:41:53 -0700 Subject: [PATCH 183/265] moves krav gloves off of warden and into his locker --- .../structures/crates_lockers/closets/secure/security.dm | 1 + code/modules/jobs/job_types/security.dm | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 502024a7c7b..2cb1eae867f 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -100,6 +100,7 @@ new /obj/item/weapon/storage/box/flashbangs(src) new /obj/item/weapon/storage/belt/security/full(src) new /obj/item/device/flashlight/seclite(src) + new /obj/item/clothing/gloves/color/black/krav_maga/sec(src) /obj/structure/closet/secure_closet/security name = "security officer's locker" diff --git a/code/modules/jobs/job_types/security.dm b/code/modules/jobs/job_types/security.dm index 7e0bab091c3..e62a8e155a2 100644 --- a/code/modules/jobs/job_types/security.dm +++ b/code/modules/jobs/job_types/security.dm @@ -98,7 +98,7 @@ Warden uniform = /obj/item/clothing/under/rank/warden shoes = /obj/item/clothing/shoes/jackboots suit = /obj/item/clothing/suit/armor/vest/warden - gloves = /obj/item/clothing/gloves/color/black/krav_maga/sec + gloves = /obj/item/clothing/gloves/color/black head = /obj/item/clothing/head/warden glasses = /obj/item/clothing/glasses/hud/security/sunglasses r_pocket = /obj/item/device/assembly/flash/handheld From d777d90eb2e97981d0d80923b2f949d17a0bc834 Mon Sep 17 00:00:00 2001 From: oranges Date: Wed, 27 Apr 2016 10:56:31 +1200 Subject: [PATCH 184/265] Give ceiling a second argument for multiples Cut my life into pieces This is my last resort, Suffocation, no breathing Don't give a fuck if I cut my arm bleeding This is my last resort, Props to MrStonedOne for pointing this out and also /vg/ station for the original implementation - 1d92fdc37 (commit hash in vg code) --- code/__HELPERS/maths.dm | 4 ++-- code/game/machinery/computer/telecrystalconsoles.dm | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/__HELPERS/maths.dm b/code/__HELPERS/maths.dm index 8e27b4e2acb..60bce0fa978 100644 --- a/code/__HELPERS/maths.dm +++ b/code/__HELPERS/maths.dm @@ -17,8 +17,8 @@ var/list/sqrtTable = list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, var/a = arccos(x / sqrt(x*x + y*y)) return y >= 0 ? a : -a -/proc/Ceiling(x) - return -round(-x) +/proc/Ceiling(x, y=1) + return -round(-x / y) * y #define Clamp(CLVALUE,CLMIN,CLMAX) ( max( (CLMIN), min((CLVALUE), (CLMAX)) ) ) diff --git a/code/game/machinery/computer/telecrystalconsoles.dm b/code/game/machinery/computer/telecrystalconsoles.dm index 67d4aebd8db..19b2364b032 100644 --- a/code/game/machinery/computer/telecrystalconsoles.dm +++ b/code/game/machinery/computer/telecrystalconsoles.dm @@ -145,7 +145,7 @@ var/list/possible_uplinker_IDs = list("Alfa","Bravo","Charlie","Delta","Echo","F ..() var/danger danger = joined_player_list.len - ticker.mode.syndicates.len - while(!IsMultiple(++danger,10))//Just round up to the nearest multiple of ten. + danger = Ceiling(danger, 10) scaleTC(danger) /obj/machinery/computer/telecrystals/boss/proc/scaleTC(amt)//Its own proc, since it'll probably need a lot of tweaks for balance, use a fancier algorhithm, etc. From 18d748e126d6489f4a0bfb37d9849a45b7935725 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Wed, 27 Apr 2016 01:06:49 +0000 Subject: [PATCH 185/265] Automatic changelog generation for PR #17119 --- html/changelogs/AutoChangeLog-pr-17119.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-17119.yml diff --git a/html/changelogs/AutoChangeLog-pr-17119.yml b/html/changelogs/AutoChangeLog-pr-17119.yml new file mode 100644 index 00000000000..1858d71ea48 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-17119.yml @@ -0,0 +1,4 @@ +author: TechnoAlchemisto +delete-after: True +changes: + - rscadd: "Miners can now select explorer belts from the mining vendor using their vouchers, or mining points." From 8a31634cab2a6dd9458c94d04f14c19b9a1a51cd Mon Sep 17 00:00:00 2001 From: c0 Date: Wed, 27 Apr 2016 06:34:11 +0300 Subject: [PATCH 186/265] Nerfs botany slippery-everything --- code/modules/hydroponics/grown.dm | 11 ++------- code/modules/hydroponics/growninedible.dm | 11 ++------- code/modules/hydroponics/plant_genes.dm | 27 +++++++++++++++++++---- code/modules/hydroponics/seeds.dm | 10 ++++----- 4 files changed, 32 insertions(+), 27 deletions(-) diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index 83e1edfe366..306633d56bc 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -129,15 +129,8 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/Crossed(atom/movable/AM) if(seed) - var/datum/plant_gene/trait/slip/S = seed.get_gene(/datum/plant_gene/trait/slip) - if(S && !ispath(trash, /obj/item/weapon/grown) && iscarbon(AM)) - var/mob/living/carbon/M = AM - var/stun = max(seed.potency * S.rate * 2, 1) - var/weaken = max(seed.potency * S.rate, 0.5) - if(M.slip(stun, weaken, src)) - for(var/datum/plant_gene/trait/T in seed.genes) - T.on_slip(src, M) - return 1 + for(var/datum/plant_gene/trait/T in seed.genes) + T.on_cross(src, AM) ..() diff --git a/code/modules/hydroponics/growninedible.dm b/code/modules/hydroponics/growninedible.dm index cd6cd6f6732..17de41308f2 100644 --- a/code/modules/hydroponics/growninedible.dm +++ b/code/modules/hydroponics/growninedible.dm @@ -50,15 +50,8 @@ /obj/item/weapon/grown/Crossed(atom/movable/AM) if(seed) - var/datum/plant_gene/trait/slip/S = seed.get_gene(/datum/plant_gene/trait/slip) - if(S && iscarbon(AM)) - var/mob/living/carbon/M = AM - var/stun = max(seed.potency * S.rate * 2, 1) - var/weaken = max(seed.potency * S.rate, 0.5) - if(M.slip(stun, weaken, src)) - for(var/datum/plant_gene/trait/T in seed.genes) - T.on_slip(src, M) - return 1 + for(var/datum/plant_gene/trait/T in seed.genes) + T.on_cross(src, AM) ..() diff --git a/code/modules/hydroponics/plant_genes.dm b/code/modules/hydroponics/plant_genes.dm index a4b6a92c36a..40f012af0d3 100644 --- a/code/modules/hydroponics/plant_genes.dm +++ b/code/modules/hydroponics/plant_genes.dm @@ -156,6 +156,8 @@ /datum/plant_gene/trait/proc/on_consume(obj/item/weapon/reagent_containers/food/snacks/grown/G, mob/living/carbon/target) return +/datum/plant_gene/trait/proc/on_cross(obj/item/weapon/reagent_containers/food/snacks/grown/G, atom/target) + return /datum/plant_gene/trait/proc/on_slip(obj/item/weapon/reagent_containers/food/snacks/grown/G, mob/living/carbon/target) return /datum/plant_gene/trait/proc/on_squash(obj/item/weapon/reagent_containers/food/snacks/grown/G, atom/target) @@ -177,11 +179,28 @@ /datum/plant_gene/trait/slip // Makes plant slippery, unless it has a grown-type trash. Then the trash gets slippery. // Applies other trait effects (teleporting, etc) to the target by on_slip. - // For code, see grown.dm name = "Slippery Skin" rate = 0.1 examine_line = "It has a very slippery skin." +/datum/plant_gene/trait/slip/on_cross(obj/item/weapon/reagent_containers/food/snacks/grown/G, atom/target) + if(iscarbon(target)) + var/obj/item/seeds/seed = G.seed + var/mob/living/carbon/M = target + + var/stun_len = seed.potency * rate + if(istype(G) && ispath(G.trash, /obj/item/weapon/grown)) + return + + if(!istype(G, /obj/item/weapon/grown/bananapeel) && (!G.reagents || !G.reagents.has_reagent("lube"))) + stun_len /= 3 + + var/stun = max(stun_len * 2, 1) + var/weaken = max(stun_len, 0.5) + + if(M.slip(stun, weaken, G)) + for(var/datum/plant_gene/trait/T in seed.genes) + T.on_slip(src, M) /datum/plant_gene/trait/cell_charge // Cell recharging trait. Charges all mob's power cells to (potency*rate)% mark when eaten. @@ -189,18 +208,18 @@ // Small (potency*rate*5) chance to shock squish or slip target for (potency*rate*5) damage. // Multiplies max charge by (rate*1000) when used in potato power cells. name = "Electrical Activity" - rate = 0.01 + rate = 0.2 origin_tech = list("powerstorage" = 4) /datum/plant_gene/trait/cell_charge/on_slip(obj/item/weapon/reagent_containers/food/snacks/grown/G, mob/living/carbon/C) - var/power = G.seed.potency*rate*5 + var/power = G.seed.potency*rate if(prob(power)) C.electrocute_act(round(power), G, 1, 1) /datum/plant_gene/trait/cell_charge/on_squash(obj/item/weapon/reagent_containers/food/snacks/grown/G, atom/target) if(iscarbon(target)) var/mob/living/carbon/C = target - var/power = G.seed.potency*rate*5 + var/power = G.seed.potency*rate if(prob(power)) C.electrocute_act(round(power), G, 1, 1) diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index a919c48406b..5eba54312e5 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -5,7 +5,7 @@ /obj/item/seeds icon = 'icons/obj/hydroponics/seeds.dmi' icon_state = "seed" // Unknown plant seed - these shouldn't exist in-game. - w_class = 1 // Pocketable. + w_class = 1 burn_state = FLAMMABLE var/plantname = "Plants" // Name of plant when planted. var/product // A type path. The thing that is created when the plant is harvested. @@ -15,10 +15,10 @@ var/icon_dead // Used to override dead icon (default is "[species]-dead"). You can use one dead icon for multiple closely related plants with it. var/icon_harvest // Used to override harvest icon (default is "[species]-harvest"). If null, plant will use [icon_grow][growthstages]. - var/lifespan = 25 // How long before the plant begins to take damage from age. - var/endurance = 15 // Amount of health the plant has. - var/maturation = 6 // Used to determine which sprite to switch to when growing. - var/production = 6 // Changes the amount of time needed for a plant to become harvestable. + var/lifespan = 25 // How long before the plant begins to take damage from age. + var/endurance = 15 // Amount of health the plant has. + var/maturation = 6 // Used to determine which sprite to switch to when growing. + var/production = 6 // Changes the amount of time needed for a plant to become harvestable. var/yield = 3 // Amount of growns created per harvest. If is -1, the plant/shroom/weed is never meant to be harvested. var/oneharvest = 0 // If a plant is cleared from the tray after harvesting, e.g. a carrot. var/potency = 10 // The 'power' of a plant. Generally effects the amount of reagent in a plant, also used in other ways. From cd4cd13fe0d2b92ae489a4077461d67485aae517 Mon Sep 17 00:00:00 2001 From: sybil-tgstation13 Date: Wed, 27 Apr 2016 04:23:30 +0000 Subject: [PATCH 187/265] Automatic changelog compile --- html/changelog.html | 21 ++++++--------------- html/changelogs/.all_changelog.yml | 4 ++++ html/changelogs/AutoChangeLog-pr-17119.yml | 4 ---- 3 files changed, 10 insertions(+), 19 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-17119.yml diff --git a/html/changelog.html b/html/changelog.html index 91e13a61e84..fa953c8023b 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -55,6 +55,12 @@ -->
    +

    27 April 2016

    +

    TechnoAlchemisto updated:

    +
      +
    • Miners can now select explorer belts from the mining vendor using their vouchers, or mining points.
    • +
    +

    26 April 2016

    Iamgoofball & Super Aggro Crag updated:

      @@ -522,21 +528,6 @@
      • Free Golems on Lavaland have been naming their newborn siblings with a wider range of geology terms
      - -

      30 March 2016

      -

      Coiax updated:

      -
        -
      • Geiger counters can now be stored in the suit storage of radiation suits
      • -
      -

      RemieRichards updated:

      -
        -
      • fixes shift-clicking action buttons not instantly resetting their location. (I'm only making a changelog for this because apparently barely noone even knows you can move the buttons, let alone reset them...)
      • -
      -

      TehZombehz updated:

      -
        -
      • Honey buns and honey nut bars are now craftable using honey.
      • -
      • Brewing mead now requires actual honey.
      • -
    GoonStation 13 Development Team diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 9a9ddcc0f08..b76de4de857 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -4661,3 +4661,7 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - rscadd: you can now burst filled water balloons with sharp items. - bugfix: Wooden barricade drops wood when destroyed. - bugfix: Slot machines with coins inside are deconstructable now. +2016-04-27: + TechnoAlchemisto: + - rscadd: Miners can now select explorer belts from the mining vendor using their + vouchers, or mining points. diff --git a/html/changelogs/AutoChangeLog-pr-17119.yml b/html/changelogs/AutoChangeLog-pr-17119.yml deleted file mode 100644 index 1858d71ea48..00000000000 --- a/html/changelogs/AutoChangeLog-pr-17119.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: TechnoAlchemisto -delete-after: True -changes: - - rscadd: "Miners can now select explorer belts from the mining vendor using their vouchers, or mining points." From 9e3f62bf09684636d1cbe35bde418e2036aa86d5 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Wed, 27 Apr 2016 04:56:36 +0000 Subject: [PATCH 188/265] Automatic changelog generation for PR #17147 --- html/changelogs/AutoChangeLog-pr-17147.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-17147.yml diff --git a/html/changelogs/AutoChangeLog-pr-17147.yml b/html/changelogs/AutoChangeLog-pr-17147.yml new file mode 100644 index 00000000000..ded81fe963c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-17147.yml @@ -0,0 +1,4 @@ +author: TechnoAlchemisto +delete-after: True +changes: + - rscadd: "You can now craft skull helmets from bones." From 02beeeda6d31ecb3f60937f825c3ab37383cc422 Mon Sep 17 00:00:00 2001 From: bawhoppen Date: Wed, 27 Apr 2016 03:02:00 -0500 Subject: [PATCH 189/265] reeeeeeee --- code/modules/uplink/uplink_item.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/uplink/uplink_item.dm b/code/modules/uplink/uplink_item.dm index b243e48e9e4..2374af37bca 100644 --- a/code/modules/uplink/uplink_item.dm +++ b/code/modules/uplink/uplink_item.dm @@ -139,7 +139,7 @@ var/list/uplink_items = list() // Global list so we only initialize this once. desc = "A small, easily concealable handgun that uses 10mm auto rounds in 8-round magazines and is compatible \ with suppressors." item = /obj/item/weapon/gun/projectile/automatic/pistol - cost = 5 + cost = 7 /datum/uplink_item/dangerous/revolver name = "Syndicate Revolver" From fa7158e860711a9b9efb6a77d4c8c187932397ee Mon Sep 17 00:00:00 2001 From: bawhoppen Date: Wed, 27 Apr 2016 04:35:59 -0500 Subject: [PATCH 190/265] fixed it --- code/modules/mining/mine_items.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index 14ef7f79654..fdd3e6092ac 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -440,7 +440,7 @@ w_class = 1 /obj/item/weapon/emptysandbag/attackby(obj/item/W, mob/user, params) - if(istype(W,/obj/item/weapon/ore/glass || /obj/item/weapon/ore/glass/basalt)) + if(istype(W,/obj/item/weapon/ore/glass)) user << "You fill the sandbag." var/obj/item/stack/sheet/mineral/sandbags/I = new /obj/item/stack/sheet/mineral/sandbags user.unEquip(src) From f4f09704ebb7223dcb26f93ea1de04fb08942063 Mon Sep 17 00:00:00 2001 From: phil235 Date: Wed, 27 Apr 2016 13:03:19 +0200 Subject: [PATCH 191/265] fixes not being able to pour reagents in circuit imprinter/protolathe --- code/modules/research/rdmachines.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/modules/research/rdmachines.dm b/code/modules/research/rdmachines.dm index 7fb6e811822..847df5d329d 100644 --- a/code/modules/research/rdmachines.dm +++ b/code/modules/research/rdmachines.dm @@ -60,6 +60,8 @@ return if(default_deconstruction_crowbar(O)) return + if((flags & OPENCONTAINER) && O.is_open_container()) + return 0 //inserting reagents into the machine if(Insert_Item(O, user)) return 1 else @@ -98,4 +100,4 @@ /obj/machinery/r_n_d/deconstruction() if(loaded_item) loaded_item.loc = loc - ..() \ No newline at end of file + ..() From 9657f328ec3279935cb61de60a15f0c1a461794a Mon Sep 17 00:00:00 2001 From: phil235 Date: Wed, 27 Apr 2016 13:04:05 +0200 Subject: [PATCH 192/265] Fixes Reagent insertion in RnD machines --- code/modules/research/circuitprinter.dm | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm index 86a65b89bbf..0f6cb9cb2a3 100644 --- a/code/modules/research/circuitprinter.dm +++ b/code/modules/research/circuitprinter.dm @@ -91,9 +91,6 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis). /obj/machinery/r_n_d/circuit_imprinter/Insert_Item(obj/item/O, mob/user) - if (O.is_open_container()) //inserting reagents into the machine - return 1 - if (istype(O, /obj/item/stack/sheet/glass) || istype(O, /obj/item/stack/sheet/mineral/gold) || istype(O, /obj/item/stack/sheet/mineral/diamond)) . = 1 if(!is_insertion_ready(user)) @@ -125,4 +122,4 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis). else if(user.a_intent != "harm") user << "You cannot insert this item into the [name]!" else - return 0 \ No newline at end of file + return 0 From 33d84ef73f6f0a8f8a07a0640c49acbb71e58258 Mon Sep 17 00:00:00 2001 From: phil235 Date: Wed, 27 Apr 2016 13:05:13 +0200 Subject: [PATCH 193/265] Fixes inserting reagents in RnD machines --- code/modules/research/protolathe.dm | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm index 428ee5947a4..e704dd823ae 100644 --- a/code/modules/research/protolathe.dm +++ b/code/modules/research/protolathe.dm @@ -81,9 +81,6 @@ Note: Must be placed west/left of and R&D console to function. /obj/machinery/r_n_d/protolathe/Insert_Item(obj/item/O, mob/user) - if(O.is_open_container()) //inserting reagents into the machine - return 1 - if(istype(O,/obj/item/stack/sheet)) . = 1 if(!is_insertion_ready(user)) @@ -113,4 +110,4 @@ Note: Must be placed west/left of and R&D console to function. else if(user.a_intent != "harm") user << "You cannot insert this item into the [name]!" else - return 0 \ No newline at end of file + return 0 From f1e840fd1caddd0c413f63c76b2be17455700440 Mon Sep 17 00:00:00 2001 From: Incoming Date: Wed, 27 Apr 2016 10:37:20 -0400 Subject: [PATCH 194/265] Shuffles a line that could have potentially been delayed from running by rapid catting. The delay of reading said line might have allowed "deploy_the_cats" to fire more than once. --- code/modules/mob/living/simple_animal/friendly/cat.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 6e9cef8a147..06f6c04fbbf 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -125,11 +125,11 @@ memory_saved = 1 /mob/living/simple_animal/pet/cat/Runtime/proc/Deploy_The_Cats() + cats_deployed = 1 for(var/cat_type in family) if(family[cat_type] > 0) for(var/i in 1 to min(family[cat_type],100)) //Limits to about 500 cats, you wouldn't think this would be needed (BUT IT IS) new cat_type(loc) - cats_deployed = 1 /mob/living/simple_animal/pet/cat/Proc name = "Proc" From fa018861e8ca8bca1c32c560f35d64d8a0a8fcd5 Mon Sep 17 00:00:00 2001 From: Jack Edge Date: Wed, 27 Apr 2016 16:20:06 +0100 Subject: [PATCH 195/265] New cargo crates to buy Also some minor spelling fixes I noticed. :cl: coiax tweak: Internals Crate now contains breath masks and small tanks. rscadd: Metal foam grenade box crate added for 1000 points rscadd: Added two Engineering Mesons to Engineering Gear Crate tweak: Engineering Gear now costs 1300 rscadd: Breach Shield Generator Crate added for 2500 points rscadd: Grounding Rod Crate added for 2500 points rscadd: PACMAN Generator Crate added for 2500 rscadd: Defibrillator Crate added for 1500 rscadd: Nanotrasen Customs report that some wide band suppliers have been providing "alternative" firing pins. Nanotrasen reminds all crewmembers that contraband is contraband. /:cl: Laser tag firing pins (only allow gun to be fired with laser tag armor of the appropriate colour) added to contraband. Special clown firing pin (prank your friends) added to contraband. --- .../objects/items/weapons/storage/boxes.dm | 13 +++- code/modules/cargo/export_scanner.dm | 4 +- code/modules/cargo/packs.dm | 69 +++++++++++++++++-- 3 files changed, 78 insertions(+), 8 deletions(-) diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index bb95dbf2d7f..23c8c3f64c3 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -381,6 +381,17 @@ for(var/i in 1 to 5) new /obj/item/device/firing_pin(src) +/obj/item/weapon/storage/box/lasertagpins + name = "box of laser tag firing pins" + desc = "A box full of laser tag firing pins, to allow newly-developed firearms to require wearing brightly coloured plastic armor before being able to be used." + icon_state = "id" + +/obj/item/weapon/storage/box/lasertagpins/New() + ..() + for(var/i in 1 to 3) + new /obj/item/device/firing_pin/tag/red(src) + new /obj/item/device/firing_pin/tag/blue(src) + /obj/item/weapon/storage/box/handcuffs name = "box of spare handcuffs" desc = "A box full of handcuffs." @@ -795,4 +806,4 @@ new /obj/item/weapon/circuitboard/protolathe(src) new /obj/item/weapon/circuitboard/destructive_analyzer(src) new /obj/item/weapon/circuitboard/circuit_imprinter(src) - new /obj/item/weapon/circuitboard/rdconsole(src) \ No newline at end of file + new /obj/item/weapon/circuitboard/rdconsole(src) diff --git a/code/modules/cargo/export_scanner.dm b/code/modules/cargo/export_scanner.dm index 7d085ff97f5..e17e7b5f635 100644 --- a/code/modules/cargo/export_scanner.dm +++ b/code/modules/cargo/export_scanner.dm @@ -11,7 +11,7 @@ /obj/item/device/export_scanner/examine(user) ..() if(!cargo_console) - user << "You had to link it to supply console for it to work." + user << "The [src] is currently not linked to a cargo console." /obj/item/device/export_scanner/afterattack(obj/O, mob/user, proximity) if(!istype(O) || !proximity) @@ -44,4 +44,4 @@ exported = TRUE break if(!exported) - user << "The object is unexportable." \ No newline at end of file + user << "The object is unexportable." diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index 8fcbcff8bcc..a76603a1d50 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -53,6 +53,12 @@ contains = list(/obj/item/clothing/mask/gas, /obj/item/clothing/mask/gas, /obj/item/clothing/mask/gas, + /obj/item/clothing/mask/breath, + /obj/item/clothing/mask/breath, + /obj/item/clothing/mask/breath, + /obj/item/weapon/tank/internals/emergency_oxygen, + /obj/item/weapon/tank/internals/emergency_oxygen, + /obj/item/weapon/tank/internals/emergency_oxygen, /obj/item/weapon/tank/internals/air, /obj/item/weapon/tank/internals/air, /obj/item/weapon/tank/internals/air) @@ -105,6 +111,12 @@ crate_name = "weed control crate" crate_type = /obj/structure/closet/crate/secure/hydroponics +/datum/supply_pack/emergency/metalfoam + name = "Metal Foam Grenade Crate" + cost = 1000 + contains = list(/obj/item/weapon/storage/box/metalfoam,) + crate_name = "metal foam grenade crate" + /datum/supply_pack/emergency/specialops name = "Special Ops Supplies" hidden = TRUE @@ -440,7 +452,7 @@ /datum/supply_pack/engineering/engiequipment name = "Engineering Gear Crate" - cost = 1000 + cost = 1300 contains = list(/obj/item/weapon/storage/belt/utility, /obj/item/weapon/storage/belt/utility, /obj/item/weapon/storage/belt/utility, @@ -452,7 +464,9 @@ /obj/item/clothing/head/welding, /obj/item/clothing/head/hardhat, /obj/item/clothing/head/hardhat, - /obj/item/clothing/head/hardhat) + /obj/item/clothing/head/hardhat, + /obj/item/clothing/glasses/meson/engine, + /obj/item/clothing/glasses/meson/engine,) crate_name = "engineering gear crate" /datum/supply_pack/engineering/engine/spacesuit @@ -468,6 +482,30 @@ crate_name = "space suit crate" crate_type = /obj/structure/closet/crate/secure +/datum/supply_pack/engineering/shieldgen + name = "Anti-breach Shield Projector Crate" + cost = 2500 + contains = list(/obj/machinery/shieldgen, + /obj/machinery/shieldgen,) + crate_name = "anti-breach shield projector crate" + +/datum/supply_pack/engineering/grounding_rods + name = "Grounding Rod Crate" + cost = 2500 + contains = list(/obj/machinery/power/grounding_rod, + /obj/machinery/power/grounding_rod, + /obj/machinery/power/grounding_rod, + /obj/machinery/power/grounding_rod) + crate_name = "grounding rod crate" + crate_type = /obj/structure/closet/crate/engineering/electrical + +/datum/supply_pack/engineering/pacman + name = "P.A.C.M.A.N Generator Crate" + cost = 2500 + contains = list(/obj/machinery/power/port_gen/pacman,) + crate_name = "PACMAN generator crate" + crate_type = /obj/structure/closet/crate/engineering/electrical + /datum/supply_pack/engineering/solar name = "Solar Panel Crate" cost = 2000 @@ -668,6 +706,13 @@ contains = list(/obj/machinery/iv_drip) crate_name = "iv drip crate" +/datum/supply_pack/medical/defibs + name = "Defibrillator Crate" + cost = 1500 + contains = list(/obj/item/weapon/defibrillator/loaded, + /obj/item/weapon/defibrillator/loaded,) + crate_name = "defibrillator crate" + ////////////////////////////////////////////////////////////////////////////// //////////////////////////// Science ///////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// @@ -938,7 +983,7 @@ crate_name = "exotic seeds crate" /datum/supply_pack/organic/hydroponics/beekeeping_fullkit - name = "Beekeeping Starter Kit" + name = "Beekeeping Starter Crate" cost = 1500 contains = list(/obj/structure/beebox, /obj/item/honey_frame, @@ -947,10 +992,10 @@ /obj/item/queen_bee/bought, /obj/item/clothing/head/beekeeper_head, /obj/item/clothing/suit/beekeeper_suit) - crate_name = "beekeeping starter kit" + crate_name = "beekeeping starter crate" /datum/supply_pack/organic/hydroponics/beekeeping_suits - name = "2 Beekeeper suits" + name = "Beekeeper Suit Crate" cost = 1000 contains = list(/obj/item/clothing/head/beekeeper_head, /obj/item/clothing/suit/beekeeper_suit, @@ -1095,6 +1140,20 @@ /obj/item/clothing/head/helmet/bluetaghelm) crate_name = "laser tag crate" +/datum/supply_pack/misc/lasertag/pins + name = "Laser Tag Firing Pins Crate" + cost = 2000 + contraband = TRUE + contains = list(/obj/item/weapon/storage/box/lasertagpins,) + crate_name = "laser tag firing pins crate" + +/datum/supply_pack/misc/clownpin + name = "Hilarious Firing Pin Crate" + cost = 5000 + contraband = TRUE + contains = list(/obj/item/device/firing_pin/clown,) + crate_name = "hilarious firing pin crate" + /datum/supply_pack/misc/religious_supplies name = "Religious Supplies Crate" cost = 4000 // it costs so much because the Space Church is ran by Space Jews From ffc87184f0471eb02e0845dd554e6180706672df Mon Sep 17 00:00:00 2001 From: Joan Lung Date: Wed, 27 Apr 2016 11:24:47 -0400 Subject: [PATCH 196/265] You can now analyze blobs to check material effects, blob type, and health * You can now analyze blobs to check material effects, damage resistance, and health. * beep beep * slime extinguishes stuff * I need to check my code * wew * buffnerfs * fuckthemeta * morebuffs * no unfriendly fire * damn my urge for low linecounts * this makes me want to drink heavily * if you see something, say nothing, and drink to forget * waiting for an answer is for scrubs * if you see something say nothing and drink to forget * no resist printout * phiiiiiiiil --- code/_onclick/hud/blob_overmind.dm | 2 +- code/game/gamemodes/blob/blobs/core.dm | 5 +- code/game/gamemodes/blob/blobs/factory.dm | 5 + code/game/gamemodes/blob/blobs/node.dm | 3 + code/game/gamemodes/blob/blobs/resource.dm | 3 + code/game/gamemodes/blob/blobs/shield.dm | 8 +- code/game/gamemodes/blob/powers.dm | 4 +- code/game/gamemodes/blob/theblob.dm | 31 ++++ .../chemistry/reagents/blob_reagents.dm | 133 ++++++++++++------ 9 files changed, 148 insertions(+), 46 deletions(-) diff --git a/code/_onclick/hud/blob_overmind.dm b/code/_onclick/hud/blob_overmind.dm index e46b1bebf54..8e3dcd2aa39 100644 --- a/code/_onclick/hud/blob_overmind.dm +++ b/code/_onclick/hud/blob_overmind.dm @@ -45,7 +45,7 @@ if(isovermind(usr)) var/mob/camera/blob/B = usr if(!B.placed) - B.place_blob_core() + B.place_blob_core(B.base_point_rate, 0) B.transport_core() /obj/screen/blob/Blobbernaut diff --git a/code/game/gamemodes/blob/blobs/core.dm b/code/game/gamemodes/blob/blobs/core.dm index 7e47edfb42b..affd849e1e1 100644 --- a/code/game/gamemodes/blob/blobs/core.dm +++ b/code/game/gamemodes/blob/blobs/core.dm @@ -27,6 +27,9 @@ point_rate = new_rate ..() +/obj/effect/blob/core/scannerreport() + return "Directs the blob's expansion, gradually expands, and sustains nearby blob spores and blobbernauts." + /obj/effect/blob/core/update_icon() overlays.Cut() color = null @@ -71,7 +74,7 @@ Pulse_Area(overmind, 12, 4, 3) for(var/obj/effect/blob/normal/B in range(1, src)) if(prob(5)) - B.change_to(/obj/effect/blob/shield, overmind) + B.change_to(/obj/effect/blob/shield/core, overmind) ..() diff --git a/code/game/gamemodes/blob/blobs/factory.dm b/code/game/gamemodes/blob/blobs/factory.dm index 56ed5167f84..8ee6baa2c73 100644 --- a/code/game/gamemodes/blob/blobs/factory.dm +++ b/code/game/gamemodes/blob/blobs/factory.dm @@ -13,6 +13,11 @@ var/spore_delay = 0 +/obj/effect/blob/factory/scannerreport() + if(naut) + return "It is currently sustaining a blobbernaut, making it fragile and unable to produce blob spores." + return "Will produce a blob spore every few seconds." + /obj/effect/blob/factory/Destroy() for(var/mob/living/simple_animal/hostile/blob/blobspore/spore in spores) if(spore.factory == src) diff --git a/code/game/gamemodes/blob/blobs/node.dm b/code/game/gamemodes/blob/blobs/node.dm index 0fa21158e26..98ddb79bf8c 100644 --- a/code/game/gamemodes/blob/blobs/node.dm +++ b/code/game/gamemodes/blob/blobs/node.dm @@ -15,6 +15,9 @@ SSobj.processing |= src ..(loc, h) +/obj/effect/blob/node/scannerreport() + return "Gradually expands and sustains nearby blob spores and blobbernauts." + /obj/effect/blob/node/update_icon() overlays.Cut() color = null diff --git a/code/game/gamemodes/blob/blobs/resource.dm b/code/game/gamemodes/blob/blobs/resource.dm index a82293a0822..75a7ecfa366 100644 --- a/code/game/gamemodes/blob/blobs/resource.dm +++ b/code/game/gamemodes/blob/blobs/resource.dm @@ -8,6 +8,9 @@ point_return = 15 var/resource_delay = 0 +/obj/effect/blob/resource/scannerreport() + return "Gradually supplies the blob with resources, increasing the rate of expansion." + /obj/effect/blob/resource/creation_action() if(overmind) overmind.resource_blobs += src diff --git a/code/game/gamemodes/blob/blobs/shield.dm b/code/game/gamemodes/blob/blobs/shield.dm index c3003136915..cd879363cf6 100644 --- a/code/game/gamemodes/blob/blobs/shield.dm +++ b/code/game/gamemodes/blob/blobs/shield.dm @@ -7,9 +7,15 @@ maxhealth = 150 brute_resist = 0.1 explosion_block = 3 - point_return = 2 + point_return = 4 atmosblock = 1 +/obj/effect/blob/shield/scannerreport() + return "Will prevent the spread of atmospheric changes." + /obj/effect/blob/shield/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) return + +/obj/effect/blob/shield/core + point_return = 0 diff --git a/code/game/gamemodes/blob/powers.dm b/code/game/gamemodes/blob/powers.dm index a8df3818ff0..aa8485cf2fc 100644 --- a/code/game/gamemodes/blob/powers.dm +++ b/code/game/gamemodes/blob/powers.dm @@ -1,13 +1,13 @@ /mob/camera/blob/proc/can_buy(cost = 15) if(blob_points < cost) - src << "You cannot afford this!" + src << "You cannot afford this, you need at least [cost] resources!" return 0 add_points(-cost) return 1 // Power verbs -/mob/camera/blob/proc/place_blob_core(point_rate = base_point_rate, placement_override = 0) +/mob/camera/blob/proc/place_blob_core(point_rate, placement_override) if(placed && placement_override != -1) return 1 if(!placement_override) diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm index 1bac15b4993..16638eef0b3 100644 --- a/code/game/gamemodes/blob/theblob.dm +++ b/code/game/gamemodes/blob/theblob.dm @@ -195,6 +195,13 @@ var/damage = Clamp(0.01 * exposed_temperature, 0, 4) take_damage(damage, BURN) +/obj/effect/blob/emp_act(severity) + if(severity > 0) + if(overmind) + overmind.blob_reagent_datum.emp_reaction(src, severity) + if(prob(100 - severity * 30)) + PoolOrNew(/obj/effect/overlay/temp/emp, get_turf(src)) + /obj/effect/blob/tesla_act(power) ..() if(overmind) @@ -213,6 +220,21 @@ take_damage(Proj.damage, Proj.damage_type, Proj) return 0 +/obj/effect/blob/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/device/analyzer)) + user.changeNext_move(CLICK_CD_MELEE) + user << "The analyzer beeps once, then reports:
    " + user << 'sound/machines/ping.ogg' + if(overmind) + user << "Material: [overmind.blob_reagent_datum.name]." + user << "Material Effects: [overmind.blob_reagent_datum.analyzerdescdamage]" + user << "Material Properties: [overmind.blob_reagent_datum.analyzerdesceffect]
    " + user << "Blob Type: [uppertext(initial(name))]" + user << "Health: [health]/[maxhealth]" + user << "Effects: [scannerreport()]" + else + return ..() + /obj/effect/blob/attacked_by(obj/item/I, mob/living/user) user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src) @@ -275,12 +297,16 @@ user << "It seems to be made of [get_chem_name()]." return +/obj/effect/blob/proc/scannerreport() + return "A generic blob. Looks like someone forgot to override this proc, adminhelp this." + /obj/effect/blob/proc/get_chem_name() if(overmind) return overmind.blob_reagent_datum.name return "an unknown variant" /obj/effect/blob/normal + name = "normal blob" icon_state = "blob" luminosity = 0 health = 21 @@ -288,6 +314,11 @@ health_regen = 1 brute_resist = 0.25 +/obj/effect/blob/normal/scannerreport() + if(health <= 10) + return "Currently weak to brute damage." + return "N/A" + /obj/effect/blob/normal/update_icon() ..() if(health <= 10) diff --git a/code/modules/reagents/chemistry/reagents/blob_reagents.dm b/code/modules/reagents/chemistry/reagents/blob_reagents.dm index f57c1ea91c9..5218b3c4f82 100644 --- a/code/modules/reagents/chemistry/reagents/blob_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/blob_reagents.dm @@ -5,15 +5,15 @@ color = "#FFFFFF" var/complementary_color = "#000000" //a color that's complementary to the normal blob color var/shortdesc = null //just damage and on_mob effects, doesn't include special, blob-tile only effects + var/analyzerdescdamage = "Unknown. Report this bug to a coder, or just adminhelp." + var/analyzerdesceffect = "N/A" var/blobbernaut_message = "slams" //blobbernaut attack verb var/message = "The blob strikes you" //message sent to any mob hit by the blob var/message_living = null //extension to first mob sent to only living mobs i.e. silicons have no skin to be burnt /datum/reagent/blob/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) - if(M.stat == DEAD) - return 0 //the dead don't cause reactions - if(istype(M, /mob/living/simple_animal/hostile/blob)) - return 0 //the blob mobs do not cause effects when hitting themselves or other blob mobs + if(M.stat == DEAD || istype(M, /mob/living/simple_animal/hostile/blob)) + return 0 //the dead, and blob mobs, don't cause reactions return round(reac_volume * min(1.5 - touch_protection, 1), 0.1) //full touch protection means 50% volume, any prot below 0.5 means 100% volume. /datum/reagent/blob/proc/damage_reaction(obj/effect/blob/B, original_health, damage, damage_type, cause) //when the blob takes damage, do this @@ -31,12 +31,17 @@ /datum/reagent/blob/proc/extinguish_reaction(obj/effect/blob/B) //when the blob is hit with water, do this return +/datum/reagent/blob/proc/emp_reaction(obj/effect/blob/B, severity) //when the blob is hit with an emp, do this + return + //does low toxin damage, but creates fragile spores when expanding or killed by weak attacks /datum/reagent/blob/sporing_pods name = "Sporing Pods" id = "sporing_pods" - description = "will do low toxin damage and produce fragile spores when killed or on expanding." - shortdesc = "will do low toxin damage." + description = "will do very low toxin damage and produce fragile spores when killed or on expanding." + shortdesc = "will do very low toxin damage." + analyzerdescdamage = "Does very low toxin damage." + analyzerdesceffect = "Produces spores when expanding and when killed." color = "#E88D5D" complementary_color = "#5DB8E8" message_living = ", and you feel sick" @@ -67,12 +72,14 @@ id = "replicating_foam" description = "will do medium brute damage and replicate when damaged, but takes increased brute damage." shortdesc = "will do medium brute damage." + analyzerdescdamage = "Does medium brute damage." + analyzerdesceffect = "Expands when attacked, will occasionally expand again when expanding, and is fragile to brute damage." color = "#7B5A57" complementary_color = "#57787B" /datum/reagent/blob/replicating_foam/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() - M.apply_damage(0.6*reac_volume, BRUTE) + M.apply_damage(0.5*reac_volume, BRUTE) /datum/reagent/blob/replicating_foam/damage_reaction(obj/effect/blob/B, original_health, damage, damage_type, cause) var/effectivedamage = damage @@ -96,6 +103,8 @@ id = "shifting_fragments" description = "will do medium brute damage and shift away from damage." shortdesc = "will do medium brute damage." + analyzerdescdamage = "Does medium brute damage." + analyzerdesceffect = "When attacked, may shift away from the attacker." color = "#C8963C" complementary_color = "#3C6EC8" @@ -121,12 +130,14 @@ B.forceMove(T) //swap the blobs return ..() -//does low burn and a lot of stamina damage, immune to tesla bolts +//does low burn and a lot of stamina damage, immune to tesla bolts, weak to EMP /datum/reagent/blob/energized_fibers name = "Energized Fibers" id = "energized_fibers" - description = "will do low burn and high stamina damage and conduct electricity." + description = "will do low burn and high stamina damage and conduct electricity, but is weak to EMPs." shortdesc = "will do low burn and high stamina damage." + analyzerdescdamage = "Does low burn damage and massively drains stamina." + analyzerdesceffect = "Is immune to electricity and will easily conduct it, but is weak to EMPs." color = "#EFD65A" complementary_color = "#5A73EF" blobbernaut_message = "shocks" @@ -134,19 +145,25 @@ /datum/reagent/blob/energized_fibers/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() - M.apply_damage(0.4*reac_volume, BURN) + M.apply_damage(0.6*reac_volume, BURN) if(M) - M.adjustStaminaLoss(0.8*reac_volume) + M.adjustStaminaLoss(0.6*reac_volume) /datum/reagent/blob/energized_fibers/tesla_reaction(obj/effect/blob/B, power) return 0 +/datum/reagent/blob/energized_fibers/emp_reaction(obj/effect/blob/B, severity) + var/damage = rand(30, 50) - severity * rand(10, 15) + B.take_damage(damage, BURN) + //sets you on fire, does burn damage, weak to water /datum/reagent/blob/boiling_oil name = "Boiling Oil" id = "boiling_oil" description = "will do medium burn damage and set targets on fire, but is weak to water." shortdesc = "will do medium burn damage and set targets on fire." + analyzerdescdamage = "Does medium burn damage and sets targets on fire." + analyzerdesceffect = "Takes damage from water and other extinguishing liquids." color = "#B68D00" complementary_color = "#0029B6" blobbernaut_message = "splashes" @@ -155,10 +172,10 @@ /datum/reagent/blob/boiling_oil/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() - M.adjust_fire_stacks(round(reac_volume/12)) + M.adjust_fire_stacks(round(reac_volume/10)) M.IgniteMob() if(M) - M.apply_damage(0.5*reac_volume, BURN) + M.apply_damage(0.6*reac_volume, BURN) if(iscarbon(M)) M.emote("scream") @@ -169,8 +186,10 @@ /datum/reagent/blob/flammable_goo name = "Flammable Goo" id = "flammable_goo" - description = "will do low burn damage, medium toxin damage, and ignite when burned." - shortdesc = "will do low burn damage and medium toxin damage." + description = "will do medium burn and toxin damage, make targets flammable, and ignite when burned." + shortdesc = "will do medium burn and toxin damage, and make targets flammable." + analyzerdescdamage = "Does medium burn damage, medium toxin damage, and makes targets flammable." + analyzerdesceffect = "Releases bursts of flame when attacked with burn damage, but takes additional burn damage." color = "#BE5532" complementary_color = "#329BBE" blobbernaut_message = "splashes" @@ -179,15 +198,16 @@ /datum/reagent/blob/flammable_goo/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() - M.adjust_fire_stacks(round(reac_volume/10)) //apply, but don't ignite + M.adjust_fire_stacks(round(reac_volume/8)) //apply, but don't ignite M.apply_damage(0.4*reac_volume, TOX) if(M) - M.apply_damage(0.2*reac_volume, BURN) + M.apply_damage(0.4*reac_volume, BURN) /datum/reagent/blob/flammable_goo/damage_reaction(obj/effect/blob/B, original_health, damage, damage_type, cause) if(cause && damage_type == BURN) - for(var/turf/T in range(1, B)) - if(!(locate(/obj/effect/blob) in T) && prob(80)) + for(var/turf/open/T in range(1, B)) + var/obj/effect/blob/C = locate() in T + if(!(C && C.overmind && C.overmind.blob_reagent_datum.id == B.overmind.blob_reagent_datum.id) && prob(80)) PoolOrNew(/obj/effect/hotspot, T) return damage * 1.5 return ..() @@ -197,6 +217,7 @@ name = "Regenerative Materia" id = "regenerative_materia" description = "will do low toxin damage and cause targets to believe they are fully healed." + analyzerdescdamage = "Does low toxin damage and injects a toxin that causes the target to believe they are fully healed." color = "#C8A5DC" complementary_color = "#B9DCA5" message_living = ", and you feel alive" @@ -225,6 +246,7 @@ name = "Hallucinogenic Nectar" id = "hallucinogenic_nectar" description = "will do low toxin damage, vivid hallucinations, and inject targets with toxins." + analyzerdescdamage = "Does low toxin damage and injects a toxin that causes vivid hallucinations and blurried vision." color = "#CD7794" complementary_color = "#77CDB0" blobbernaut_message = "splashes" @@ -233,8 +255,8 @@ /datum/reagent/blob/hallucinogenic_nectar/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() - M.hallucination += 0.8*reac_volume - M.adjust_drugginess(0.8*reac_volume) + M.hallucination += reac_volume + M.adjust_drugginess(reac_volume) if(M.reagents) M.reagents.add_reagent("spore", 0.2*reac_volume) @@ -244,7 +266,8 @@ /datum/reagent/blob/zombifying_feelers name = "Zombifying Feelers" id = "zombifying_feelers" - description = "will cause medium toxin damage and turn sleeping targets into blob zombies." + description = "will do low toxin damage and turn sleeping targets into blob zombies." + analyzerdescdamage = "Does low toxin damage and kills unconscious humans, turning them into blob zombies." color = "#828264" complementary_color = "#646482" message_living = ", and you feel tired" @@ -259,13 +282,14 @@ O.blob_mobs.Add(BS) BS.Zombify(M) if(M) - M.apply_damage(0.6*reac_volume, TOX) + M.apply_damage(0.4*reac_volume, TOX) //toxin, stamina, and some bonus spore toxin /datum/reagent/blob/envenomed_filaments name = "Envenomed Filaments" id = "envenomed_filaments" - description = "will cause medium toxin and stamina damage, and inject targets with toxins." + description = "will do medium toxin and stamina damage, and inject targets with toxins." + analyzerdescdamage = "Does medium toxin damage, drains stamina, and injects a weak toxin." color = "#9ACD32" complementary_color = "#6532CD" message_living = ", and you feel sick and nauseated" @@ -283,6 +307,7 @@ name = "Poisonous Strands" id = "poisonous_strands" description = "will inject targets with poison." + analyzerdescdamage = "Injects a highly lethal poison that will gradually liquify the target's internal organs." color = "#7D6EB4" complementary_color = "#A5B46E" blobbernaut_message = "injects" @@ -304,6 +329,7 @@ name = "Cyclonic Grid" id = "cyclonic_grid" description = "will cause high oxygen damage and randomly throw targets to or from it." + analyzerdescdamage = "Does high oxygen damage and randomly throws targets at or away from it." color = "#9BCD9B" complementary_color = "#CD9BCD" message = "The blob blasts you with a gust of air" @@ -320,6 +346,7 @@ name = "Lexorin Jelly" id = "lexorin_jelly" description = "will cause low brute and high oxygen damage, and cause targets to be unable to breathe." + analyzerdescdamage = "Does low brute damage, high oxygen damage, and prevents targets from breathing." color = "#00E5B1" complementary_color = "#E50034" message_living = ", and your lungs feel heavy and weak" @@ -337,6 +364,8 @@ id = "explosive_lattice" description = "will do brute damage in an area around targets and is resistant to explosions." shortdesc = "will do brute damage in an area around targets." + analyzerdescdamage = "Does medium brute damage and causes damage to everyone near its targets." + analyzerdesceffect = "Is highly resistant to explosions." color = "#8B2500" complementary_color = "#00668B" blobbernaut_message = "blasts" @@ -370,6 +399,8 @@ id = "reactive_gelatin" description = "will do random brute damage and react to brute damage." shortdesc = "will do random brute damage." + analyzerdescdamage = "Does random brute damage." + analyzerdesceffect = "When attacked with brute damage, will lash out, attacking everything near it." color = "#FFA500" complementary_color = "#005AFF" blobbernaut_message = "pummels" @@ -377,7 +408,7 @@ /datum/reagent/blob/reactive_gelatin/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() - var/damage = rand(0, 30)/25 + var/damage = rand(5, 35)/25 M.apply_damage(damage*reac_volume, BRUTE) /datum/reagent/blob/reactive_gelatin/damage_reaction(obj/effect/blob/B, original_health, damage, damage_type, cause) @@ -393,6 +424,7 @@ name = "Cryogenic Liquid" id = "cryogenic_liquid" description = "will do low burn and stamina damage, and cause targets to freeze." + analyzerdescdamage = "Does low burn damage, drains stamina, and injects targets with a freezing liquid." color = "#8BA6E9" complementary_color = "#E9CE8B" blobbernaut_message = "splashes" @@ -402,11 +434,11 @@ /datum/reagent/blob/cryogenic_liquid/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() if(M.reagents) - M.reagents.add_reagent("frostoil", 0.4*reac_volume) - M.reagents.add_reagent("ice", 0.4*reac_volume) + M.reagents.add_reagent("frostoil", 0.3*reac_volume) + M.reagents.add_reagent("ice", 0.3*reac_volume) M.apply_damage(0.4*reac_volume, BURN) if(M) - M.adjustStaminaLoss(0.4*reac_volume) + M.adjustStaminaLoss(0.3*reac_volume) //does burn damage and EMPs, slightly fragile /datum/reagent/blob/electromagnetic_web @@ -414,6 +446,8 @@ id = "electromagnetic_web" description = "will do low burn damage and EMP targets, but is very fragile." shortdesc = "will do low burn damage and EMP targets." + analyzerdescdamage = "Does low burn damage and EMPs targets." + analyzerdesceffect = "Is fragile to all types of damage, but takes massive damage from brute. In addition, releases a small EMP when killed." color = "#83ECEC" complementary_color = "#EC8383" blobbernaut_message = "lashes" @@ -448,6 +482,8 @@ id = "synchronous_mesh" description = "will do brute damage for each nearby blob and spread damage between nearby blobs." shortdesc = "will do brute damage for each nearby blob." + analyzerdescdamage = "Does brute damage, increasing for each blob near the target." + analyzerdesceffect = "When attacked, spreads damage between all blobs near the attacked blob." color = "#65ADA2" complementary_color = "#AD6570" blobbernaut_message = "synchronously strikes" @@ -475,18 +511,20 @@ else return damage * 1.25 -//does brute damage through armor(but not though bio resistance) +//does brute damage through armor and bio resistance /datum/reagent/blob/penetrating_spines name = "Penetrating Spines" id = "penetrating_spines" - description = "will do medium brute damage through armor." + description = "will do medium brute damage through armor and bio resistance." + analyzerdescdamage = "Does medium brute damage, ignoring armor and bio resistance." color = "#6E4664" complementary_color = "#466E50" blobbernaut_message = "stabs" message = "The blob stabs you" /datum/reagent/blob/penetrating_spines/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) - reac_volume = ..() + if(M.stat == DEAD || istype(M, /mob/living/simple_animal/hostile/blob)) + return 0 //the dead, and blob mobs, don't cause reactions M.adjustBruteLoss(0.6*reac_volume) /datum/reagent/blob/adaptive_nexuses @@ -494,6 +532,7 @@ id = "adaptive_nexuses" description = "will do medium brute damage and kill unconscious targets, giving you bonus resources." shortdesc = "will do medium brute damage and kill unconscious targets, giving your overmind bonus resources." + analyzerdescdamage = "Does medium brute damage and kills unconscious humans, reaping resources from them." color = "#4A64C0" complementary_color = "#823ABB" @@ -506,7 +545,7 @@ O << "Gained [points] resources from the death of [M]." M.death() if(M) - M.apply_damage(0.6*reac_volume, BRUTE) + M.apply_damage(0.5*reac_volume, BRUTE) //does low brute damage, oxygen damage, and stamina damage and wets tiles when damaged /datum/reagent/blob/pressurized_slime @@ -514,6 +553,8 @@ id = "pressurized_slime" description = "will do low brute, oxygen, and stamina damage, and wet tiles when damaged or killed." shortdesc = "will do low brute, oxygen, and stamina damage, and wet tiles under targets." + analyzerdescdamage = "Does low brute damage, low oxygen damage, drains stamina, and wets tiles under targets, extinguishing them." + analyzerdesceffect = "When attacked or killed, wets nearby tiles, extinguishing anything on them." color = "#AAAABB" complementary_color = "#BBBBAA" blobbernaut_message = "emits slime at" @@ -525,30 +566,39 @@ var/turf/open/T = get_turf(M) if(istype(T) && prob(reac_volume)) T.MakeSlippery(TURF_WET_WATER) - M.apply_damage(0.2*reac_volume, BRUTE) + M.adjust_fire_stacks(-(reac_volume / 10)) + M.ExtinguishMob() + M.apply_damage(0.1*reac_volume, BRUTE) if(M) - M.apply_damage(0.4*reac_volume, OXY) + M.apply_damage(0.3*reac_volume, OXY) if(M) - M.adjustStaminaLoss(0.4*reac_volume) + M.adjustStaminaLoss(0.3*reac_volume) /datum/reagent/blob/pressurized_slime/damage_reaction(obj/effect/blob/B, original_health, damage, damage_type, cause) - for(var/turf/open/T in range(1, B)) - if(prob(damage)) - T.MakeSlippery(TURF_WET_WATER) + extinguisharea(B, damage) return ..() /datum/reagent/blob/pressurized_slime/death_reaction(obj/effect/blob/B, cause) if(!isnull(cause)) B.visible_message("The blob ruptures, spraying the area with liquid!") + extinguisharea(B, 50) + +/datum/reagent/blob/pressurized_slime/proc/extinguisharea(obj/effect/blob/B, probchance) for(var/turf/open/T in range(1, B)) - if(prob(50)) + if(prob(probchance)) T.MakeSlippery(TURF_WET_WATER) + for(var/obj/O in T) + O.extinguish() + for(var/mob/living/L in T) + L.adjust_fire_stacks(-2.5) + L.ExtinguishMob() //does brute damage and throws or pulls nearby objects at the target /datum/reagent/blob/dark_matter name = "Dark Matter" id = "dark_matter" description = "will do medium brute damage and pull nearby objects and enemies at the target." + analyzerdescdamage = "Does medium brute damage and pulls nearby objects and creatures at the target." color = "#61407E" complementary_color = "#5D7E40" message = "You feel a thrum as the blob strikes you, and everything flies at you" @@ -556,13 +606,14 @@ /datum/reagent/blob/dark_matter/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() reagent_vortex(M, 0, reac_volume) - M.apply_damage(0.4*reac_volume, BRUTE) + M.apply_damage(0.3*reac_volume, BRUTE) //does brute damage and throws or pushes nearby objects away from the target /datum/reagent/blob/b_sorium name = "Sorium" id = "b_sorium" description = "will do medium brute damage and throw nearby objects and enemies away from the target." + analyzerdescdamage = "Does medium brute damage and pushes nearby objects and creatures away from the target." color = "#808000" complementary_color = "#000080" message = "The blob slams into you and sends you flying" @@ -570,7 +621,7 @@ /datum/reagent/blob/b_sorium/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() reagent_vortex(M, 1, reac_volume) - M.apply_damage(0.4*reac_volume, BRUTE) + M.apply_damage(0.3*reac_volume, BRUTE) /datum/reagent/blob/proc/reagent_vortex(mob/living/M, setting_type, reac_volume) if(M && reac_volume) From 0d0319c117e01015adcfc1c5c78a70421032ca1d Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Wed, 27 Apr 2016 15:24:51 +0000 Subject: [PATCH 197/265] Automatic changelog generation for PR #17128 --- html/changelogs/AutoChangeLog-pr-17128.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-17128.yml diff --git a/html/changelogs/AutoChangeLog-pr-17128.yml b/html/changelogs/AutoChangeLog-pr-17128.yml new file mode 100644 index 00000000000..2db618cf7d8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-17128.yml @@ -0,0 +1,22 @@ +author: Joan +delete-after: True +changes: + - rscadd: "Attacking a blob with an analyzer will tell you what its chemical does, its health, and a small fact about the blob analyzed." + - rscdel: "NERFS:" + - tweak: "Zombifying Feelers does less toxin damage." + - tweak: "Adaptive Nexuses does slightly less brute damage." + - tweak: "Replicating Foam does slightly less brute damage." + - tweak: "Blob Sorium does slightly less brute damage." + - tweak: "Blob Dark Matter does slightly less brute damage." + - tweak: "Cyrogenic Liquid injects slightly less frost oil and ice and does slightly less stamina damage." + - tweak: "Pressurized Slime does less brute, oxygen, and stamina damage, and extinguishes objects and people on turfs it wets." + - rscdel: "Blob core strong blobs no longer give points when removed." + - wip: "PROBABLY BUFFS:" + - tweak: "Flammable Goo now does slightly more burn damage and applies more firestacks, but applies fire to blob tiles that don't share its chemical." + - tweak: "Energized Fibers does slightly more burn damage, slightly less stamina damage, and now takes damage from EMPs." + - rscadd: "BUFFS:" + - tweak: "Boiling Oil does slightly more burn damage and applies more firestacks." + - tweak: "Reactive Gelatin does slightly more damage on average." + - tweak: "Penetrating Spines now also ignores bio resistance in addition to armor." + - tweak: "Hallucinogenic Nectar causes more hallucinations." + - tweak: "Normal strong blobs now refund 4 points when removed, from 2." From c396cd5be53d9ae366eaf9c387a5b565956bd2c8 Mon Sep 17 00:00:00 2001 From: Razharas Date: Wed, 27 Apr 2016 18:29:56 +0300 Subject: [PATCH 198/265] Fixes falsewalls being unsmashable (#17135) * Fixes falsewalls being unsmashable --- code/game/objects/structures/false_walls.dm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm index 09fbd8a08d4..fb766921ac3 100644 --- a/code/game/objects/structures/false_walls.dm +++ b/code/game/objects/structures/false_walls.dm @@ -48,6 +48,14 @@ update_icon() opening = 0 +/obj/structure/falsewall/attack_animal(mob/living/simple_animal/user) + if(user.environment_smash) + user.changeNext_move(CLICK_CD_MELEE) + user.do_attack_animation(src) + playsound(src, 'sound/effects/meteorimpact.ogg', 100, 1) + visible_message("[user] smashes [src] apart!") + qdel(src) + /obj/structure/falsewall/proc/do_the_flick() if(density) smooth = SMOOTH_FALSE From 88b55ced87e4757b11c957626dd80bbf11c610e3 Mon Sep 17 00:00:00 2001 From: Razharas Date: Wed, 27 Apr 2016 18:31:54 +0300 Subject: [PATCH 199/265] Fixes chameleon projector explosion protection (#17138) Fixes chameleon projector explosion protection --- code/game/objects/items/devices/chameleonproj.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm index 0bb1e20fe62..6e89ab267a0 100644 --- a/code/game/objects/items/devices/chameleonproj.dm +++ b/code/game/objects/items/devices/chameleonproj.dm @@ -105,7 +105,8 @@ /obj/effect/dummy/chameleon/attack_alien() master.disrupt() -/obj/effect/dummy/chameleon/ex_act() //ok now THATS some serious protection against explosions right here +/obj/effect/dummy/chameleon/ex_act(S, T) + contents_explosion(S, T) master.disrupt() /obj/effect/dummy/chameleon/bullet_act() From 61c037389e8ac19ba74370a451edba40e36bd75c Mon Sep 17 00:00:00 2001 From: phil235 Date: Wed, 27 Apr 2016 17:45:56 +0200 Subject: [PATCH 200/265] You can attack with ABSTRACT items again. --- code/_onclick/item_attack.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 1dfcd96835a..374b077d67a 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -24,7 +24,7 @@ /obj/item/proc/attack(mob/living/M, mob/living/user, def_zone) - if(flags & (NOBLUDGEON|ABSTRACT)) + if(flags & NOBLUDGEON) return if(!force) playsound(loc, 'sound/weapons/tap.ogg', get_clamped_volume(), 1, -1) @@ -42,7 +42,7 @@ //the equivalent of the standard version of attack() but for object targets. /obj/item/proc/attack_obj(obj/O, mob/living/user) - if(flags & (NOBLUDGEON|ABSTRACT)) + if(flags & NOBLUDGEON) return user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(O) From 6af0e2a0dc2ed4019104e5b744ff493bd0f79e49 Mon Sep 17 00:00:00 2001 From: Jack Edge Date: Wed, 27 Apr 2016 17:35:34 +0100 Subject: [PATCH 201/265] Cargo shuttle now arrives in 2 minutes --- code/modules/shuttle/supply.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index 306bf6aebc1..f0be26c05ef 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -1,7 +1,7 @@ /obj/docking_port/mobile/supply name = "supply shuttle" id = "supply" - callTime = 10 + callTime = 1200 dir = 8 travelDir = 90 @@ -153,4 +153,4 @@ for(var/obj/thing in O) sold_atoms += recursive_sell(thing, level) qdel(O) - return sold_atoms \ No newline at end of file + return sold_atoms From b2a04afd393a6066e1c89508555dccb8686b9ce0 Mon Sep 17 00:00:00 2001 From: phil235 Date: Wed, 27 Apr 2016 19:28:13 +0200 Subject: [PATCH 202/265] Fixes the air subsystem initialization. --- code/controllers/subsystem/air.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/controllers/subsystem/air.dm b/code/controllers/subsystem/air.dm index 0ba721fa0df..6efb4ca6e40 100644 --- a/code/controllers/subsystem/air.dm +++ b/code/controllers/subsystem/air.dm @@ -271,7 +271,7 @@ var/datum/subsystem/air/SSair var/turf/T = thing active_turfs -= T if (T.blocks_air) - return + continue T.Initalize_Atmos(times_fired) From 201abb0323e6c2120e71a5621acc2c598534c2f7 Mon Sep 17 00:00:00 2001 From: Robustin Date: Wed, 27 Apr 2016 14:01:57 -0400 Subject: [PATCH 203/265] GudChange --- code/modules/clothing/spacesuits/hardsuit.dm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index 8117736920a..73bdf72ec19 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -195,7 +195,7 @@ //Syndicate hardsuit /obj/item/clothing/head/helmet/space/hardsuit/syndi name = "blood-red hardsuit helmet" - desc = "A dual-mode advanced helmet designed for work in special operations. It is in travel mode. Property of Gorlex Marauders." + desc = "A dual-mode advanced helmet designed for work in special operations. It is in EVA mode. Property of Gorlex Marauders." alt_desc = "A dual-mode advanced helmet designed for work in special operations. It is in combat mode. Property of Gorlex Marauders." icon_state = "hardsuit1-syndi" item_state = "syndie_helm" @@ -221,7 +221,7 @@ return on = !on if(on || force) - user << "You switch your hardsuit to travel mode." + user << "You switch your hardsuit to EVA mode, sacrificing speed for space protection." name = initial(name) desc = initial(desc) user.AddLuminosity(brightness_on) @@ -230,7 +230,7 @@ flags_inv |= visor_flags_inv cold_protection |= HEAD else - user << "You switch your hardsuit to combat mode." + user << "You switch your hardsuit to combat mode and can now run at full speed." name += " (combat)" desc = alt_desc user.AddLuminosity(-brightness_on) @@ -272,7 +272,7 @@ /obj/item/clothing/suit/space/hardsuit/syndi name = "blood-red hardsuit" - desc = "A dual-mode advanced hardsuit designed for work in special operations. It is in travel mode. Property of Gorlex Marauders." + desc = "A dual-mode advanced hardsuit designed for work in special operations. It is in EVA mode. Property of Gorlex Marauders." alt_desc = "A dual-mode advanced hardsuit designed for work in special operations. It is in combat mode. Property of Gorlex Marauders." icon_state = "hardsuit1-syndi" item_state = "syndie_hardsuit" @@ -290,7 +290,7 @@ //Elite Syndie suit /obj/item/clothing/head/helmet/space/hardsuit/syndi/elite name = "elite syndicate hardsuit helmet" - desc = "An elite version of the syndicate helmet, with improved armour and fire shielding. It is in travel mode. Property of Gorlex Marauders." + desc = "An elite version of the syndicate helmet, with improved armour and fire shielding. It is in EVA mode. Property of Gorlex Marauders." alt_desc = "An elite version of the syndicate helmet, with improved armour and fire shielding. It is in combat mode. Property of Gorlex Marauders." icon_state = "hardsuit0-syndielite" item_color = "syndielite" From f612c83c87c597ffee2820f7bbf0f72be08b58ce Mon Sep 17 00:00:00 2001 From: Incoming5643 Date: Wed, 27 Apr 2016 14:23:38 -0400 Subject: [PATCH 204/265] negates nullcats --- code/modules/mob/living/simple_animal/friendly/cat.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 06f6c04fbbf..82b7cfae730 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -115,7 +115,7 @@ var/savefile/S = new /savefile("data/npc_saves/Runtime.sav") family = list() for(var/mob/living/simple_animal/pet/cat/C in mob_list) - if(istype(C,type) || C.stat || !C.butcher_results) //That last one is a work around for hologram cats + if(istype(C,type) || C.stat || !C.z || !C.butcher_results) //That last one is a work around for hologram cats continue if(C.type in family) family[C.type] += 1 From 4a622c07126a25e9ba1a45876f3092c8d4095283 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Wed, 27 Apr 2016 18:24:56 +0000 Subject: [PATCH 205/265] Automatic changelog generation for PR #17140 --- html/changelogs/AutoChangeLog-pr-17140.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-17140.yml diff --git a/html/changelogs/AutoChangeLog-pr-17140.yml b/html/changelogs/AutoChangeLog-pr-17140.yml new file mode 100644 index 00000000000..0095d02ac4c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-17140.yml @@ -0,0 +1,4 @@ +author: Joan +delete-after: True +changes: + - rscadd: "Charger holoparasites now play a sound when hitting a target, as well as shaking the target's camera." From efa60f8587eaaec8e3a41d25237ff1b355da49f9 Mon Sep 17 00:00:00 2001 From: Razharas Date: Wed, 27 Apr 2016 21:33:36 +0300 Subject: [PATCH 206/265] Fixes BoHs Fixes BoHs fix https://github.com/tgstation/-tg-station/issues/17173 --- code/game/objects/items/weapons/storage/backpack.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index 5bae7ddf7ee..0110a6ac2cf 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -71,7 +71,7 @@ return 0 /obj/item/weapon/storage/backpack/holding/handle_item_insertion(obj/item/W, prevent_warning = 0, mob/user) - if((istype(W, /obj/item/weapon/storage/backpack/holding) || count_by_type(GetAllContents(W), /obj/item/weapon/storage/backpack/holding)) && !W.crit_fail) + if((istype(W, /obj/item/weapon/storage/backpack/holding) || count_by_type(W.GetAllContents(), /obj/item/weapon/storage/backpack/holding)) && !W.crit_fail) var/safety = alert(user, "Doing this will have extremely dire consequences for the station and its crew. Be sure you know what you're doing.", "Put in [name]?", "Proceed", "Abort") if(safety == "Abort" || !in_range(src, user) || !src || !W || user.incapacitated()) return From 41aec098b171185905461e31b32cb5784d698e51 Mon Sep 17 00:00:00 2001 From: Nerd Lord Date: Wed, 27 Apr 2016 16:13:09 -0400 Subject: [PATCH 207/265] Adds plant DNA machine to Dreamstation --- _maps/map_files/DreamStation/dreamstation04.dmm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/_maps/map_files/DreamStation/dreamstation04.dmm b/_maps/map_files/DreamStation/dreamstation04.dmm index 07aafa41947..2d22f7cbc31 100644 --- a/_maps/map_files/DreamStation/dreamstation04.dmm +++ b/_maps/map_files/DreamStation/dreamstation04.dmm @@ -33696,10 +33696,7 @@ /turf/open/floor/plasteel/hydrofloor, /area/hydroponics) "bog" = ( -/obj/structure/table, -/obj/item/weapon/reagent_containers/spray/plantbgone, -/obj/item/weapon/reagent_containers/spray/plantbgone, -/obj/item/weapon/reagent_containers/spray/plantbgone, +/obj/machinery/plantgenes, /turf/open/floor/plasteel/hydrofloor, /area/hydroponics) "boh" = ( @@ -77759,6 +77756,9 @@ /obj/machinery/light/small{ dir = 1 }, +/obj/item/weapon/reagent_containers/spray/plantbgone, +/obj/item/weapon/reagent_containers/spray/plantbgone, +/obj/item/weapon/reagent_containers/spray/plantbgone, /turf/open/floor/plasteel/hydrofloor, /area/hydroponics) "cRD" = ( From 1ad3b440ff10455f113dad9b1c0647e715a1089e Mon Sep 17 00:00:00 2001 From: Shadowlight213 Date: Wed, 27 Apr 2016 14:04:45 -0700 Subject: [PATCH 208/265] Adds var to disable Tick checking in the MC for subsystems. --- code/controllers/subsystem.dm | 1 + code/controllers/subsystem/air.dm | 14 +++++++------- code/controllers/subsystem/diseases.dm | 2 +- code/controllers/subsystem/events.dm | 2 +- code/controllers/subsystem/fastprocess.dm | 2 +- code/controllers/subsystem/garbage.dm | 4 ++-- code/controllers/subsystem/icon_smooth.dm | 2 +- code/controllers/subsystem/lighting.dm | 4 ++-- code/controllers/subsystem/machines.dm | 2 +- code/controllers/subsystem/mobs.dm | 2 +- code/controllers/subsystem/objects.dm | 2 +- 11 files changed, 19 insertions(+), 18 deletions(-) diff --git a/code/controllers/subsystem.dm b/code/controllers/subsystem.dm index 67bcb6566ee..444c8e826df 100644 --- a/code/controllers/subsystem.dm +++ b/code/controllers/subsystem.dm @@ -6,6 +6,7 @@ var/priority = 0 //priority affects order of initialization. Higher priorities are initialized first, lower priorities later. Can be decimal and negative values. var/wait = 20 //time to wait (in deciseconds) between each call to fire(). Must be a positive integer. var/display = 100 //display affects order the subsystem is displayed in the MC tab + var/McTickCheck = 1 // Dynamic Wait // A system for scaling a subsystem's fire rate based on lag. diff --git a/code/controllers/subsystem/air.dm b/code/controllers/subsystem/air.dm index 6efb4ca6e40..12bce4e3029 100644 --- a/code/controllers/subsystem/air.dm +++ b/code/controllers/subsystem/air.dm @@ -147,7 +147,7 @@ var/datum/subsystem/air/SSair thing.process() else networks.Remove(thing) - if(MC_TICK_CHECK) + if(MC_TICK_CHECK && McTickCheck) return @@ -162,7 +162,7 @@ var/datum/subsystem/air/SSair currentrun.Cut(1, 2) if(!M || (M.process_atmos(seconds) == PROCESS_KILL)) atmos_machinery.Remove(M) - if(MC_TICK_CHECK) + if(MC_TICK_CHECK && McTickCheck) return @@ -175,7 +175,7 @@ var/datum/subsystem/air/SSair var/turf/T = currentrun[1] currentrun.Cut(1, 2) T.super_conduct() - if(MC_TICK_CHECK) + if(MC_TICK_CHECK && McTickCheck) return /datum/subsystem/air/proc/process_hotspots(resumed = 0) @@ -190,7 +190,7 @@ var/datum/subsystem/air/SSair H.process() else hotspots -= H - if(MC_TICK_CHECK) + if(MC_TICK_CHECK && McTickCheck) return @@ -200,7 +200,7 @@ var/datum/subsystem/air/SSair high_pressure_delta.Cut(1,2) T.high_pressure_movements() T.pressure_difference = 0 - if(MC_TICK_CHECK) + if(MC_TICK_CHECK && McTickCheck) return /datum/subsystem/air/proc/process_active_turfs(resumed = 0) @@ -215,7 +215,7 @@ var/datum/subsystem/air/SSair currentrun.Cut(1, 2) if (T) T.process_cell(fire_count) - if (MC_TICK_CHECK) + if (MC_TICK_CHECK && McTickCheck) return /datum/subsystem/air/proc/process_excited_groups(resumed = 0) @@ -232,7 +232,7 @@ var/datum/subsystem/air/SSair EG.self_breakdown() else if(EG.dismantle_cooldown >= EXCITED_GROUP_DISMANTLE_CYCLES) EG.dismantle() - if (MC_TICK_CHECK) + if (MC_TICK_CHECK && McTickCheck) return diff --git a/code/controllers/subsystem/diseases.dm b/code/controllers/subsystem/diseases.dm index 71a64f45f53..b71d56f5d2d 100644 --- a/code/controllers/subsystem/diseases.dm +++ b/code/controllers/subsystem/diseases.dm @@ -25,5 +25,5 @@ var/datum/subsystem/diseases/SSdisease thing.process() else processing.Remove(thing) - if (MC_TICK_CHECK) + if (MC_TICK_CHECK && McTickCheck) return diff --git a/code/controllers/subsystem/events.dm b/code/controllers/subsystem/events.dm index de4d4bbc86d..81a935cd1ea 100644 --- a/code/controllers/subsystem/events.dm +++ b/code/controllers/subsystem/events.dm @@ -48,7 +48,7 @@ var/datum/subsystem/events/SSevent thing.process() else running.Remove(thing) - if (MC_TICK_CHECK) + if (MC_TICK_CHECK && McTickCheck) return //checks if we should select a random event yet, and reschedules if necessary diff --git a/code/controllers/subsystem/fastprocess.dm b/code/controllers/subsystem/fastprocess.dm index e3f136ac3a0..85983f490d6 100644 --- a/code/controllers/subsystem/fastprocess.dm +++ b/code/controllers/subsystem/fastprocess.dm @@ -33,5 +33,5 @@ var/datum/subsystem/fastprocess/SSfastprocess thing.process(wait) else SSfastprocess.processing -= thing - if (MC_TICK_CHECK) + if (MC_TICK_CHECK && McTickCheck) return diff --git a/code/controllers/subsystem/garbage.dm b/code/controllers/subsystem/garbage.dm index bbc9ac5afde..8b7bc0ea990 100644 --- a/code/controllers/subsystem/garbage.dm +++ b/code/controllers/subsystem/garbage.dm @@ -62,7 +62,7 @@ var/datum/subsystem/garbage_collector/SSgarbage /datum/subsystem/garbage_collector/proc/HandleToBeQueued(time_to_stop) var/list/tobequeued = src.tobequeued while(tobequeued.len && world.timeofday < time_to_stop) - if (MC_TICK_CHECK) + if (MC_TICK_CHECK && McTickCheck) break var/ref = tobequeued[1] Queue(ref) @@ -74,7 +74,7 @@ var/datum/subsystem/garbage_collector/SSgarbage var/time_to_kill = world.time - collection_timeout // Anything qdel() but not GC'd BEFORE this time needs to be manually del() var/list/queue = src.queue while(queue.len && world.timeofday < time_to_stop) - if (MC_TICK_CHECK) + if (MC_TICK_CHECK && McTickCheck) break var/refID = queue[1] if (!refID) diff --git a/code/controllers/subsystem/icon_smooth.dm b/code/controllers/subsystem/icon_smooth.dm index 37d13a710cc..e9ba1d01f71 100644 --- a/code/controllers/subsystem/icon_smooth.dm +++ b/code/controllers/subsystem/icon_smooth.dm @@ -13,7 +13,7 @@ var/datum/subsystem/icon_smooth/SSicon_smooth for(var/atom in smooth_queue) ss_smooth_icon(atom) smooth_queue -= atom - if (MC_TICK_CHECK) + if (MC_TICK_CHECK && McTickCheck) return /datum/subsystem/icon_smooth/Initialize() diff --git a/code/controllers/subsystem/lighting.dm b/code/controllers/subsystem/lighting.dm index dc6dee36d1a..3a447c9ccd1 100644 --- a/code/controllers/subsystem/lighting.dm +++ b/code/controllers/subsystem/lighting.dm @@ -41,7 +41,7 @@ var/datum/subsystem/lighting/SSlighting var/datum/light_source/LS = changed_lights[1] changed_lights.Cut(1, 2) LS.check() - if (MC_TICK_CHECK) + if (MC_TICK_CHECK && McTickCheck) return var/list/changed_turfs = src.changed_turfs @@ -52,7 +52,7 @@ var/datum/subsystem/lighting/SSlighting changed_turfs.Cut(1, 2) if(T.lighting_changed) T.redraw_lighting() - if (MC_TICK_CHECK) + if (MC_TICK_CHECK && McTickCheck) return //same as above except it attempts to shift ALL turfs in the world regardless of lighting_changed status diff --git a/code/controllers/subsystem/machines.dm b/code/controllers/subsystem/machines.dm index 8491da09678..47cd52fc3f2 100644 --- a/code/controllers/subsystem/machines.dm +++ b/code/controllers/subsystem/machines.dm @@ -52,7 +52,7 @@ var/datum/subsystem/machines/SSmachine thing:auto_use_power() //add back the power state else processing.Remove(thing) - if (MC_TICK_CHECK) + if (MC_TICK_CHECK && McTickCheck) return /datum/subsystem/machines/proc/setup_template_powernets(list/cables) diff --git a/code/controllers/subsystem/mobs.dm b/code/controllers/subsystem/mobs.dm index aa7910c0af3..4e458b0a2da 100644 --- a/code/controllers/subsystem/mobs.dm +++ b/code/controllers/subsystem/mobs.dm @@ -30,5 +30,5 @@ var/datum/subsystem/mobs/SSmob M.Life(seconds) else mob_list.Remove(M) - if (MC_TICK_CHECK) + if (MC_TICK_CHECK && McTickCheck) return \ No newline at end of file diff --git a/code/controllers/subsystem/objects.dm b/code/controllers/subsystem/objects.dm index 981724a8d84..7c8576f091c 100644 --- a/code/controllers/subsystem/objects.dm +++ b/code/controllers/subsystem/objects.dm @@ -52,7 +52,7 @@ var/datum/subsystem/objects/SSobj thing.process(wait) else SSobj.processing.Remove(thing) - if (MC_TICK_CHECK) + if (MC_TICK_CHECK && McTickCheck) return for(var/obj/burningobj in SSobj.burning) From 9b251fdf8d54a83339ad8ea0c76d8d6a9b1d5c38 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Wed, 27 Apr 2016 21:09:06 +0000 Subject: [PATCH 209/265] Automatic changelog generation for PR #17046 --- html/changelogs/AutoChangeLog-pr-17046.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-17046.yml diff --git a/html/changelogs/AutoChangeLog-pr-17046.yml b/html/changelogs/AutoChangeLog-pr-17046.yml new file mode 100644 index 00000000000..9236d1cc79d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-17046.yml @@ -0,0 +1,4 @@ +author: PKPenguin321 +delete-after: True +changes: + - rscadd: "The warden's locker now contains krav maga gloves." From 2ad8d4a392e2cb8ac46f17db48037a3da9435ca5 Mon Sep 17 00:00:00 2001 From: phil235 Date: Thu, 28 Apr 2016 00:13:15 +0200 Subject: [PATCH 210/265] * Fixes the holosign_creator's sign counter not going back up when one of its holosign is destroyed. * Fixes the lack of second argument in alien/stun() * Fixes the sleeping alert not being updated properly when a mob asleep is killed then revived. * Fixes timestop effect leaving mobs unable to move forever in some cases. * Fixes teleporter hub and station staying active when the hub's panel is open, despite the hub's open panel sprite looking offline. The Hub and station now use their own iconfile icons/obj/machines/teleporter.dmi (similar what most machines have). * I've moved all mob's status adjustment procs (Stun(), Paralyse(), blur_eyes() adjust_drugginess(), etc...) into specific files (named "status_procs.dm") so they're easier to find. I've added a third argument to stun adjustments procs to ignore the CANSTUN flag. I've also changed the weaken procs to have the ignore_canweaken argument be the third argument, so all status adjustment procs have amount as first arg, updating the mob or not as second, and when necessary an ignore_x as third arg. --- code/game/machinery/teleporter.dm | 16 +- .../objects/items/weapons/holosign_creator.dm | 23 +- code/modules/mob/living/carbon/alien/alien.dm | 8 - .../mob/living/carbon/alien/status_procs.dm | 14 + code/modules/mob/living/carbon/brain/life.dm | 27 -- .../mob/living/carbon/brain/status_procs.dm | 38 +++ .../modules/mob/living/carbon/status_procs.dm | 79 ++++++ code/modules/mob/living/death.dm | 3 +- code/modules/mob/living/life.dm | 4 +- code/modules/mob/living/living.dm | 183 ------------- code/modules/mob/living/silicon/silicon.dm | 36 --- .../mob/living/silicon/status_procs.dm | 52 ++++ .../mob/living/simple_animal/simple_animal.dm | 26 -- .../mob/living/simple_animal/status_procs.dm | 34 +++ code/modules/mob/living/status_procs.dm | 17 ++ code/modules/mob/mob.dm | 134 +-------- code/modules/mob/status_procs.dm | 255 ++++++++++++++++++ .../chemistry/reagents/drug_reagents.dm | 6 +- .../chemistry/reagents/medicine_reagents.dm | 10 +- .../chemistry/reagents/other_reagents.dm | 4 +- .../chemistry/reagents/toxin_reagents.dm | 6 +- .../research/xenobiology/xenobiology.dm | 4 +- icons/obj/machines/teleporter.dmi | Bin 0 -> 23216 bytes icons/obj/stationobjs.dmi | Bin 77764 -> 56706 bytes tgstation.dme | 6 + 25 files changed, 553 insertions(+), 432 deletions(-) create mode 100644 code/modules/mob/living/carbon/alien/status_procs.dm create mode 100644 code/modules/mob/living/carbon/brain/status_procs.dm create mode 100644 code/modules/mob/living/carbon/status_procs.dm create mode 100644 code/modules/mob/living/silicon/status_procs.dm create mode 100644 code/modules/mob/living/simple_animal/status_procs.dm create mode 100644 code/modules/mob/living/status_procs.dm create mode 100644 code/modules/mob/status_procs.dm create mode 100644 icons/obj/machines/teleporter.dmi diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index 27dc7cba695..38c914ecaf5 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -237,7 +237,7 @@ /obj/machinery/teleport name = "teleport" - icon = 'icons/obj/stationobjs.dmi' + icon = 'icons/obj/machines/teleporter.dmi' density = 1 anchored = 1 @@ -297,6 +297,9 @@ /obj/machinery/teleport/hub/attackby(obj/item/W, mob/user, params) if(default_deconstruction_screwdriver(user, "tele-o", "tele0", W)) + if(power_station && power_station.engaged) + power_station.engaged = 0 //hub with panel open is off, so the station must be informed. + update_icon() return if(exchange_parts(user, W)) return @@ -450,9 +453,12 @@ if(stat & (BROKEN|NOPOWER) || !teleporter_hub || !teleporter_console ) return if (teleporter_console.target) - src.engaged = !src.engaged - use_power(5000) - visible_message("Teleporter [engaged ? "" : "dis"]engaged!") + if(teleporter_hub.panel_open || teleporter_hub.stat & (BROKEN|NOPOWER)) + visible_message("The teleporter hub isn't responding.") + else + src.engaged = !src.engaged + use_power(5000) + visible_message("Teleporter [engaged ? "" : "dis"]engaged!") else visible_message("No target detected.") src.engaged = 0 @@ -469,7 +475,7 @@ /obj/machinery/teleport/station/update_icon() if(panel_open) icon_state = "controller-o" - else if(stat & NOPOWER) + else if(stat & (BROKEN|NOPOWER)) icon_state = "controller-p" else icon_state = "controller" diff --git a/code/game/objects/items/weapons/holosign_creator.dm b/code/game/objects/items/weapons/holosign_creator.dm index 4c2288041bb..20b71017747 100644 --- a/code/game/objects/items/weapons/holosign_creator.dm +++ b/code/game/objects/items/weapons/holosign_creator.dm @@ -25,7 +25,6 @@ var/obj/effect/overlay/holograph/H = locate(holosign_type) in T if(H) user << "You use [src] to deactivate [H]." - signs.Remove(H) qdel(H) else if(!is_blocked_turf(T)) //can't put holograms on a tile that has dense stuff @@ -44,8 +43,7 @@ return if(is_blocked_turf(T)) //don't try to sneak dense stuff on our tile during the wait. return - H = new holosign_type(get_turf(target)) - signs += H + H = new holosign_type(get_turf(target), src) user << "You create \a [H] with [src]." else user << "[src] is projecting at max capacity!" @@ -55,10 +53,8 @@ /obj/item/weapon/holosign_creator/attack_self(mob/user) if(signs.len) - var/list/L = signs.Copy() - for(var/sign in L) - qdel(sign) - signs -= sign + for(var/H in signs) + qdel(H) user << "You clear all active holograms." @@ -83,6 +79,19 @@ icon = 'icons/effects/effects.dmi' anchored = 1 var/holo_integrity = 1 + var/obj/item/weapon/holosign_creator/projector + +/obj/effect/overlay/holograph/New(loc, source_projector) + if(source_projector) + projector = source_projector + projector.signs += src + ..() + +/obj/effect/overlay/holograph/Destroy() + if(projector) + projector.signs -= src + projector = null + return ..() /obj/effect/overlay/holograph/attacked_by(obj/item/I, mob/user) ..() diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index f5036aa8c8b..abcf6eb065d 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -137,14 +137,6 @@ if(statpanel("Status")) stat(null, "Intent: [a_intent]") -/mob/living/carbon/alien/Stun(amount) - if(status_flags & CANSTUN) - stunned = max(max(stunned,amount),0) //can't go below 0, getting a low amount of stun doesn't lower your current stun - else - // add some movement delay - move_delay_add = min(move_delay_add + round(amount / 2), 10) // a maximum delay of 10 - return - /mob/living/carbon/alien/getTrail() if(getBruteLoss() < 200) return pick (list("xltrails_1", "xltrails2")) diff --git a/code/modules/mob/living/carbon/alien/status_procs.dm b/code/modules/mob/living/carbon/alien/status_procs.dm new file mode 100644 index 00000000000..065dd0184a8 --- /dev/null +++ b/code/modules/mob/living/carbon/alien/status_procs.dm @@ -0,0 +1,14 @@ +//Here are the procs used to modify status effects of a mob. +//The effects include: stunned, weakened, paralysis, sleeping, resting, jitteriness, dizziness, ear damage, +// eye damage, eye_blind, eye_blurry, druggy, BLIND disability, and NEARSIGHT disability. + +/////////////////////////////////// STUNNED //////////////////////////////////// + +/mob/living/carbon/alien/Stun(amount, updating = 1, ignore_canstun = 0) + if(status_flags & CANSTUN || ignore_canstun) + stunned = max(max(stunned,amount),0) //can't go below 0, getting a low amount of stun doesn't lower your current stun + if(updating) + update_canmove() + else + // add some movement delay + move_delay_add = min(move_delay_add + round(amount / 2), 10) // a maximum delay of 10 diff --git a/code/modules/mob/living/carbon/brain/life.dm b/code/modules/mob/living/carbon/brain/life.dm index f07c18fa13b..1e5454f90ee 100644 --- a/code/modules/mob/living/carbon/brain/life.dm +++ b/code/modules/mob/living/carbon/brain/life.dm @@ -54,33 +54,6 @@ /mob/living/carbon/brain/handle_disabilities() return -/mob/living/carbon/brain/setEarDamage() // no ears to damage or heal - return - -/mob/living/carbon/brain/adjustEarDamage() - return - -/mob/living/carbon/brain/blind_eyes() // no eyes to damage or heal - return - -/mob/living/carbon/brain/blur_eyes() - return - -/mob/living/carbon/brain/adjust_blindness() - return - -/mob/living/carbon/brain/adjust_blurriness() - return - -/mob/living/carbon/brain/set_blindness() - return - -/mob/living/carbon/brain/set_blurriness() - return - -/mob/living/carbon/brain/become_blind() - return - /mob/living/carbon/brain/handle_changeling() return diff --git a/code/modules/mob/living/carbon/brain/status_procs.dm b/code/modules/mob/living/carbon/brain/status_procs.dm new file mode 100644 index 00000000000..dc8ff6ffc1e --- /dev/null +++ b/code/modules/mob/living/carbon/brain/status_procs.dm @@ -0,0 +1,38 @@ +//Here are the procs used to modify status effects of a mob. +//The effects include: stunned, weakened, paralysis, sleeping, resting, jitteriness, dizziness, ear damage, +// eye damage, eye_blind, eye_blurry, druggy, BLIND disability, and NEARSIGHT disability. + +/////////////////////////////////// EAR DAMAGE //////////////////////////////////// + +/mob/living/carbon/brain/adjustEarDamage() + return + +/mob/living/carbon/brain/setEarDamage() // no ears to damage or heal + return + +/////////////////////////////////// EYE_BLIND //////////////////////////////////// + +/mob/living/carbon/brain/blind_eyes() // no eyes to damage or heal + return + +/mob/living/carbon/brain/adjust_blindness() + return + +/mob/living/carbon/brain/set_blindness() + return + +/////////////////////////////////// EYE_BLURRY //////////////////////////////////// + +/mob/living/carbon/brain/blur_eyes() + return + +/mob/living/carbon/brain/adjust_blurriness() + return + +/mob/living/carbon/brain/set_blurriness() + return + +/////////////////////////////////// BLIND DISABILITY //////////////////////////////////// + +/mob/living/carbon/brain/become_blind() + return \ No newline at end of file diff --git a/code/modules/mob/living/carbon/status_procs.dm b/code/modules/mob/living/carbon/status_procs.dm new file mode 100644 index 00000000000..24c9305aa15 --- /dev/null +++ b/code/modules/mob/living/carbon/status_procs.dm @@ -0,0 +1,79 @@ +//Here are the procs used to modify status effects of a mob. +//The effects include: stunned, weakened, paralysis, sleeping, resting, jitteriness, dizziness, ear damage, +// eye damage, eye_blind, eye_blurry, druggy, BLIND disability, and NEARSIGHT disability. + +/mob/living/carbon/damage_eyes(amount) + if(amount>0) + eye_damage = amount + if(eye_damage > 20) + if(eye_damage > 30) + overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, 2) + else + overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, 1) + +/mob/living/carbon/set_eye_damage(amount) + eye_damage = max(amount,0) + if(eye_damage > 20) + if(eye_damage > 30) + overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, 2) + else + overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, 1) + else + clear_fullscreen("eye_damage") + +/mob/living/carbon/adjust_eye_damage(amount) + eye_damage = max(eye_damage+amount, 0) + if(eye_damage > 20) + if(eye_damage > 30) + overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, 2) + else + overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, 1) + else + clear_fullscreen("eye_damage") + +/mob/living/carbon/adjust_drugginess(amount) + var/old_druggy = druggy + if(amount>0) + druggy += amount + if(!old_druggy) + overlay_fullscreen("high", /obj/screen/fullscreen/high) + throw_alert("high", /obj/screen/alert/high) + else if(old_druggy) + druggy = max(druggy+amount, 0) + if(!druggy) + clear_fullscreen("high") + clear_alert("high") +/mob/living/carbon/set_drugginess(amount) + var/old_druggy = druggy + druggy = amount + if(amount>0) + if(!old_druggy) + overlay_fullscreen("high", /obj/screen/fullscreen/high) + throw_alert("high", /obj/screen/alert/high) + else if(old_druggy) + clear_fullscreen("high") + clear_alert("high") + + +/mob/living/carbon/cure_blind() + if(disabilities & BLIND) + disabilities &= ~BLIND + adjust_blindness(-1) + return 1 +/mob/living/carbon/become_blind() + if(!(disabilities & BLIND)) + disabilities |= BLIND + blind_eyes(1) + return 1 + +/mob/living/carbon/cure_nearsighted() + if(disabilities & NEARSIGHT) + disabilities &= ~NEARSIGHT + clear_fullscreen("nearsighted") + return 1 + +/mob/living/carbon/become_nearsighted() + if(!(disabilities & NEARSIGHT)) + disabilities |= NEARSIGHT + overlay_fullscreen("nearsighted", /obj/screen/fullscreen/impaired, 1) + return 1 \ No newline at end of file diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm index 18d6cc56f2b..8ea3c4ad91f 100644 --- a/code/modules/mob/living/death.dm +++ b/code/modules/mob/living/death.dm @@ -49,7 +49,8 @@ paralysis = 0 stunned = 0 weakened = 0 - sleeping = 0 + set_drugginess(0) + SetSleeping(0, 0) blind_eyes(1) reset_perspective(null) hide_fullscreens() diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index be63fc849a6..7584716e394 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -86,9 +86,9 @@ if(paralysis) AdjustParalysis(-1) if(stunned) - AdjustStunned(-1) + AdjustStunned(-1, 1, 1) if(weakened) - AdjustWeakened(-1, ignore_canweaken=1) + AdjustWeakened(-1, 1, 1) /mob/living/proc/handle_disabilities() //Eyes diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 64351823b7c..e33323c786a 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -429,18 +429,6 @@ Sorry Giacom. Please don't be mad :( var/obj/item/organ/limb/def_zone = ran_zone(t) return def_zone -//damage/heal the mob ears and adjust the deaf amount -/mob/living/adjustEarDamage(damage, deaf) - ear_damage = max(0, ear_damage + damage) - ear_deaf = max(0, ear_deaf + deaf) - -//pass a negative argument to skip one of the variable -/mob/living/setEarDamage(damage, deaf) - if(damage >= 0) - ear_damage = damage - if(deaf >= 0) - ear_deaf = deaf - // heal ONE external organ, organ gets randomly selected from damaged ones. /mob/living/proc/heal_organ_damage(brute, burn, updating_health=1) adjustBruteLoss(-brute, updating_health) @@ -998,174 +986,3 @@ Sorry Giacom. Please don't be mad :( /mob/proc/update_sight() return - -/mob/proc/blind_eyes(amount) - if(amount>0) - var/old_eye_blind = eye_blind - eye_blind = max(eye_blind, amount) - if(!old_eye_blind) - throw_alert("blind", /obj/screen/alert/blind) - overlay_fullscreen("blind", /obj/screen/fullscreen/blind) - -/mob/proc/adjust_blindness(amount) - if(amount>0) - var/old_eye_blind = eye_blind - eye_blind += amount - if(!old_eye_blind) - throw_alert("blind", /obj/screen/alert/blind) - overlay_fullscreen("blind", /obj/screen/fullscreen/blind) - else if(eye_blind) - var/blind_minimum = 0 - if(stat != CONSCIOUS || (disabilities & BLIND)) - blind_minimum = 1 - eye_blind = max(eye_blind+amount, blind_minimum) - if(!eye_blind) - clear_alert("blind") - clear_fullscreen("blind") - -/mob/proc/set_blindness(amount) - if(amount>0) - var/old_eye_blind = eye_blind - eye_blind = amount - if(client && !old_eye_blind) - throw_alert("blind", /obj/screen/alert/blind) - overlay_fullscreen("blind", /obj/screen/fullscreen/blind) - else if(eye_blind) - var/blind_minimum = 0 - if(stat != CONSCIOUS || (disabilities & BLIND)) - blind_minimum = 1 - eye_blind = blind_minimum - if(!eye_blind) - clear_alert("blind") - clear_fullscreen("blind") - -/mob/proc/blur_eyes(amount) - if(amount>0) - var/old_eye_blurry = eye_blurry - eye_blurry = max(amount, eye_blurry) - if(!old_eye_blurry) - overlay_fullscreen("blurry", /obj/screen/fullscreen/blurry) - -/mob/proc/adjust_blurriness(amount) - var/old_eye_blurry = eye_blurry - eye_blurry = max(eye_blurry+amount, 0) - if(amount>0) - if(!old_eye_blurry) - overlay_fullscreen("blurry", /obj/screen/fullscreen/blurry) - else if(old_eye_blurry && !eye_blurry) - clear_fullscreen("blurry") - -/mob/proc/set_blurriness(amount) - var/old_eye_blurry = eye_blurry - eye_blurry = max(amount, 0) - if(amount>0) - if(!old_eye_blurry) - overlay_fullscreen("blurry", /obj/screen/fullscreen/blurry) - else if(old_eye_blurry) - clear_fullscreen("blurry") - - -/mob/proc/damage_eyes(amount) - return - -/mob/living/carbon/damage_eyes(amount) - if(amount>0) - eye_damage = amount - if(eye_damage > 20) - if(eye_damage > 30) - overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, 2) - else - overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, 1) - - -/mob/proc/set_eye_damage(amount) - return - -/mob/living/carbon/set_eye_damage(amount) - eye_damage = max(amount,0) - if(eye_damage > 20) - if(eye_damage > 30) - overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, 2) - else - overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, 1) - else - clear_fullscreen("eye_damage") - -/mob/proc/adjust_eye_damage(amount) - return - -/mob/living/carbon/adjust_eye_damage(amount) - eye_damage = max(eye_damage+amount, 0) - if(eye_damage > 20) - if(eye_damage > 30) - overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, 2) - else - overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, 1) - else - clear_fullscreen("eye_damage") - -/mob/proc/adjust_drugginess(amount) - return - -/mob/living/carbon/adjust_drugginess(amount) - var/old_druggy = druggy - if(amount>0) - druggy += amount - if(!old_druggy) - overlay_fullscreen("high", /obj/screen/fullscreen/high) - throw_alert("high", /obj/screen/alert/high) - else if(old_druggy) - druggy = max(druggy+amount, 0) - if(!druggy) - clear_fullscreen("high") - clear_alert("high") - -/mob/proc/set_drugginess(amount) - return - -/mob/living/carbon/set_drugginess(amount) - var/old_druggy = druggy - druggy = amount - if(amount>0) - if(!old_druggy) - overlay_fullscreen("high", /obj/screen/fullscreen/high) - throw_alert("high", /obj/screen/alert/high) - else if(old_druggy) - clear_fullscreen("high") - clear_alert("high") - -/mob/proc/cure_blind() //when we want to cure the BLIND disability only. - return - -/mob/living/carbon/cure_blind() - if(disabilities & BLIND) - disabilities &= ~BLIND - adjust_blindness(-1) - return 1 - -/mob/proc/cure_nearsighted() - return - -/mob/living/carbon/cure_nearsighted() - if(disabilities & NEARSIGHT) - disabilities &= ~NEARSIGHT - clear_fullscreen("nearsighted") - return 1 - -/mob/proc/become_nearsighted() - return - -/mob/living/carbon/become_nearsighted() - if(!(disabilities & NEARSIGHT)) - disabilities |= NEARSIGHT - overlay_fullscreen("nearsighted", /obj/screen/fullscreen/impaired, 1) - return 1 - -/mob/proc/become_blind() - return - -/mob/living/carbon/become_blind() - if(!(disabilities & BLIND)) - disabilities |= BLIND - blind_eyes(1) - return 1 diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index f25becac68c..c8dd62d7c63 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -457,12 +457,6 @@ "[M] punches [src], but doesn't leave a dent.") return 0 -/mob/living/silicon/adjustEarDamage() - return - -/mob/living/silicon/setEarDamage() - return - /mob/living/silicon/proc/GetPhoto() if (aicamera) return aicamera.selectpicture(aicamera) @@ -489,33 +483,3 @@ animate(src, transform = ntransform, time = 2,easing = EASE_IN|EASE_OUT) return ..() - -/mob/living/silicon/Stun(amount) - if(status_flags & CANSTUN) - stunned = max(max(stunned,amount),0) //can't go below 0, getting a low amount of stun doesn't lower your current stun - update_stat() - -/mob/living/silicon/SetStunned(amount) //if you REALLY need to set stun to a set amount without the whole "can't go below current stunned" - if(status_flags & CANSTUN) - stunned = max(amount,0) - update_stat() - -/mob/living/silicon/AdjustStunned(amount) - if(status_flags & CANSTUN) - stunned = max(stunned + amount,0) - update_stat() - -/mob/living/silicon/Weaken(amount, ignore_canweaken = 0) - if(status_flags & CANWEAKEN || ignore_canweaken) - weakened = max(max(weakened,amount),0) - update_stat() - -/mob/living/silicon/SetWeakened(amount) - if(status_flags & CANWEAKEN) - weakened = max(amount,0) - update_stat() - -/mob/living/silicon/AdjustWeakened(amount, ignore_canweaken = 0) - if(status_flags & CANWEAKEN || ignore_canweaken) - weakened = max(weakened + amount,0) - update_stat() diff --git a/code/modules/mob/living/silicon/status_procs.dm b/code/modules/mob/living/silicon/status_procs.dm new file mode 100644 index 00000000000..b3e0a088f36 --- /dev/null +++ b/code/modules/mob/living/silicon/status_procs.dm @@ -0,0 +1,52 @@ + +//Here are the procs used to modify status effects of a mob. +//The effects include: stunned, weakened, paralysis, sleeping, resting, jitteriness, dizziness, ear damage, +// eye damage, eye_blind, eye_blurry, druggy, BLIND disability, and NEARSIGHT disability. + +/////////////////////////////////// STUNNED //////////////////////////////////// + +/mob/living/silicon/Stun(amount, updating = 1, ignore_canstun = 0) + if(status_flags & CANSTUN || ignore_canstun) + stunned = max(max(stunned,amount),0) //can't go below 0, getting a low amount of stun doesn't lower your current stun + if(updating) + update_stat() + +/mob/living/silicon/AdjustStunned(amount, updating = 1, ignore_canstun = 0) + if(status_flags & CANSTUN || ignore_canstun) + stunned = max(stunned + amount,0) + if(updating) + update_stat() + +/mob/living/silicon/SetStunned(amount, updating = 1, ignore_canstun = 0) //if you REALLY need to set stun to a set amount without the whole "can't go below current stunned" + if(status_flags & CANSTUN || ignore_canstun) + stunned = max(amount,0) + if(updating) + update_stat() + +/////////////////////////////////// WEAKENED //////////////////////////////////// + +/mob/living/silicon/Weaken(amount, updating = 1, ignore_canweaken = 0) + if(status_flags & CANWEAKEN || ignore_canweaken) + weakened = max(max(weakened,amount),0) + if(updating) + update_stat() + +/mob/living/silicon/AdjustWeakened(amount, updating = 1, ignore_canweaken = 0) + if(status_flags & CANWEAKEN || ignore_canweaken) + weakened = max(weakened + amount,0) + if(updating) + update_stat() + +/mob/living/silicon/SetWeakened(amount, updating = 1, ignore_canweaken = 0) + if(status_flags & CANWEAKEN || ignore_canweaken) + weakened = max(amount,0) + if(updating) + update_stat() + +/////////////////////////////////// EAR DAMAGE //////////////////////////////////// + +/mob/living/silicon/adjustEarDamage() + return + +/mob/living/silicon/setEarDamage() + return \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 02de34f15cd..87ff3e831d1 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -111,32 +111,6 @@ else stat = CONSCIOUS -/mob/living/simple_animal/blind_eyes() - return - -/mob/living/simple_animal/blur_eyes() - return - -/mob/living/simple_animal/adjust_blindness() - return - -/mob/living/simple_animal/adjust_blurriness() - return - -/mob/living/simple_animal/set_blindness() - return - -/mob/living/simple_animal/set_blurriness() - return - -/mob/living/simple_animal/become_blind() - return - -/mob/living/simple_animal/setEarDamage() - return - -/mob/living/simple_animal/adjustEarDamage() - return /mob/living/simple_animal/handle_status_effects() ..() diff --git a/code/modules/mob/living/simple_animal/status_procs.dm b/code/modules/mob/living/simple_animal/status_procs.dm new file mode 100644 index 00000000000..fd90f825a3e --- /dev/null +++ b/code/modules/mob/living/simple_animal/status_procs.dm @@ -0,0 +1,34 @@ + +/mob/living/simple_animal/blind_eyes() + return + +/mob/living/simple_animal/adjust_blindness() + return + +/mob/living/simple_animal/set_blindness() + return + + + +/mob/living/simple_animal/blur_eyes() + return + +/mob/living/simple_animal/adjust_blurriness() + return + +/mob/living/simple_animal/set_blurriness() + return + + + +/mob/living/simple_animal/become_blind() + return + + + +/mob/living/simple_animal/adjustEarDamage() + return + +/mob/living/simple_animal/setEarDamage() + return + diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm new file mode 100644 index 00000000000..44c96f7f216 --- /dev/null +++ b/code/modules/mob/living/status_procs.dm @@ -0,0 +1,17 @@ +//Here are the procs used to modify status effects of a mob. +//The effects include: stunned, weakened, paralysis, sleeping, resting, jitteriness, dizziness, ear damage, +// eye damage, eye_blind, eye_blurry, druggy, BLIND disability, and NEARSIGHT disability. + +/////////////////////////////////// EAR DAMAGE //////////////////////////////////// + +//damage/heal the mob ears and adjust the deaf amount +/mob/living/adjustEarDamage(damage, deaf) + ear_damage = max(0, ear_damage + damage) + ear_deaf = max(0, ear_deaf + deaf) + +//pass a negative argument to skip one of the variable +/mob/living/setEarDamage(damage, deaf) + if(damage >= 0) + ear_damage = damage + if(deaf >= 0) + ear_deaf = deaf \ No newline at end of file diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index f8b1446ae7a..9dc7376d4e6 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -753,120 +753,6 @@ var/next_mob_id = 0 /mob/proc/activate_hand(selhand) return -/mob/proc/Jitter(amount) - jitteriness = max(jitteriness,amount,0) - -/mob/proc/Dizzy(amount) - dizziness = max(dizziness,amount,0) - -/mob/proc/Stun(amount, updating_canmove = 1) - if(status_flags & CANSTUN) - stunned = max(max(stunned,amount),0) //can't go below 0, getting a low amount of stun doesn't lower your current stun - if(updating_canmove) - update_canmove() - -/mob/proc/SetStunned(amount, updating_canmove = 1) //if you REALLY need to set stun to a set amount without the whole "can't go below current stunned" - if(status_flags & CANSTUN) - stunned = max(amount,0) - if(updating_canmove) - update_canmove() - -/mob/proc/AdjustStunned(amount, updating_canmove = 1) - if(status_flags & CANSTUN) - stunned = max(stunned + amount,0) - if(updating_canmove) - update_canmove() - -/mob/proc/Weaken(amount, ignore_canweaken = 0, updating_canmove = 1) - if((status_flags & CANWEAKEN) || ignore_canweaken) - weakened = max(max(weakened,amount),0) - if(updating_canmove) - update_canmove() //updates lying, canmove and icons - -/mob/proc/SetWeakened(amount, updating_canmove = 1) - if(status_flags & CANWEAKEN) - weakened = max(amount,0) - if(updating_canmove) - update_canmove() //updates lying, canmove and icons - -/mob/proc/AdjustWeakened(amount, ignore_canweaken = 0, updating_canmove = 1) - if((status_flags & CANWEAKEN) || ignore_canweaken) - weakened = max(weakened + amount,0) - if(updating_canmove) - update_canmove() //updates lying, canmove and icons - -/mob/proc/Paralyse(amount, updating_stat = 1) - if(status_flags & CANPARALYSE) - var/old_paralysis = paralysis - paralysis = max(max(paralysis,amount),0) - if((!old_paralysis && paralysis) || (old_paralysis && !paralysis)) - if(updating_stat) - update_stat() - -/mob/proc/SetParalysis(amount, updating_stat = 1) - if(status_flags & CANPARALYSE) - var/old_paralysis = paralysis - paralysis = max(amount,0) - if((!old_paralysis && paralysis) || (old_paralysis && !paralysis)) - if(updating_stat) - update_stat() - -/mob/proc/AdjustParalysis(amount, updating_stat = 1) - if(status_flags & CANPARALYSE) - var/old_paralysis = paralysis - paralysis = max(paralysis + amount,0) - if((!old_paralysis && paralysis) || (old_paralysis && !paralysis)) - if(updating_stat) - update_stat() - -/mob/proc/Sleeping(amount, updating_stat = 1) - var/old_sleeping = sleeping - sleeping = max(max(sleeping,amount),0) - if(!old_sleeping && sleeping) - throw_alert("asleep", /obj/screen/alert/asleep) - if(updating_stat) - update_stat() - else if(old_sleeping && !sleeping) - clear_alert("asleep") - if(updating_stat) - update_stat() - -/mob/proc/SetSleeping(amount, updating_stat = 1) - var/old_sleeping = sleeping - sleeping = max(amount,0) - if(!old_sleeping && sleeping) - throw_alert("asleep", /obj/screen/alert/asleep) - if(updating_stat) - update_stat() - else if(old_sleeping && !sleeping) - clear_alert("asleep") - if(updating_stat) - update_stat() - -/mob/proc/AdjustSleeping(amount, updating_stat = 1) - var/old_sleeping = sleeping - sleeping = max(sleeping + amount,0) - if(!old_sleeping && sleeping) - throw_alert("asleep", /obj/screen/alert/asleep) - if(updating_stat) - update_stat() - else if(old_sleeping && !sleeping) - clear_alert("asleep") - if(updating_stat) - update_stat() - -/mob/proc/Resting(amount) - resting = max(max(resting,amount),0) - update_canmove() - -/mob/proc/SetResting(amount) - resting = max(amount,0) - update_canmove() - -/mob/proc/AdjustResting(amount) - resting = max(resting + amount,0) - update_canmove() - /mob/proc/assess_threat() //For sec bot threat assessment return @@ -884,14 +770,6 @@ var/next_mob_id = 0 ghost.notify_cloning(message, sound, source) return ghost - - -/mob/proc/adjustEarDamage() - return - -/mob/proc/setEarDamage() - return - /mob/proc/AddSpell(obj/effect/proc_holder/spell/S) mob_spell_list += S S.action.Grant(src) @@ -1054,3 +932,15 @@ var/next_mob_id = 0 updatehealth() if("resize") update_transform() + + + +/mob/living/carbon/alien/adjustToxLoss(amount) + return + +/mob/living/carbon/alien/adjustFireLoss(amount) // Weak to Fire + if(amount > 0) + ..(amount * 2) + else + ..(amount) + return \ No newline at end of file diff --git a/code/modules/mob/status_procs.dm b/code/modules/mob/status_procs.dm new file mode 100644 index 00000000000..21fae144f2c --- /dev/null +++ b/code/modules/mob/status_procs.dm @@ -0,0 +1,255 @@ + +//Here are the procs used to modify status effects of a mob. +//The effects include: stunned, weakened, paralysis, sleeping, resting, jitteriness, dizziness, ear damage, +// eye damage, eye_blind, eye_blurry, druggy, BLIND disability, and NEARSIGHT disability. + + +/////////////////////////////////// STUNNED //////////////////////////////////// + +/mob/proc/Stun(amount, updating = 1, ignore_canstun = 0) + if(status_flags & CANSTUN || ignore_canstun) + stunned = max(max(stunned,amount),0) //can't go below 0, getting a low amount of stun doesn't lower your current stun + if(updating) + update_canmove() + +/mob/proc/SetStunned(amount, updating = 1, ignore_canstun = 0) //if you REALLY need to set stun to a set amount without the whole "can't go below current stunned" + if(status_flags & CANSTUN || ignore_canstun) + stunned = max(amount,0) + if(updating) + update_canmove() + +/mob/proc/AdjustStunned(amount, updating = 1, ignore_canstun = 0) + if(status_flags & CANSTUN || ignore_canstun) + stunned = max(stunned + amount,0) + if(updating) + update_canmove() + +/////////////////////////////////// WEAKENED //////////////////////////////////// + +/mob/proc/Weaken(amount, updating = 1, ignore_canweaken = 0) + if((status_flags & CANWEAKEN) || ignore_canweaken) + weakened = max(max(weakened,amount),0) + if(updating) + update_canmove() //updates lying, canmove and icons + +/mob/proc/SetWeakened(amount, updating = 1, ignore_canweaken = 0) + if(status_flags & CANWEAKEN) + weakened = max(amount,0) + if(updating) + update_canmove() //updates lying, canmove and icons + +/mob/proc/AdjustWeakened(amount, updating = 1, ignore_canweaken = 0) + if((status_flags & CANWEAKEN) || ignore_canweaken) + weakened = max(weakened + amount,0) + if(updating) + update_canmove() //updates lying, canmove and icons + +/////////////////////////////////// PARALYSIS //////////////////////////////////// + +/mob/proc/Paralyse(amount, updating = 1) + if(status_flags & CANPARALYSE) + var/old_paralysis = paralysis + paralysis = max(max(paralysis,amount),0) + if((!old_paralysis && paralysis) || (old_paralysis && !paralysis)) + if(updating) + update_stat() + +/mob/proc/SetParalysis(amount, updating = 1) + if(status_flags & CANPARALYSE) + var/old_paralysis = paralysis + paralysis = max(amount,0) + if((!old_paralysis && paralysis) || (old_paralysis && !paralysis)) + if(updating) + update_stat() + +/mob/proc/AdjustParalysis(amount, updating = 1) + if(status_flags & CANPARALYSE) + var/old_paralysis = paralysis + paralysis = max(paralysis + amount,0) + if((!old_paralysis && paralysis) || (old_paralysis && !paralysis)) + if(updating) + update_stat() + +/////////////////////////////////// SLEEPING //////////////////////////////////// + +/mob/proc/Sleeping(amount, updating = 1) + var/old_sleeping = sleeping + sleeping = max(max(sleeping,amount),0) + if(!old_sleeping && sleeping) + throw_alert("asleep", /obj/screen/alert/asleep) + if(updating) + update_stat() + else if(old_sleeping && !sleeping) + clear_alert("asleep") + if(updating) + update_stat() + +/mob/proc/SetSleeping(amount, updating = 1) + var/old_sleeping = sleeping + sleeping = max(amount,0) + if(!old_sleeping && sleeping) + throw_alert("asleep", /obj/screen/alert/asleep) + if(updating) + update_stat() + else if(old_sleeping && !sleeping) + clear_alert("asleep") + if(updating) + update_stat() + +/mob/proc/AdjustSleeping(amount, updating = 1) + var/old_sleeping = sleeping + sleeping = max(sleeping + amount,0) + if(!old_sleeping && sleeping) + throw_alert("asleep", /obj/screen/alert/asleep) + if(updating) + update_stat() + else if(old_sleeping && !sleeping) + clear_alert("asleep") + if(updating) + update_stat() + +/////////////////////////////////// RESTING //////////////////////////////////// + +/mob/proc/Resting(amount) + resting = max(max(resting,amount),0) + update_canmove() + +/mob/proc/SetResting(amount) + resting = max(amount,0) + update_canmove() + +/mob/proc/AdjustResting(amount) + resting = max(resting + amount,0) + update_canmove() + +/////////////////////////////////// JITTERINESS //////////////////////////////////// + +/mob/proc/Jitter(amount) + jitteriness = max(jitteriness,amount,0) + +/////////////////////////////////// DIZZINESS //////////////////////////////////// + +/mob/proc/Dizzy(amount) + dizziness = max(dizziness,amount,0) + +/////////////////////////////////// EAR DAMAGE //////////////////////////////////// + +/mob/proc/adjustEarDamage() + return + +/mob/proc/setEarDamage() + return + +/////////////////////////////////// EYE DAMAGE //////////////////////////////////// + +/mob/proc/damage_eyes(amount) + return + +/mob/proc/adjust_eye_damage(amount) + return + +/mob/proc/set_eye_damage(amount) + return + +/////////////////////////////////// EYE_BLIND //////////////////////////////////// + +/mob/proc/blind_eyes(amount) + if(amount>0) + var/old_eye_blind = eye_blind + eye_blind = max(eye_blind, amount) + if(!old_eye_blind) + throw_alert("blind", /obj/screen/alert/blind) + overlay_fullscreen("blind", /obj/screen/fullscreen/blind) + +/mob/proc/adjust_blindness(amount) + if(amount>0) + var/old_eye_blind = eye_blind + eye_blind += amount + if(!old_eye_blind) + throw_alert("blind", /obj/screen/alert/blind) + overlay_fullscreen("blind", /obj/screen/fullscreen/blind) + else if(eye_blind) + var/blind_minimum = 0 + if(stat != CONSCIOUS || (disabilities & BLIND)) + blind_minimum = 1 + eye_blind = max(eye_blind+amount, blind_minimum) + if(!eye_blind) + clear_alert("blind") + clear_fullscreen("blind") + +/mob/proc/set_blindness(amount) + if(amount>0) + var/old_eye_blind = eye_blind + eye_blind = amount + if(client && !old_eye_blind) + throw_alert("blind", /obj/screen/alert/blind) + overlay_fullscreen("blind", /obj/screen/fullscreen/blind) + else if(eye_blind) + var/blind_minimum = 0 + if(stat != CONSCIOUS || (disabilities & BLIND)) + blind_minimum = 1 + eye_blind = blind_minimum + if(!eye_blind) + clear_alert("blind") + clear_fullscreen("blind") + +/////////////////////////////////// EYE_BLURRY //////////////////////////////////// + +/mob/proc/blur_eyes(amount) + if(amount>0) + var/old_eye_blurry = eye_blurry + eye_blurry = max(amount, eye_blurry) + if(!old_eye_blurry) + overlay_fullscreen("blurry", /obj/screen/fullscreen/blurry) + +/mob/proc/adjust_blurriness(amount) + var/old_eye_blurry = eye_blurry + eye_blurry = max(eye_blurry+amount, 0) + if(amount>0) + if(!old_eye_blurry) + overlay_fullscreen("blurry", /obj/screen/fullscreen/blurry) + else if(old_eye_blurry && !eye_blurry) + clear_fullscreen("blurry") + +/mob/proc/set_blurriness(amount) + var/old_eye_blurry = eye_blurry + eye_blurry = max(amount, 0) + if(amount>0) + if(!old_eye_blurry) + overlay_fullscreen("blurry", /obj/screen/fullscreen/blurry) + else if(old_eye_blurry) + clear_fullscreen("blurry") + +/////////////////////////////////// DRUGGY //////////////////////////////////// + +/mob/proc/adjust_drugginess(amount) + return + +/mob/proc/set_drugginess(amount) + return + +/////////////////////////////////// BLIND DISABILITY //////////////////////////////////// + +/mob/proc/cure_blind() //when we want to cure the BLIND disability only. + return + +/mob/proc/become_blind() + return + +/////////////////////////////////// NEARSIGHT DISABILITY //////////////////////////////////// + +/mob/proc/cure_nearsighted() + return + +/mob/proc/become_nearsighted() + return + + + + + + + + + + diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm index 9e4c3901184..6e54b0a4329 100644 --- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm @@ -62,7 +62,7 @@ M << "[high_message]" M.AdjustParalysis(-1, 0) M.AdjustStunned(-1, 0) - M.AdjustWeakened(-1, 0, 0) + M.AdjustWeakened(-1, 0) ..() . = 1 @@ -160,7 +160,7 @@ M << "[high_message]" M.AdjustParalysis(-2, 0) M.AdjustStunned(-2, 0) - M.AdjustWeakened(-2, 0, 0) + M.AdjustWeakened(-2, 0) M.adjustStaminaLoss(-2, 0) M.status_flags |= GOTTAGOREALLYFAST M.Jitter(2) @@ -237,7 +237,7 @@ M << "[high_message]" M.AdjustParalysis(-3, 0) M.AdjustStunned(-3, 0) - M.AdjustWeakened(-3, 0, 0) + M.AdjustWeakened(-3, 0) M.adjustStaminaLoss(-5, 0) M.adjustBrainLoss(0.5) M.adjustToxLoss(0.1, 0) diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 2bed2f7f973..6b821adc2f7 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -80,7 +80,7 @@ M.drowsyness = max(M.drowsyness-5, 0) M.AdjustParalysis(-1, 0) M.AdjustStunned(-1, 0) - M.AdjustWeakened(-1, 0, 0) + M.AdjustWeakened(-1, 0) if(holder.has_reagent("mindbreaker")) holder.remove_reagent("mindbreaker", 5) M.hallucination = max(0, M.hallucination - 10) @@ -493,7 +493,7 @@ M.status_flags |= GOTTAGOFAST M.AdjustParalysis(-1, 0) M.AdjustStunned(-1, 0) - M.AdjustWeakened(-1, 0, 0) + M.AdjustWeakened(-1, 0) M.adjustStaminaLoss(-1*REM, 0) ..() . = 1 @@ -703,7 +703,7 @@ if(prob(20)) M.AdjustParalysis(-1, 0) M.AdjustStunned(-1, 0) - M.AdjustWeakened(-1, 0, 0) + M.AdjustWeakened(-1, 0) ..() /datum/reagent/medicine/epinephrine/overdose_process(mob/living/M) @@ -807,7 +807,7 @@ M.adjustFireLoss(-1*REM, 0) M.AdjustParalysis(-3, 0) M.AdjustStunned(-3, 0) - M.AdjustWeakened(-3, 0, 0) + M.AdjustWeakened(-3, 0) M.adjustStaminaLoss(-5*REM, 0) ..() . = 1 @@ -1036,7 +1036,7 @@ datum/reagent/medicine/syndicate_nanites/on_mob_life(mob/living/M) /datum/reagent/medicine/changelingAdrenaline/on_mob_life(mob/living/M as mob) M.AdjustParalysis(-1, 0) M.AdjustStunned(-1, 0) - M.AdjustWeakened(-1, 0, 0) + M.AdjustWeakened(-1, 0) M.adjustStaminaLoss(-1, 0) . = 1 ..() diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 767f1521cac..9f252c05d82 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -220,7 +220,7 @@ M.drowsyness = max(M.drowsyness-5, 0) M.AdjustParalysis(-2, 0) M.AdjustStunned(-2, 0) - M.AdjustWeakened(-2, 0, 0) + M.AdjustWeakened(-2, 0) else M.adjustToxLoss(2, 0) M.adjustFireLoss(2, 0) @@ -369,7 +369,7 @@ ..() H << "You crumple in agony as your flesh wildly morphs into new forms!" H.visible_message("[H] falls to the ground and screams as their skin bubbles and froths!") //'froths' sounds painful when used with SKIN. - H.Weaken(3, 0, 0) + H.Weaken(3, 0) spawn(30) if(!H || qdeleted(H)) return diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index 26082651ce2..5bfe942374d 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -145,7 +145,7 @@ /datum/reagent/toxin/zombiepowder/on_mob_life(mob/living/carbon/M) M.status_flags |= FAKEDEATH M.adjustOxyLoss(0.5*REM, 0) - M.Weaken(5, 0, 0) + M.Weaken(5, 0) M.silent = max(M.silent, 5) M.tod = worldtime2text() ..() @@ -492,7 +492,7 @@ switch(picked_option) if(1) M.Stun(3, 0) - M.Weaken(3, 0, 0) + M.Weaken(3, 0) . = 1 if(2) M.losebreath += 10 @@ -611,7 +611,7 @@ /datum/reagent/toxin/curare/on_mob_life(mob/living/M) if(current_cycle >= 11) - M.Weaken(3, 0, 0) + M.Weaken(3, 0) M.adjustOxyLoss(1*REM, 0) . = 1 ..() diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index 53568b87ad4..5ac42585665 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -536,7 +536,7 @@ var/mob/living/M = A if(M in immune) continue - M.stunned = 10 + M.Stun(10, 1, 1) M.anchored = 1 if(istype(M, /mob/living/simple_animal/hostile)) var/mob/living/simple_animal/hostile/H = M @@ -566,7 +566,7 @@ /obj/effect/timestop/proc/unfreeze_mob(mob/living/M) - M.stunned = 0 + M.AdjustStunned(-10, 1, 1) M.anchored = 0 if(istype(M, /mob/living/simple_animal/hostile)) var/mob/living/simple_animal/hostile/H = M diff --git a/icons/obj/machines/teleporter.dmi b/icons/obj/machines/teleporter.dmi new file mode 100644 index 0000000000000000000000000000000000000000..1d3c97199b55f56b9555fde6dbbc5b46eedf8953 GIT binary patch literal 23216 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 Bk^cYy literal 0 HcmV?d00001 diff --git a/icons/obj/stationobjs.dmi b/icons/obj/stationobjs.dmi index 94f4ed4e2e87233722192d8b5167c3fe6e9a26e4..15ab4676d5e95a8acb2ce5f30064399569d90e5a 100644 GIT binary patch literal 56706 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 FV1l=R+9d!0 literal 77764 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
    5@w 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 Date: Thu, 28 Apr 2016 00:24:50 +0200 Subject: [PATCH 211/265] derp, copypasta error --- code/modules/mob/mob.dm | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 9dc7376d4e6..f2bcb507b76 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -933,14 +933,3 @@ var/next_mob_id = 0 if("resize") update_transform() - - -/mob/living/carbon/alien/adjustToxLoss(amount) - return - -/mob/living/carbon/alien/adjustFireLoss(amount) // Weak to Fire - if(amount > 0) - ..(amount * 2) - else - ..(amount) - return \ No newline at end of file From bb9c99207d0d028cbb6da485efeddb3162b3ec1f Mon Sep 17 00:00:00 2001 From: phil235 Date: Thu, 28 Apr 2016 00:47:53 +0200 Subject: [PATCH 212/265] Fixes the backpack watertank's water mister spray being equippable on the belt when it shouldn't --- code/game/objects/items/weapons/tanks/watertank.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/objects/items/weapons/tanks/watertank.dm b/code/game/objects/items/weapons/tanks/watertank.dm index 6cf002db034..46391df47eb 100644 --- a/code/game/objects/items/weapons/tanks/watertank.dm +++ b/code/game/objects/items/weapons/tanks/watertank.dm @@ -119,6 +119,7 @@ possible_transfer_amounts = list(25,50,100) volume = 500 flags = NODROP | OPENCONTAINER | NOBLUDGEON + slot_flags = 0 var/obj/item/weapon/watertank/tank From fb93f88fcae390d5cf27e2c4331a116a4e79c22a Mon Sep 17 00:00:00 2001 From: phil235 Date: Thu, 28 Apr 2016 01:45:44 +0200 Subject: [PATCH 213/265] Fixes weird shit happening when clickdragging things from your inventory into a closet to stuff it in. You can now only stuff mobs and items into closet, and you cannot stuff things that are inside something (mostly your inventory). --- .../structures/crates_lockers/closets.dm | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index a1e5baf8450..9dad7dabba2 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -266,13 +266,19 @@ return if(user == O) //try to climb onto it return ..() - if(!opened || istype(O, /obj/structure/closet)) + if(!opened) + return + if(!isturf(O.loc)) return + var/actuallyismob = 0 + if(isliving(O)) + actuallyismob = 1 + else if(!istype(O, /obj/item)) + return + var/turf/T = get_turf(src) var/list/targets = list(O, src) add_fingerprint(user) - var/mob/living/L = O - var/actuallyismob = istype(L) user.visible_message("[user] [actuallyismob ? "tries to ":""]stuff [O] into [src].", \ "You [actuallyismob ? "try to ":""]stuff [O] into [src].", \ "You hear clanging.") @@ -281,12 +287,13 @@ user.visible_message("[user] stuffs [O] into [src].", \ "You stuff [O] into [src].", \ "You hear a loud metal bang.") + var/mob/living/L = O if(!issilicon(L)) L.Weaken(2) - O.forceMove(get_turf(src)) + O.forceMove(T) close() else - O.forceMove(get_turf(src)) + O.forceMove(T) return 1 /obj/structure/closet/relaymove(mob/user) From a7a32f3d69769c9811e6d306dd0225b38bab34cc Mon Sep 17 00:00:00 2001 From: Kyle Spier-Swenson Date: Wed, 27 Apr 2016 17:09:42 -0700 Subject: [PATCH 214/265] Fixes the mc not running paused dwait systems properly Basically, when atmos (or another dwait subsystem) pauses as it runs to the end of a tick, its suppose to be ran again next mc tick as long as nothing else needs to run. (non-dwait subsystems run next tick regardless, rather than checking for other subsystems first) The issue is the mc won't run it again, because it was ran less then 75% of SS.wait ago. (a safety I added to prevent lag compounding from trying to make up missed ticks caused by, back in august) This fixes that, and fixes another issue where if say atmos takes 3ds to process everything, it's next process would be in 5 ds, not 2 ds like it's suppose to be. --- code/controllers/master.dm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/code/controllers/master.dm b/code/controllers/master.dm index 89861f4a237..c11c900d04b 100644 --- a/code/controllers/master.dm +++ b/code/controllers/master.dm @@ -162,7 +162,7 @@ var/global/datum/controller/master/Master = new() else priority_queue -= SS if(SS.can_fire > 0) - if(priorityrunning || ((SS.next_fire <= world.time) && (SS.last_fire + (SS.wait * 0.75) <= world.time))) + if(priorityrunning || ((SS.next_fire <= world.time) && (SS.last_fire + (SS.wait * 0.75) <= world.time || SS.paused))) if(!priorityrunning && (world.tick_usage + SS.tick_usage > TICK_LIMIT_TO_RUN) && (SS.last_fire + (SS.wait*1.25) > world.time)) if(!SS.dynamic_wait) priority_queue += SS @@ -174,7 +174,8 @@ var/global/datum/controller/master/Master = new() ran_subsystems = 1 timer = world.timeofday last_type_processed = SS.type - SS.last_fire = world.time + if (!paused) //only set this when we aren't resuming + SS.last_fire = world.time var/tick_usage = world.tick_usage SS.fire(paused) // Fire the subsystem @@ -198,7 +199,7 @@ var/global/datum/controller/master/Master = new() if(SS.paused) SS.next_fire = world.time //run it next tick if we can, but don't priority queue it, as we are a dynamic wait subsystem else //not paused, it ran all the way thru, normal wait time - SS.next_fire = world.time + SS.wait + SS.next_fire = SS.last_fire + SS.wait //we use last_fire so that its next fire is based off when it started this fire, not when it finished. else if(!paused) SS.next_fire += SS.wait From 60650b82a59b3a9e8685154338446aba3c39e026 Mon Sep 17 00:00:00 2001 From: Kyle Spier-Swenson Date: Wed, 27 Apr 2016 17:13:46 -0700 Subject: [PATCH 215/265] I should also add the check to here. --- code/controllers/master.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/controllers/master.dm b/code/controllers/master.dm index c11c900d04b..424ddf8f9c8 100644 --- a/code/controllers/master.dm +++ b/code/controllers/master.dm @@ -163,13 +163,13 @@ var/global/datum/controller/master/Master = new() priority_queue -= SS if(SS.can_fire > 0) if(priorityrunning || ((SS.next_fire <= world.time) && (SS.last_fire + (SS.wait * 0.75) <= world.time || SS.paused))) - if(!priorityrunning && (world.tick_usage + SS.tick_usage > TICK_LIMIT_TO_RUN) && (SS.last_fire + (SS.wait*1.25) > world.time)) - if(!SS.dynamic_wait) - priority_queue += SS - continue //we can't reset SS.paused after we fire, incase it pauses again, so we cache it and // send it to SS.fire() var/paused = SS.paused + if(!priorityrunning && !paused && (world.tick_usage + SS.tick_usage > TICK_LIMIT_TO_RUN) && (SS.last_fire + (SS.wait*1.25) > world.time)) + if(!SS.dynamic_wait) + priority_queue += SS + continue SS.paused = 0 ran_subsystems = 1 timer = world.timeofday From 442c952a6c86bb03c51f145c984ce456b5a91eea Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Thu, 28 Apr 2016 00:23:23 +0000 Subject: [PATCH 216/265] Automatic changelog generation for PR #17108 --- html/changelogs/AutoChangeLog-pr-17108.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-17108.yml diff --git a/html/changelogs/AutoChangeLog-pr-17108.yml b/html/changelogs/AutoChangeLog-pr-17108.yml new file mode 100644 index 00000000000..05fe6b2d3d5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-17108.yml @@ -0,0 +1,6 @@ +author: Bawhoppen +delete-after: True +changes: + - tweak: "Sandbags are no longer tablecrafted. Now you just put in sand (or ash) by hand to make them." + - rscadd: "Miners and Engis now get boxes of empty sandbags in their lockers. Miners also get a few premade aswell." + - rscadd: "You can now break sandstone down into normal sand." From 6bf0eae164c9341e52833fa7bb547f959bbde658 Mon Sep 17 00:00:00 2001 From: sybil-tgstation13 Date: Thu, 28 Apr 2016 01:09:14 +0000 Subject: [PATCH 217/265] Automatic changelog compile --- html/changelog.html | 39 ++++++++++++++++++++++ html/changelogs/.all_changelog.yml | 38 +++++++++++++++++++++ html/changelogs/AutoChangeLog-pr-17046.yml | 4 --- html/changelogs/AutoChangeLog-pr-17108.yml | 6 ---- html/changelogs/AutoChangeLog-pr-17128.yml | 22 ------------ html/changelogs/AutoChangeLog-pr-17140.yml | 4 --- html/changelogs/AutoChangeLog-pr-17147.yml | 4 --- 7 files changed, 77 insertions(+), 40 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-17046.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-17108.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-17128.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-17140.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-17147.yml diff --git a/html/changelog.html b/html/changelog.html index fa953c8023b..93b26f694c5 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -55,6 +55,45 @@ -->
    +

    28 April 2016

    +

    Bawhoppen updated:

    +
      +
    • Sandbags are no longer tablecrafted. Now you just put in sand (or ash) by hand to make them.
    • +
    • Miners and Engis now get boxes of empty sandbags in their lockers. Miners also get a few premade aswell.
    • +
    • You can now break sandstone down into normal sand.
    • +
    +

    Joan updated:

    +
      +
    • Attacking a blob with an analyzer will tell you what its chemical does, its health, and a small fact about the blob analyzed.
    • +
    • NERFS:
    • +
    • Zombifying Feelers does less toxin damage.
    • +
    • Adaptive Nexuses does slightly less brute damage.
    • +
    • Replicating Foam does slightly less brute damage.
    • +
    • Blob Sorium does slightly less brute damage.
    • +
    • Blob Dark Matter does slightly less brute damage.
    • +
    • Cyrogenic Liquid injects slightly less frost oil and ice and does slightly less stamina damage.
    • +
    • Pressurized Slime does less brute, oxygen, and stamina damage, and extinguishes objects and people on turfs it wets.
    • +
    • Blob core strong blobs no longer give points when removed.
    • +
    • PROBABLY BUFFS:
    • +
    • Flammable Goo now does slightly more burn damage and applies more firestacks, but applies fire to blob tiles that don't share its chemical.
    • +
    • Energized Fibers does slightly more burn damage, slightly less stamina damage, and now takes damage from EMPs.
    • +
    • BUFFS:
    • +
    • Boiling Oil does slightly more burn damage and applies more firestacks.
    • +
    • Reactive Gelatin does slightly more damage on average.
    • +
    • Penetrating Spines now also ignores bio resistance in addition to armor.
    • +
    • Hallucinogenic Nectar causes more hallucinations.
    • +
    • Normal strong blobs now refund 4 points when removed, from 2.
    • +
    • Charger holoparasites now play a sound when hitting a target, as well as shaking the target's camera.
    • +
    +

    PKPenguin321 updated:

    +
      +
    • The warden's locker now contains krav maga gloves.
    • +
    +

    TechnoAlchemisto updated:

    +
      +
    • You can now craft skull helmets from bones.
    • +
    +

    27 April 2016

    TechnoAlchemisto updated:

  • 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 literal 8239 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 Nxo%;My?XcYzX1%1A1D9- diff --git a/icons/obj/clothing/gloves.dmi b/icons/obj/clothing/gloves.dmi index 244c3c21aaacca335a33749f85187ba8aec971e5..7eeccc9a159aa21ff36229669925f36b0a4115ae 100644 GIT binary patch literal 12197 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 VOS4|*KnOSJsj{Y0se) Date: Fri, 22 Apr 2016 19:20:59 -0700 Subject: [PATCH 092/265] ROOKIE MISTAKE --- code/modules/mob/living/simple_animal/hostile/mining_mobs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm index d914bc5943b..e3631817bda 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm @@ -635,7 +635,7 @@ stat_attack = 1 robust_searching = 1 loot = list() - butcher_results = list(/obj/item/weapon/ore/diamond = 2, /obj/item/stack/sheet/sinew = 1, obj/item/stack/sheet/bone = 1) + butcher_results = list(/obj/item/weapon/ore/diamond = 2, /obj/item/stack/sheet/sinew = 1, /obj/item/stack/sheet/bone = 1) //Goliath From 370076a51b1fd50cc6d812fa046e09c28191d75b Mon Sep 17 00:00:00 2001 From: Lularian Date: Sat, 23 Apr 2016 04:05:50 -0500 Subject: [PATCH 093/265] ok --- code/game/objects/items/weapons/storage/uplink_kits.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index 3dc9209938a..21949a40966 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -21,6 +21,7 @@ new /obj/item/device/rad_laser(src) new /obj/item/device/chameleon(src) new /obj/item/weapon/soap/syndie(src) + new /obj/item/clothing/glasses/thermal/syndi(src) return if("bond") @@ -30,6 +31,8 @@ new /obj/item/ammo_box/magazine/m10mm(src) new /obj/item/clothing/under/chameleon(src) new /obj/item/weapon/card/id/syndicate(src) + new /obj/item/weapon/reagent_containers/syringe/stimulants(src) + return if("screwed") From 573c5f70b8c2867b8c637fd24332c1cc0588aa80 Mon Sep 17 00:00:00 2001 From: Jack Edge Date: Sat, 23 Apr 2016 13:21:40 +0100 Subject: [PATCH 094/265] Revert "Removed processor explosion chance" This reverts commit 06f34b16342f4b2469ac59befb28aa5a6eb2b3de. --- code/modules/events/processor_overload.dm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/code/modules/events/processor_overload.dm b/code/modules/events/processor_overload.dm index 200bb87c10c..bae9f03d574 100644 --- a/code/modules/events/processor_overload.dm +++ b/code/modules/events/processor_overload.dm @@ -31,6 +31,8 @@ for(var/obj/machinery/telecomms/T in telecomms_list) if(istype(T, /obj/machinery/telecomms/processor)) var/obj/machinery/telecomms/processor/P = T - // Apparently machines very occasionally blowing up due to - // overload is "boring" and "not fun". So just EMP for now. - P.emp_act(1) + // Wow, it overloaded so much that it EXPLODED!? + if(prob(10)) + P.ex_act(2) + else + P.emp_act(1) From de344e98a16ac0b9576b9a00b9f68b427396aa07 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 23 Apr 2016 13:43:59 -0400 Subject: [PATCH 095/265] Lets you click under the manifest ghost shield --- code/game/gamemodes/cult/runes.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 284ddedfc06..fc2dbc32c85 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -815,6 +815,7 @@ var/list/teleport_runes = list() N.desc = "A weak shield summoned by cultists to protect them while they carry out delicate rituals" N.color = "red" N.health = 20 + N.mouse_opacity = 0 new_human.key = ghost_to_spawn.key ticker.mode.add_cultist(new_human.mind) new_human << "You are a servant of the Geometer. You have been made semi-corporeal by the cult of Nar-Sie, and you are to serve them at all costs." From 6534039b7ff1606b794c1cfd4be7c4200aa623a8 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 23 Apr 2016 13:48:42 -0400 Subject: [PATCH 096/265] Add talisman of veiling to the supply talisman --- code/game/gamemodes/cult/talisman.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 9deaba98935..2749a07448e 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -62,6 +62,7 @@ dat += "Fuu ma'jin! - Allows you to stun a person by attacking them with the talisman.
    " dat += "Kal'om neth! - Summons a soul stone, used to capure the spirits of dead or dying humans.
    " dat += "Daa'ig osk! - Summons a construct shell for use with captured souls. It is too large to carry on your person.
    " + dat += "Kla'atu barada nikt'o! - Two use talisman, first use makes all nearby runes invisible, second use reveals nearby hidden runes.
    " var/datum/browser/popup = new(user, "talisman", "", 400, 400) popup.set_content(dat) popup.open() @@ -90,6 +91,9 @@ usr.put_in_hands(T) if("construct") new /obj/structure/constructshell(get_turf(usr)) + if("veiling") + var/obj/item/weapon/paper/talisman/true_sight/T = new(usr) + usr.put_in_hands(T) src.uses-- if(src.uses <= 0) if(iscarbon(usr)) From bc0486d28c7164ddfbc3c3375b7ea1a46e5e5ca2 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 23 Apr 2016 14:17:07 -0400 Subject: [PATCH 097/265] EMP RUNE IMMERSION --- code/game/gamemodes/cult/runes.dm | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index fc2dbc32c85..f4b5e8f9691 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -601,13 +601,19 @@ var/list/teleport_runes = list() continue if(L.stat || (H.disabilities & MUTE) || H.silent) continue - if(invocation) - L.say(invocation) emp_strength++ visible_message("[src] glows blue for a moment before vanishing.") for(var/mob/living/carbon/C in range(1,src)) - C << "You feel a minute vibration pass through you!" - playsound(E, 'sound/items/Welder2.ogg', 25, 1) + if (emp_strength < 3) + C << "You feel a minute vibration pass through you..." + playsound(E, 'sound/items/Welder2.ogg', 25, 1) + if (emp_strength > 2 && emp_strength < 7) + C << "Your hair stands on end as a shockwave eminates from the rune!" + playsound(E, 'sound/magic/Disable_Tech.ogg', 50, 1) + if (emp_strength > 6) + C << "You chant in unison and a colossal burst of energy knocks you backward!" + C.Weaken(2) + playsound(E, 'sound/magic/Disable_Tech.ogg', 100, 1) qdel(src) //delete before pulsing because it's a delay reee empulse(E, 9*emp_strength, 12*emp_strength) // Scales now, from a single room to around half the station depending on # of chanters From 89ca5c7364c7847affd667cd2d022ca63f348bae Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 23 Apr 2016 14:19:17 -0400 Subject: [PATCH 098/265] Update talisman.dm --- code/game/gamemodes/cult/talisman.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 2749a07448e..a668d723786 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -311,7 +311,7 @@ /obj/item/weapon/paper/talisman/construction/attack_self(mob/living/user) if(iscultist(user)) - user << "To use this talisman, attack the target directly." + user << "To use this talisman, place it upon a stack of metal sheets." else user << "There are indecipherable images scrawled on the paper in what looks to be... blood?" From e3ce7da9293918b07df6bb38ae0ae7c646cc5819 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 23 Apr 2016 14:47:14 -0400 Subject: [PATCH 099/265] Supply Talisman now gives you a Tome directly --- code/game/gamemodes/cult/talisman.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index a668d723786..fed12b18a07 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -75,7 +75,7 @@ if(href_list["rune"]) switch(href_list["rune"]) if("newtome") - var/obj/item/weapon/paper/talisman/summon_tome/T = new(usr) + var/obj/item/weapon/tome/T = new(usr) usr.put_in_hands(T) if("teleport") var/obj/item/weapon/paper/talisman/teleport/T = new(usr) From 3dc15117250c8d8506dec3e19cd73b22a55eb228 Mon Sep 17 00:00:00 2001 From: Jack Edge Date: Sat, 23 Apr 2016 20:13:54 +0100 Subject: [PATCH 100/265] Merge "
    "s into single call to the AI --- code/modules/events/communications_blackout.dm | 6 ++---- code/modules/events/processor_overload.dm | 4 +--- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/code/modules/events/communications_blackout.dm b/code/modules/events/communications_blackout.dm index cb55bbbd248..51b4a8096dd 100644 --- a/code/modules/events/communications_blackout.dm +++ b/code/modules/events/communications_blackout.dm @@ -15,9 +15,7 @@ "#4nd%;f4y6,>£%-BZZZZZZZT") for(var/mob/living/silicon/ai/A in player_list) //AIs are always aware of communication blackouts. - A << "
    " - A << "[alert]" - A << "
    " + A << "
    [alert]
    " if(prob(30)) //most of the time, we don't want an announcement, so as to allow AIs to fake blackouts. priority_announce(alert) @@ -25,4 +23,4 @@ /datum/round_event/communications_blackout/start() for(var/obj/machinery/telecomms/T in telecomms_list) - T.emp_act(1) \ No newline at end of file + T.emp_act(1) diff --git a/code/modules/events/processor_overload.dm b/code/modules/events/processor_overload.dm index bae9f03d574..782e99b43b7 100644 --- a/code/modules/events/processor_overload.dm +++ b/code/modules/events/processor_overload.dm @@ -16,9 +16,7 @@ for(var/mob/living/silicon/ai/A in player_list) //AIs are always aware of processor overload - A << "
    " - A << "[alert]" - A << "
    " + A << "
    [alert]
    " // Announce most of the time, but leave a little gap so people don't know // whether it's, say, a tesla zapping tcomms, or some selective From 105c1a785ad125914090a243142c633804189f41 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 23 Apr 2016 16:23:40 -0400 Subject: [PATCH 101/265] Prevents noncultists/wizards from making construct --- code/game/gamemodes/wizard/soulstone.dm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm index 161e329fa57..5ad41b999ae 100644 --- a/code/game/gamemodes/wizard/soulstone.dm +++ b/code/game/gamemodes/wizard/soulstone.dm @@ -97,6 +97,10 @@ desc = "A wicked machine used by those skilled in magical arts. It is inactive." /obj/structure/constructshell/attackby(obj/item/O, mob/user, params) + if(!iscultist(user) && !iswizard(user) && !usability) + user << "An overwhelming feeling of dread comes over you as you pick up the soulstone. It would be wise to be rid of this quickly." + user.Dizzy(120) + if(istype(O, /obj/item/device/soulstone)) var/obj/item/device/soulstone/SS = O SS.transfer_soul("CONSTRUCT",src,user) @@ -270,4 +274,4 @@ T.unEquip(W) init_shade(C, T, U) qdel(T) - return 1 \ No newline at end of file + return 1 From 1538dc6cd20a232f77d7ba7030a6d056f4cbb988 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sat, 23 Apr 2016 16:53:37 -0400 Subject: [PATCH 102/265] Update soulstone.dm --- code/game/gamemodes/wizard/soulstone.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm index 5ad41b999ae..35e9d915e5e 100644 --- a/code/game/gamemodes/wizard/soulstone.dm +++ b/code/game/gamemodes/wizard/soulstone.dm @@ -97,7 +97,7 @@ desc = "A wicked machine used by those skilled in magical arts. It is inactive." /obj/structure/constructshell/attackby(obj/item/O, mob/user, params) - if(!iscultist(user) && !iswizard(user) && !usability) + if(!iscultist(user) && !iswizard(user)) user << "An overwhelming feeling of dread comes over you as you pick up the soulstone. It would be wise to be rid of this quickly." user.Dizzy(120) From 888344226631218c5e467fee51db314a225ce187 Mon Sep 17 00:00:00 2001 From: Iamgoofball Date: Sat, 23 Apr 2016 15:05:29 -0700 Subject: [PATCH 103/265] Update toxin_reagents.dm --- code/modules/reagents/chemistry/reagents/toxin_reagents.dm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index f3ea013dd23..1cd1a222090 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -696,6 +696,8 @@ color = "#8E18A9" // rgb: 142, 24, 169 toxpwr = 2 acidpwr = 42.0 + /datum/reagent/toxin/acid/fluacid/on_mob_life(mob/living/M) - M.adjustFireLoss(current_cycle/10) // MY INSIDES ARE MELTING HELP - ..() + M.adjustFireLoss(current_cycle/10, 0) // I rode a tank, held a general's rank + . = 1 // When the blitzkrieg raged and the bodies stank + ..() // Pleased to meet you, hope you guess my name From b88d7d313ba13e4dd00382c53cfe69c969b87b31 Mon Sep 17 00:00:00 2001 From: Nerd Lord Date: Sat, 23 Apr 2016 20:33:58 -0400 Subject: [PATCH 104/265] Blobbernaut tweaks --- code/_onclick/hud/blob_overmind.dm | 4 ++-- code/game/gamemodes/blob/blobs/blob_mobs.dm | 7 +++---- code/game/gamemodes/blob/powers.dm | 7 ++++--- tgstation.dme | 1 + 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/code/_onclick/hud/blob_overmind.dm b/code/_onclick/hud/blob_overmind.dm index 6357d556d40..1e507629436 100644 --- a/code/_onclick/hud/blob_overmind.dm +++ b/code/_onclick/hud/blob_overmind.dm @@ -50,8 +50,8 @@ /obj/screen/blob/Blobbernaut icon_state = "ui_blobbernaut" - name = "Produce Blobbernaut (30)" - desc = "Produces a strong, smart blobbernaut from a factory blob for 30 points.
    The factory blob used will become fragile and briefly unable to produce spores." + name = "Produce Blobbernaut (40)" + desc = "Produces a strong, smart blobbernaut from a factory blob for 40 points.
    The factory blob used will become fragile and briefly unable to produce spores." /obj/screen/blob/Blobbernaut/Click() if(isovermind(usr)) diff --git a/code/game/gamemodes/blob/blobs/blob_mobs.dm b/code/game/gamemodes/blob/blobs/blob_mobs.dm index b364534f729..4da251f5bcf 100644 --- a/code/game/gamemodes/blob/blobs/blob_mobs.dm +++ b/code/game/gamemodes/blob/blobs/blob_mobs.dm @@ -193,9 +193,9 @@ icon_state = "blobbernaut" icon_living = "blobbernaut" icon_dead = "blobbernaut_dead" - health = 200 - maxHealth = 200 - damage_coeff = list(BRUTE = 0.5, BURN = 1, TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1) + health = 160 + maxHealth = 160 + damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1) next_move_modifier = 1.5 //slow-ass attack speed, 3 times higher than how fast the blob can attack melee_damage_lower = 20 melee_damage_upper = 20 @@ -205,7 +205,6 @@ verb_ask = "demands" verb_exclaim = "roars" verb_yell = "bellows" - force_threshold = 10 pressure_resistance = 40 mob_size = MOB_SIZE_LARGE see_invisible = SEE_INVISIBLE_MINIMUM diff --git a/code/game/gamemodes/blob/powers.dm b/code/game/gamemodes/blob/powers.dm index 85434de0bc8..a8df3818ff0 100644 --- a/code/game/gamemodes/blob/powers.dm +++ b/code/game/gamemodes/blob/powers.dm @@ -137,7 +137,7 @@ /mob/camera/blob/verb/create_blobbernaut() set category = "Blob" - set name = "Create Blobbernaut (30)" + set name = "Create Blobbernaut (40)" set desc = "Create a powerful blobbernaut which is mildly smart and will attack enemies." var/turf/T = get_turf(src) var/obj/effect/blob/factory/B = locate(/obj/effect/blob/factory) in T @@ -150,7 +150,7 @@ if(B.health < B.maxhealth * 0.5) src << "This factory blob is too damaged to sustain a blobbernaut." return - if(!can_buy(30)) + if(!can_buy(40)) return B.maxhealth = initial(B.maxhealth) * 0.25 //factories that produced a blobbernaut have much lower health B.check_health() @@ -163,7 +163,8 @@ blobber.overmind = src blobber.update_icons() blobber.notransform = 1 //stop the naut from moving around - blob_mobs.Add(blobber) + blobber.adjustHealth(blobber.maxHealth * 0.5) + blob_mobs += blobber var/list/mob/dead/observer/candidates = pollCandidates("Do you want to play as a [blob_reagent_datum.name] blobbernaut?", ROLE_BLOB, null, ROLE_BLOB, 50) //players must answer rapidly var/client/C = null if(candidates.len) //if we got at least one candidate, they're a blobbernaut now. diff --git a/tgstation.dme b/tgstation.dme index a2a4a626d32..50adc433f20 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -103,6 +103,7 @@ #include "code\_onclick\hud\alien.dm" #include "code\_onclick\hud\alien_larva.dm" #include "code\_onclick\hud\blob_overmind.dm" +#include "code\_onclick\hud\blobbernauthud.dm" #include "code\_onclick\hud\drones.dm" #include "code\_onclick\hud\fullscreen.dm" #include "code\_onclick\hud\ghost.dm" From 0a3fd516939dcd9e75d933749d6df77c42e254d0 Mon Sep 17 00:00:00 2001 From: Nerd Lord Date: Sat, 23 Apr 2016 21:01:35 -0400 Subject: [PATCH 105/265] regen --- code/game/gamemodes/blob/blobs/blob_mobs.dm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/code/game/gamemodes/blob/blobs/blob_mobs.dm b/code/game/gamemodes/blob/blobs/blob_mobs.dm index 4da251f5bcf..1f5a893bbde 100644 --- a/code/game/gamemodes/blob/blobs/blob_mobs.dm +++ b/code/game/gamemodes/blob/blobs/blob_mobs.dm @@ -37,7 +37,7 @@ H.color = overmind.blob_reagent_datum.complementary_color else H.color = "#000000" - adjustHealth(-maxHealth*0.025) + adjustHealth(-maxHealth*0.0125) /mob/living/simple_animal/hostile/blob/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) ..() @@ -193,9 +193,9 @@ icon_state = "blobbernaut" icon_living = "blobbernaut" icon_dead = "blobbernaut_dead" - health = 160 - maxHealth = 160 - damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1) + health = 200 + maxHealth = 200 + damage_coeff = list(BRUTE = 0.5, BURN = 1, TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1) next_move_modifier = 1.5 //slow-ass attack speed, 3 times higher than how fast the blob can attack melee_damage_lower = 20 melee_damage_upper = 20 @@ -205,6 +205,7 @@ verb_ask = "demands" verb_exclaim = "roars" verb_yell = "bellows" + force_threshold = 10 pressure_resistance = 40 mob_size = MOB_SIZE_LARGE see_invisible = SEE_INVISIBLE_MINIMUM From 368329f36b2856ba4f8e338eefd427c2f947a572 Mon Sep 17 00:00:00 2001 From: Nerd Lord Date: Sat, 23 Apr 2016 21:14:02 -0400 Subject: [PATCH 106/265] less spores --- code/game/gamemodes/blob/blobs/factory.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/game/gamemodes/blob/blobs/factory.dm b/code/game/gamemodes/blob/blobs/factory.dm index a742c20423a..56ed5167f84 100644 --- a/code/game/gamemodes/blob/blobs/factory.dm +++ b/code/game/gamemodes/blob/blobs/factory.dm @@ -26,6 +26,8 @@ /obj/effect/blob/factory/Be_Pulsed() . = ..() + if(naut) + return if(spores.len >= max_spores) return if(spore_delay > world.time) From 1c1e05651523ff3429065ad6a41108fde31ba43f Mon Sep 17 00:00:00 2001 From: Nerd Lord Date: Sat, 23 Apr 2016 21:45:20 -0400 Subject: [PATCH 107/265] info correction --- code/_onclick/hud/blob_overmind.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/_onclick/hud/blob_overmind.dm b/code/_onclick/hud/blob_overmind.dm index 1e507629436..e46b1bebf54 100644 --- a/code/_onclick/hud/blob_overmind.dm +++ b/code/_onclick/hud/blob_overmind.dm @@ -51,7 +51,7 @@ /obj/screen/blob/Blobbernaut icon_state = "ui_blobbernaut" name = "Produce Blobbernaut (40)" - desc = "Produces a strong, smart blobbernaut from a factory blob for 40 points.
    The factory blob used will become fragile and briefly unable to produce spores." + desc = "Produces a strong, smart blobbernaut from a factory blob for 40 points.
    The factory blob used will become fragile and unable to produce spores." /obj/screen/blob/Blobbernaut/Click() if(isovermind(usr)) From 543101879c9d58518b7985a279af7abb76b5a158 Mon Sep 17 00:00:00 2001 From: Jack Edge Date: Sun, 24 Apr 2016 09:08:17 +0100 Subject: [PATCH 108/265] Actually makes the processor blow up --- code/modules/events/processor_overload.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/modules/events/processor_overload.dm b/code/modules/events/processor_overload.dm index 782e99b43b7..0be0f058479 100644 --- a/code/modules/events/processor_overload.dm +++ b/code/modules/events/processor_overload.dm @@ -29,8 +29,9 @@ for(var/obj/machinery/telecomms/T in telecomms_list) if(istype(T, /obj/machinery/telecomms/processor)) var/obj/machinery/telecomms/processor/P = T - // Wow, it overloaded so much that it EXPLODED!? if(prob(10)) - P.ex_act(2) + // Only a level 1 explosion actually damages the machine + // at all + P.ex_act(1) else P.emp_act(1) From 3f70f880ac1fa6bb44c6be81be4967e842e8f356 Mon Sep 17 00:00:00 2001 From: MrPerson Date: Sun, 24 Apr 2016 03:36:22 -0700 Subject: [PATCH 109/265] Move some stuff from different layers to different planes Moves everything on a 15+ layer to a plane. So now you get screen catcher (-99, was already on a plane), lighting (15), effects that ignore lighting (16), fullscreen UI effects (18), screen objects used to build the UI (19), actual equipment in the UI slots (20), and everything else (0). Also created a file to contain plane and layer defines for hopeful eventual use. Hopefully this doesn't change anything now but does enable some nifty new features in the future. --- code/__DEFINES/layers_planes.dm | 18 ++++++++++++ code/__HELPERS/icons.dm | 1 + code/__HELPERS/unsorted.dm | 5 ++-- code/_onclick/_defines.dm | 1 - code/_onclick/click.dm | 2 +- code/_onclick/hud/alert.dm | 3 ++ code/_onclick/hud/blob_overmind.dm | 2 +- code/_onclick/hud/fullscreen.dm | 22 ++++---------- code/_onclick/hud/other_mobs.dm | 5 +--- code/_onclick/hud/robot.dm | 2 +- code/_onclick/hud/screen_objects.dm | 29 ++++--------------- code/_onclick/telekinesis.dm | 2 +- code/datums/action.dm | 10 +++---- code/datums/diseases/transformation.dm | 1 - code/game/atoms.dm | 1 + code/game/objects/effects/decals/misc.dm | 2 +- code/game/objects/effects/misc.dm | 1 + code/game/objects/items.dm | 9 +++--- .../objects/items/devices/chameleonproj.dm | 2 +- .../objects/items/weapons/storage/storage.dm | 10 +++---- code/modules/admin/topic.dm | 3 -- .../components/unary_devices/vent_pump.dm | 8 +++-- .../components/unary_devices/vent_scrubber.dm | 8 +++-- code/modules/clothing/clothing.dm | 3 +- code/modules/events/anomaly_bluespace.dm | 2 +- code/modules/flufftext/Hallucination.dm | 2 +- code/modules/lighting/lighting_system.dm | 4 +-- code/modules/mining/equipment_locker.dm | 8 ++--- code/modules/mob/inventory.dm | 5 ---- code/modules/mob/living/carbon/inventory.dm | 1 - code/modules/mob/living/living.dm | 1 + .../mob/living/silicon/robot/inventory.dm | 6 ++-- .../modules/mob/living/silicon/robot/robot.dm | 1 - .../simple_animal/friendly/drone/inventory.dm | 1 - .../friendly/drone/visuals_icons.dm | 2 -- code/modules/mob/living/ventcrawling.dm | 4 +-- code/modules/mob/mob_grab.dm | 2 +- code/modules/mob/transform_procs.dm | 1 - code/modules/paperwork/photography.dm | 2 +- code/modules/power/singularity/collector.dm | 1 - tgstation.dme | 2 +- 41 files changed, 89 insertions(+), 106 deletions(-) create mode 100644 code/__DEFINES/layers_planes.dm delete mode 100644 code/_onclick/_defines.dm diff --git a/code/__DEFINES/layers_planes.dm b/code/__DEFINES/layers_planes.dm new file mode 100644 index 00000000000..8773c58e163 --- /dev/null +++ b/code/__DEFINES/layers_planes.dm @@ -0,0 +1,18 @@ +//Contains all our layer and plane defines + +//If you want more information on how byond renders things, look here http://www.byond.com/forum/?post=2042210 + +#define PLANE_CLICKCATCHER -99 + +#define PLANE_GAME 0 //This might need splitting into different planes later, but for now it will do + +#define PLANE_LIGHTING 15 +#define PLANE_EFFECTS_UNLIT 16 + +#define PLANE_FULLSCREEN 18 +#define LAYER_DAMAGE 18.1 +#define LAYER_BLIND 18.2 +#define LAYER_CRIT 18.3 + +#define PLANE_UI_BASE 19 //All the screen objects go here +#define PLANE_UI_OBJECTS 20 //Your actual equipment being displayed \ No newline at end of file diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm index 4e76b773352..a73c41fe0e2 100644 --- a/code/__HELPERS/icons.dm +++ b/code/__HELPERS/icons.dm @@ -688,6 +688,7 @@ The _flatIcons list is a cache for generated icon files. curblend = A.blend_mode // Layers will be a sorted list of icons/overlays, based on the order in which they are displayed + // TODO: Needs to support overlays/underlays on different planes from parent var/list/layers = list() var/image/copy // Add the atom's icon itself, without pixel_x/y offsets. diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index ce70339a466..ffefa455b8a 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -495,14 +495,15 @@ Turf and target are seperate in case you want to teleport some distance from a t return y -/proc/anim(turf/location,target as mob|obj,a_icon,a_icon_state as text,flick_anim as text,sleeptime = 0,direction as num) +/proc/anim(turf/location, atom/movable/target, a_icon, a_icon_state as text, flick_anim as text, sleeptime = 0, direction as num) //This proc throws up either an icon or an animation for a specified amount of time. //The variables should be apparent enough. var/atom/movable/overlay/animation = new(location) if(direction) animation.dir = direction animation.icon = a_icon - animation.layer = target:layer+1 + animation.layer = target.layer+1 + animation.plane = target.plane if(a_icon_state) animation.icon_state = a_icon_state else diff --git a/code/_onclick/_defines.dm b/code/_onclick/_defines.dm deleted file mode 100644 index 3c76c35e807..00000000000 --- a/code/_onclick/_defines.dm +++ /dev/null @@ -1 +0,0 @@ -#define CLICKCATCHER_PLANE -99 \ No newline at end of file diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 26838de68c3..2837f152faa 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -325,7 +325,7 @@ /obj/screen/click_catcher icon = 'icons/mob/screen_gen.dmi' icon_state = "click_catcher" - plane = CLICKCATCHER_PLANE + plane = PLANE_CLICKCATCHER mouse_opacity = 2 screen_loc = "CENTER-7,CENTER-7" diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm index f8974e1b31c..6344fc927a1 100644 --- a/code/_onclick/hud/alert.dm +++ b/code/_onclick/hud/alert.dm @@ -37,9 +37,12 @@ if(new_master) var/old_layer = new_master.layer + var/old_plane = new_master.plane new_master.layer = FLOAT_LAYER + new_master.plane = PLANE_UI_OBJECTS alert.overlays += new_master new_master.layer = old_layer + new_master.plane = old_plane alert.icon_state = "template" // We'll set the icon to the client's ui pref in reorganize_alerts() alert.master = new_master else diff --git a/code/_onclick/hud/blob_overmind.dm b/code/_onclick/hud/blob_overmind.dm index 6357d556d40..d7f14b54ebf 100644 --- a/code/_onclick/hud/blob_overmind.dm +++ b/code/_onclick/hud/blob_overmind.dm @@ -125,7 +125,7 @@ blobpwrdisplay.icon_state = "block" blobpwrdisplay.screen_loc = ui_health blobpwrdisplay.mouse_opacity = 0 - blobpwrdisplay.layer = 20 + blobpwrdisplay.plane = PLANE_UI_BASE infodisplay += blobpwrdisplay healths = new /obj/screen/healths/blob() diff --git a/code/_onclick/hud/fullscreen.dm b/code/_onclick/hud/fullscreen.dm index a0a74545db8..391d72f8561 100644 --- a/code/_onclick/hud/fullscreen.dm +++ b/code/_onclick/hud/fullscreen.dm @@ -1,8 +1,3 @@ -#define FULLSCREEN_LAYER 18 -#define DAMAGE_LAYER FULLSCREEN_LAYER + 0.1 -#define BLIND_LAYER DAMAGE_LAYER + 0.1 -#define CRIT_LAYER BLIND_LAYER + 0.1 - /mob var/list/screens = list() @@ -63,7 +58,7 @@ icon = 'icons/mob/screen_full.dmi' icon_state = "default" screen_loc = "CENTER-7,CENTER-7" - layer = FULLSCREEN_LAYER + plane = PLANE_FULLSCREEN mouse_opacity = 0 var/severity = 0 @@ -74,19 +69,19 @@ /obj/screen/fullscreen/brute icon_state = "brutedamageoverlay" - layer = DAMAGE_LAYER + layer = LAYER_DAMAGE /obj/screen/fullscreen/oxy icon_state = "oxydamageoverlay" - layer = DAMAGE_LAYER + layer = LAYER_DAMAGE /obj/screen/fullscreen/crit icon_state = "passage" - layer = CRIT_LAYER + layer = LAYER_CRIT /obj/screen/fullscreen/blind icon_state = "blackimageoverlay" - layer = BLIND_LAYER + layer = LAYER_BLIND /obj/screen/fullscreen/impaired icon_state = "impairedoverlay" @@ -109,9 +104,4 @@ /obj/screen/fullscreen/high icon = 'icons/mob/screen_gen.dmi' screen_loc = "WEST,SOUTH to EAST,NORTH" - icon_state = "druggy" - -#undef FULLSCREEN_LAYER -#undef BLIND_LAYER -#undef DAMAGE_LAYER -#undef CRIT_LAYER + icon_state = "druggy" \ No newline at end of file diff --git a/code/_onclick/hud/other_mobs.dm b/code/_onclick/hud/other_mobs.dm index e1bacf6922d..482ed7e8df7 100644 --- a/code/_onclick/hud/other_mobs.dm +++ b/code/_onclick/hud/other_mobs.dm @@ -31,11 +31,8 @@ name = "Faith" icon_state = "deity_power" screen_loc = ui_deitypower - layer = 20 /obj/screen/deity_follower_display name = "Followers" icon_state = "deity_followers" - screen_loc = ui_deityfollowers - layer = 20 - + screen_loc = ui_deityfollowers \ No newline at end of file diff --git a/code/_onclick/hud/robot.dm b/code/_onclick/hud/robot.dm index b13623a9bfd..77064c1a79a 100644 --- a/code/_onclick/hud/robot.dm +++ b/code/_onclick/hud/robot.dm @@ -197,7 +197,7 @@ A.screen_loc = "CENTER[x]:16,SOUTH+[y]:7" else A.screen_loc = "CENTER+[x]:16,SOUTH+[y]:7" - A.layer = 20 + A.plane = PLANE_UI_OBJECTS //need to move this to module init eventually x++ if(x == 4) diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 2fc47ab95be..fc9868b4d4e 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -9,7 +9,7 @@ /obj/screen name = "" icon = 'icons/mob/screen_gen.dmi' - layer = 20 + plane = PLANE_UI_BASE unacidable = 1 appearance_flags = APPEARANCE_UI var/obj/master = null //A reference to the object in the slot. Grabs or items, generally. @@ -29,7 +29,6 @@ maptext_width = 480 /obj/screen/swap_hand - layer = 19 name = "swap hand" /obj/screen/swap_hand/Click() @@ -51,7 +50,6 @@ var/slot_id // The indentifier for the slot. It has nothing to do with ID cards. var/icon_empty // Icon when empty. For now used only by humans. var/icon_full // Icon when contains an item. For now used only by humans. - layer = 19 /obj/screen/inventory/Click() // At this point in client Click() code we have passed the 1/10 sec check and little else @@ -86,9 +84,11 @@ ..() if(!active_overlay) active_overlay = image("icon"=icon, "icon_state"="hand_active") + active_overlay.plane = PLANE_UI_BASE if(!handcuff_overlay) var/state = (slot_id == slot_r_hand) ? "markus" : "gabrielle" handcuff_overlay = image("icon"='icons/mob/screen_gen.dmi', "icon_state"=state) + handcuff_overlay.plane = PLANE_UI_OBJECTS overlays.Cut() @@ -136,7 +136,6 @@ name = "drop" icon = 'icons/mob/screen_midnight.dmi' icon_state = "act_drop" - layer = 19 /obj/screen/drop/Click() usr.drop_item_v() @@ -285,7 +284,6 @@ name = "resist" icon = 'icons/mob/screen_midnight.dmi' icon_state = "act_resist" - layer = 19 /obj/screen/resist/Click() if(isliving(usr)) @@ -379,7 +377,9 @@ /obj/screen/zone_sel/update_icon(mob/user) overlays.Cut() - overlays += image('icons/mob/screen_gen.dmi', "[selecting]") + var/image/overlay = image('icons/mob/screen_gen.dmi', "[selecting]") + overlay.plane = PLANE_UI_BASE + overlays += overlay user.zone_selected = selecting /obj/screen/zone_sel/alien @@ -393,23 +393,6 @@ /obj/screen/zone_sel/robot icon = 'icons/mob/screen_cyborg.dmi' - -/obj/screen/flash - name = "flash" - icon_state = "blank" - blend_mode = BLEND_ADD - screen_loc = "WEST,SOUTH to EAST,NORTH" - layer = 17 - -/obj/screen/damageoverlay - icon = 'icons/mob/screen_full.dmi' - icon_state = "oxydamageoverlay0" - name = "dmg" - blend_mode = BLEND_MULTIPLY - screen_loc = "CENTER-7,CENTER-7" - mouse_opacity = 0 - layer = 18.1 //The black screen overlay sets layer to 18 to display it, this one has to be just on top. - /obj/screen/healths name = "health" icon_state = "health0" diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm index 1fb7b369327..0257f18b15b 100644 --- a/code/_onclick/telekinesis.dm +++ b/code/_onclick/telekinesis.dm @@ -71,7 +71,7 @@ var/const/tk_maxrange = 15 flags = NOBLUDGEON | ABSTRACT //item_state = null w_class = 10 - layer = 20 + plane = PLANE_UI_OBJECTS var/last_throw = 0 var/atom/movable/focus = null diff --git a/code/datums/action.dm b/code/datums/action.dm index 59976843017..6d883261029 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -89,8 +89,8 @@ /datum/action/proc/ApplyIcon(obj/screen/movable/action_button/current_button) current_button.overlays.Cut() if(button_icon && button_icon_state) - var/image/img - img = image(button_icon, current_button, button_icon_state) + var/image/img = image(button_icon, current_button, button_icon_state) + img.plane = current_button.plane img.pixel_x = 0 img.pixel_y = 0 current_button.overlays += img @@ -131,10 +131,10 @@ ..(current_button) else if(target) var/obj/item/I = target - var/old = I.layer - I.layer = FLOAT_LAYER //AAAH + var/old = I.plane + I.plane = current_button.plane current_button.overlays += I - I.layer = old + I.plane = old /datum/action/item_action/toggle_light name = "Toggle Light" diff --git a/code/datums/diseases/transformation.dm b/code/datums/diseases/transformation.dm index b814687318a..c1b1c3a3d46 100644 --- a/code/datums/diseases/transformation.dm +++ b/code/datums/diseases/transformation.dm @@ -53,7 +53,6 @@ if(istype(W, /obj/item/weapon/implant)) qdel(W) continue - W.layer = initial(W.layer) W.loc = affected_mob.loc W.dropped(affected_mob) var/mob/living/new_mob = new new_form(affected_mob.loc) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 6dd095996f9..91eb0c71b23 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -1,5 +1,6 @@ /atom layer = 2 + plane = PLANE_GAME var/level = 2 var/flags = 0 var/list/fingerprints diff --git a/code/game/objects/effects/decals/misc.dm b/code/game/objects/effects/decals/misc.dm index 0a627518e15..45847a3019a 100644 --- a/code/game/objects/effects/decals/misc.dm +++ b/code/game/objects/effects/decals/misc.dm @@ -2,7 +2,7 @@ name = "pointer" icon = 'icons/mob/screen_gen.dmi' icon_state = "arrow" - layer = 16 + plane = PLANE_EFFECTS_UNLIT duration = 25 /obj/effect/overlay/temp/point/New(loc, set_invis = 0) diff --git a/code/game/objects/effects/misc.dm b/code/game/objects/effects/misc.dm index 4d621cf0fdd..1d48966e85e 100644 --- a/code/game/objects/effects/misc.dm +++ b/code/game/objects/effects/misc.dm @@ -13,6 +13,7 @@ icon_state = "blank" anchored = 1 layer = 99 + plane = PLANE_EFFECTS_UNLIT mouse_opacity = 0 unacidable = 1//Just to be sure. diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index f634e1eca8b..5f89293753d 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -367,22 +367,21 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s return /obj/item/proc/dropped(mob/user) + plane = initial(plane) for(var/X in actions) var/datum/action/A = X A.Remove(user) // called just as an item is picked up (loc is not yet changed) /obj/item/proc/pickup(mob/user) - return - // called when this item is removed from a storage item, which is passed on as S. The loc variable is already set to the new destination before this is called. /obj/item/proc/on_exit_storage(obj/item/weapon/storage/S) - return + plane = initial(plane) // called when this item is added into a storage item, which is passed on as S. The loc variable is already set to the storage item. /obj/item/proc/on_enter_storage(obj/item/weapon/storage/S) - return + plane = PLANE_UI_OBJECTS // called when "found" in pockets and storage items. Returns 1 if the search should end. /obj/item/proc/on_found(mob/finder) @@ -392,8 +391,8 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s // user is mob that equipped it // slot uses the slot_X defines found in setup.dm // for items that can be placed in multiple slots -// note this isn't called during the initial dressing of a player /obj/item/proc/equipped(mob/user, slot) + plane = PLANE_UI_OBJECTS for(var/X in actions) var/datum/action/A = X if(item_action_slot_check(slot, user)) //some items only give their actions buttons when in a specific slot. diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm index 386de841e52..ec58ac01e80 100644 --- a/code/game/objects/items/devices/chameleonproj.dm +++ b/code/game/objects/items/devices/chameleonproj.dm @@ -36,7 +36,7 @@ user << "Scanned [target]." var/obj/temp = new/obj() temp.appearance = target.appearance - temp.layer = initial(target.layer) // scanning things in your inventory + temp.plane = initial(target.plane) // scanning things in your inventory saved_appearance = temp.appearance /obj/item/device/chameleon/proc/toggle() diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index 9764781e8fc..d8cec1920c4 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -157,7 +157,6 @@ boxes.screen_loc = "[tx]:,[ty] to [mx],[my]" for(var/obj/O in contents) O.screen_loc = "[cx],[cy]" - O.layer = 20 cx++ if(cx > mx) cx = tx @@ -176,7 +175,7 @@ ND.sample_object.mouse_opacity = 2 ND.sample_object.screen_loc = "[cx]:16,[cy]:16" ND.sample_object.maptext = "[(ND.number > 1)? "[ND.number]" : ""]" - ND.sample_object.layer = 20 + ND.sample_object.plane = PLANE_UI_OBJECTS cx++ if(cx > (4+cols)) cx = 4 @@ -186,7 +185,7 @@ O.mouse_opacity = 2 //This is here so storage items that spawn with contents correctly have the "click around item to equip" O.screen_loc = "[cx]:16,[cy]:16" O.maptext = "" - O.layer = 20 + O.plane = PLANE_UI_OBJECTS cx++ if(cx > (4+cols)) cx = 4 @@ -342,7 +341,6 @@ if(ismob(loc)) var/mob/M = loc W.dropped(M) - W.layer = initial(W.layer) W.loc = new_location if(usr) @@ -463,11 +461,11 @@ boxes.master = src boxes.icon_state = "block" boxes.screen_loc = "7,7 to 10,8" - boxes.layer = 19 + boxes.plane = PLANE_UI_BASE closer = new /obj/screen/close() closer.master = src closer.icon_state = "backpack_close" - closer.layer = 20 + closer.plane = PLANE_UI_BASE orient2hud() diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 012c704f2c3..59ead4befdf 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1386,7 +1386,6 @@ M.unEquip(I) if(I) I.loc = M.loc - I.layer = initial(I.layer) I.dropped(M) M.Paralyse(5) @@ -1416,7 +1415,6 @@ M.unEquip(I) if(I) I.loc = M.loc - I.layer = initial(I.layer) I.dropped(M) M.Paralyse(5) @@ -1469,7 +1467,6 @@ M.unEquip(I) if(I) I.loc = M.loc - I.layer = initial(I.layer) I.dropped(M) if(istype(M, /mob/living/carbon/human)) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm index f00c99897d1..ad13524175d 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm @@ -262,7 +262,9 @@ user.visible_message("[user] unwelds the vent.", "You unweld the vent.", "You hear welding.") welded = 0 update_icon() - pipe_vision_img = image(src, loc, layer = 20, dir = dir) + var/image/I = image(src, loc, dir = dir) + I.plane = PLANE_UI_OBJECTS + pipe_vision_img = I return 0 else return ..() @@ -285,7 +287,9 @@ user.visible_message("[user] furiously claws at [src]!", "You manage to clear away the stuff blocking the vent", "You hear loud scraping noises.") welded = 0 update_icon() - pipe_vision_img = image(src, loc, layer = 20, dir = dir) + var/image/I = image(src, loc, dir = dir) + I.plane = PLANE_UI_OBJECTS + pipe_vision_img = I playsound(loc, 'sound/weapons/bladeslice.ogg', 100, 1) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm index cdefd24e240..7de7a1ac068 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm @@ -308,7 +308,9 @@ user.visible_message("[user] unwelds the scrubber.", "You unweld the scrubber.", "You hear welding.") welded = 0 update_icon() - pipe_vision_img = image(src, loc, layer = 20, dir = dir) + var/image/I = image(src, loc, dir = dir) + I.plane = PLANE_UI_OBJECTS + pipe_vision_img = I return 0 if (!istype(W, /obj/item/weapon/wrench)) return ..() @@ -326,7 +328,9 @@ user.visible_message("[user] furiously claws at [src]!", "You manage to clear away the stuff blocking the scrubber.", "You hear loud scraping noises.") welded = 0 update_icon() - pipe_vision_img = image(src, loc, layer = 20, dir = dir) + var/image/I = image(src, loc, dir = dir) + I.plane = PLANE_UI_OBJECTS + pipe_vision_img = I playsound(loc, 'sound/weapons/bladeslice.ogg', 100, 1) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index d808eef5e0f..740b8887d89 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -357,8 +357,10 @@ BLIND // can't see anything I.transform *= 0.5 //halve the size so it doesn't overpower the under I.pixel_x += 8 I.pixel_y -= 8 + var/oldlayer = I.layer I.layer = FLOAT_LAYER overlays += I + I.layer = oldlayer if(istype(loc, /mob/living/carbon/human)) @@ -492,7 +494,6 @@ BLIND // can't see anything hastie.transform *= 2 hastie.pixel_x -= 8 hastie.pixel_y += 8 - hastie.layer = initial(hastie.layer) overlays = null usr.put_in_hands(hastie) hastie = null diff --git a/code/modules/events/anomaly_bluespace.dm b/code/modules/events/anomaly_bluespace.dm index bfb574706cc..b4d9705223b 100644 --- a/code/modules/events/anomaly_bluespace.dm +++ b/code/modules/events/anomaly_bluespace.dm @@ -65,7 +65,7 @@ blueeffect.screen_loc = "WEST,SOUTH to EAST,NORTH" blueeffect.icon = 'icons/effects/effects.dmi' blueeffect.icon_state = "shieldsparkles" - blueeffect.layer = 17 + blueeffect.plane = PLANE_EFFECTS_UNLIT blueeffect.mouse_opacity = 0 M.client.screen += blueeffect sleep(20) diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index 70c2a6f2870..4dc75290766 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -635,7 +635,7 @@ var/list/non_fakeattack_weapons = list(/obj/item/weapon/gun/projectile, /obj/ite if(!H.r_store) slots_free += ui_storage2 if(slots_free.len) halitem.screen_loc = pick(slots_free) - halitem.layer = 50 + halitem.plane = PLANE_UI_OBJECTS switch(rand(1,6)) if(1) //revolver halitem.icon = 'icons/obj/guns/projectile.dmi' diff --git a/code/modules/lighting/lighting_system.dm b/code/modules/lighting/lighting_system.dm index cce8b0a8aef..f6071404626 100644 --- a/code/modules/lighting/lighting_system.dm +++ b/code/modules/lighting/lighting_system.dm @@ -27,7 +27,6 @@ */ #define LIGHTING_CIRCULAR 1 //Comment this out to use old square lighting effects. -#define LIGHTING_LAYER 15 //Drawing layer for lighting #define LIGHTING_CAP 10 //The lumcount level at which alpha is 0 and we're fully lit. #define LIGHTING_CAP_FRAC (255/LIGHTING_CAP) //A precal'd variable we'll use in turf/redraw_lighting() #define LIGHTING_ICON 'icons/effects/alphacolors.dmi' @@ -236,7 +235,7 @@ /atom/movable/light icon = LIGHTING_ICON icon_state = LIGHTING_ICON_STATE - layer = LIGHTING_LAYER + plane = PLANE_LIGHTING mouse_opacity = 0 blend_mode = BLEND_OVERLAY invisibility = INVISIBILITY_LIGHTING @@ -362,7 +361,6 @@ T.init_lighting() T.update_lumcount(0) -#undef LIGHTING_LAYER #undef LIGHTING_CIRCULAR #undef LIGHTING_ICON #undef LIGHTING_ICON_STATE diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm index 12ec53f1011..5f4f085c11a 100644 --- a/code/modules/mining/equipment_locker.dm +++ b/code/modules/mining/equipment_locker.dm @@ -252,7 +252,6 @@ new s.type(loc,s.max_amount) s.use(s.max_amount) s.loc = loc - s.layer = initial(s.layer) /obj/machinery/mineral/ore_redemption/power_change() ..() @@ -962,7 +961,8 @@ var/client/C = user.client for(var/turf/closed/mineral/M in minerals) var/turf/F = get_turf(M) - var/image/I = image('icons/turf/smoothrocks.dmi', loc = F, icon_state = M.scan_state, layer = 18) + var/image/I = image('icons/turf/smoothrocks.dmi', loc = F, icon_state = M.scan_state) + I.plane = PLANE_EFFECTS_UNLIT C.images += I spawn(30) if(C) @@ -980,7 +980,7 @@ C.icon_state = M.scan_state /obj/effect/overlay/temp/mining_overlay - layer = 20 + plane = PLANE_EFFECTS_UNLIT icon = 'icons/turf/smoothrocks.dmi' anchored = 1 mouse_opacity = 0 @@ -1110,4 +1110,4 @@ component_parts += new /obj/item/weapon/stock_parts/matter_bin(null) component_parts += new /obj/item/weapon/stock_parts/matter_bin(null) component_parts += new /obj/item/weapon/stock_parts/console_screen(null) - RefreshParts() \ No newline at end of file + RefreshParts() diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index 3a8e0dcaaa6..0beb14f8186 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -29,7 +29,6 @@ if(!l_hand) W.loc = src //TODO: move to equipped? l_hand = W - W.layer = 20 //TODO: move to equipped? W.equipped(src,slot_l_hand) if(pulling == W) stop_pulling() @@ -47,7 +46,6 @@ if(!r_hand) W.loc = src r_hand = W - W.layer = 20 W.equipped(src,slot_r_hand) if(pulling == W) stop_pulling() @@ -92,7 +90,6 @@ return 1 else W.loc = get_turf(src) - W.layer = initial(W.layer) W.dropped(src) return 0 @@ -154,8 +151,6 @@ client.screen -= I I.loc = loc I.dropped(src) - if(I) - I.layer = initial(I.layer) return 1 diff --git a/code/modules/mob/living/carbon/inventory.dm b/code/modules/mob/living/carbon/inventory.dm index 00efe469b81..3dd183b486c 100644 --- a/code/modules/mob/living/carbon/inventory.dm +++ b/code/modules/mob/living/carbon/inventory.dm @@ -32,7 +32,6 @@ I.screen_loc = null // will get moved if inventory is visible I.loc = src I.equipped(src, slot) - I.layer = 20 switch(slot) if(slot_back) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index de6de0bd39b..c92626d4ed7 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -841,6 +841,7 @@ Sorry Giacom. Please don't be mad :( I = image(r_hand.icon, A, r_hand.icon_state, A.layer + 1) else // Attacked with a fist? return + I.plane = PLANE_EFFECTS_UNLIT // Who can see the attack? var/list/viewing = list() diff --git a/code/modules/mob/living/silicon/robot/inventory.dm b/code/modules/mob/living/silicon/robot/inventory.dm index 02bbd168dc1..7e450f3a94a 100644 --- a/code/modules/mob/living/silicon/robot/inventory.dm +++ b/code/modules/mob/living/silicon/robot/inventory.dm @@ -48,7 +48,7 @@ if(!module_state_1) O.mouse_opacity = initial(O.mouse_opacity) module_state_1 = O - O.layer = 20 + O.plane = PLANE_UI_OBJECTS O.screen_loc = inv1.screen_loc contents += O if(istype(module_state_1,/obj/item/borg/sight)) @@ -58,7 +58,7 @@ else if(!module_state_2) O.mouse_opacity = initial(O.mouse_opacity) module_state_2 = O - O.layer = 20 + O.plane = PLANE_UI_OBJECTS O.screen_loc = inv2.screen_loc contents += O if(istype(module_state_2,/obj/item/borg/sight)) @@ -68,7 +68,7 @@ else if(!module_state_3) O.mouse_opacity = initial(O.mouse_opacity) module_state_3 = O - O.layer = 20 + O.plane = PLANE_UI_OBJECTS O.screen_loc = inv3.screen_loc contents += O if(istype(module_state_3,/obj/item/borg/sight)) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index e067091f826..3b92baf5c33 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -84,7 +84,6 @@ robot_modules_background = new() robot_modules_background.icon_state = "block" - robot_modules_background.layer = 19 //Objects that appear on screen are on layer 20, UI should be just below it. ident = rand(1, 999) update_icons() diff --git a/code/modules/mob/living/simple_animal/friendly/drone/inventory.dm b/code/modules/mob/living/simple_animal/friendly/drone/inventory.dm index cc56e9382a9..a354e355ae9 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/inventory.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/inventory.dm @@ -94,7 +94,6 @@ I.screen_loc = null // will get moved if inventory is visible I.loc = src I.equipped(src, slot) - I.layer = 20 switch(slot) if(slot_head) diff --git a/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm b/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm index 4b3e79d22f3..399b64b1401 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm @@ -37,7 +37,6 @@ hands_overlays += r_hand_image if(client && hud_used && hud_used.hud_version != HUD_STYLE_NOHUD) - r_hand.layer = 20 r_hand.screen_loc = ui_rhand client.screen |= r_hand @@ -54,7 +53,6 @@ hands_overlays += l_hand_image if(client && hud_used && hud_used.hud_version != HUD_STYLE_NOHUD) - l_hand.layer = 20 l_hand.screen_loc = ui_lhand client.screen |= l_hand diff --git a/code/modules/mob/living/ventcrawling.dm b/code/modules/mob/living/ventcrawling.dm index d01b00ceaeb..6e07ba5cd28 100644 --- a/code/modules/mob/living/ventcrawling.dm +++ b/code/modules/mob/living/ventcrawling.dm @@ -92,8 +92,8 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/components/unary for(var/X in totalMembers) var/obj/machinery/atmospherics/A = X //all elements in totalMembers are necessarily of this type. if(!A.pipe_vision_img) - A.pipe_vision_img = image(A, A.loc, layer = 20, dir = A.dir) - //20 for being above darkness + A.pipe_vision_img = image(A, A.loc, dir = A.dir) + A.pipe_vision_img.plane = PLANE_EFFECTS_UNLIT pipes_shown += A.pipe_vision_img if(client) client.images += A.pipe_vision_img diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm index c89cf9ac1a8..e9cbe67732b 100644 --- a/code/modules/mob/mob_grab.dm +++ b/code/modules/mob/mob_grab.dm @@ -12,7 +12,7 @@ var/allow_upgrade = 1 var/last_upgrade = 0 - layer = 21 + plane = PLANE_UI_OBJECTS item_state = "nothing" w_class = 5 diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 9a5aae78ea7..b1d1f59cb68 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -132,7 +132,6 @@ if (W) W.loc = loc W.dropped(src) - W.layer = initial(W.layer) //Make mob invisible and spawn animation notransform = 1 diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index 3edf26b56e8..519116763b6 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -201,7 +201,7 @@ var/atom/c = atoms[i] for(j = sorted.len, j > 0, --j) var/atom/c2 = sorted[j] - if(c2.layer <= c.layer) + if(c2.layer <= c.layer)//needs updating to account for plane break sorted.Insert(j+1, c) diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm index 304e5a37a1f..d5db982b15a 100644 --- a/code/modules/power/singularity/collector.dm +++ b/code/modules/power/singularity/collector.dm @@ -120,7 +120,6 @@ var/global/list/rad_collectors = list() if (!Z) return Z.loc = get_turf(src) - Z.layer = initial(Z.layer) src.P = null if(active) toggle_power() diff --git a/tgstation.dme b/tgstation.dme index be56d6608f7..e67def99b9a 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -31,6 +31,7 @@ #include "code\__DEFINES\genetics.dm" #include "code\__DEFINES\hud.dm" #include "code\__DEFINES\is_helpers.dm" +#include "code\__DEFINES\layers_planes.dm" #include "code\__DEFINES\machines.dm" #include "code\__DEFINES\math.dm" #include "code\__DEFINES\misc.dm" @@ -84,7 +85,6 @@ #include "code\_globalvars\lists\mobs.dm" #include "code\_globalvars\lists\names.dm" #include "code\_globalvars\lists\objects.dm" -#include "code\_onclick\_defines.dm" #include "code\_onclick\adjacent.dm" #include "code\_onclick\ai.dm" #include "code\_onclick\autoclick.dm" From 8523295806b5618fb9b2e80880ed59b094d1cc47 Mon Sep 17 00:00:00 2001 From: oranges Date: Mon, 25 Apr 2016 00:42:05 +1200 Subject: [PATCH 110/265] Fix a typo in string lists system I have no idea how this didn't cause a bug --- code/__HELPERS/_string_lists.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/__HELPERS/_string_lists.dm b/code/__HELPERS/_string_lists.dm index 28cb7232e72..290beb20634 100644 --- a/code/__HELPERS/_string_lists.dm +++ b/code/__HELPERS/_string_lists.dm @@ -3,7 +3,7 @@ #define json_load(FILE) (json_decode(file2text(FILE))) var/global/list/string_cache -var/global/list/string_filename_current_key +var/global/string_filename_current_key /proc/strings_replacement(filename, key) From e2888a285b44b1f05290625781c871643a93177d Mon Sep 17 00:00:00 2001 From: Jack Edge Date: Sun, 24 Apr 2016 16:45:35 +0100 Subject: [PATCH 111/265] player_list -> ai_list --- code/modules/events/communications_blackout.dm | 2 +- code/modules/events/processor_overload.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/events/communications_blackout.dm b/code/modules/events/communications_blackout.dm index 51b4a8096dd..5d8b72775cb 100644 --- a/code/modules/events/communications_blackout.dm +++ b/code/modules/events/communications_blackout.dm @@ -14,7 +14,7 @@ "Ionospheri:%£ MCayj^j<.3-BZZZZZZT", \ "#4nd%;f4y6,>£%-BZZZZZZZT") - for(var/mob/living/silicon/ai/A in player_list) //AIs are always aware of communication blackouts. + for(var/mob/living/silicon/ai/A in ai_list) //AIs are always aware of communication blackouts. A << "
    [alert]
    " if(prob(30)) //most of the time, we don't want an announcement, so as to allow AIs to fake blackouts. diff --git a/code/modules/events/processor_overload.dm b/code/modules/events/processor_overload.dm index 0be0f058479..bf8708ac2c6 100644 --- a/code/modules/events/processor_overload.dm +++ b/code/modules/events/processor_overload.dm @@ -14,7 +14,7 @@ "Exospheri:%£ QCbyj^j[alert]
    " From 0caa59b21ad34d04f5ec328e33ac6da3a116d96a Mon Sep 17 00:00:00 2001 From: phil235 Date: Sun, 24 Apr 2016 20:26:24 +0200 Subject: [PATCH 112/265] First commit of this big PR These are the files with just tiny tweaks. Mostly modify an object's attackby so it does "return ..()" instead of "..()". If there are other things in this commit, the PR's description will explain them. --- code/datums/wires/airlock.dm | 2 +- code/game/area/areas.dm | 6 +- code/game/gamemodes/blob/theblob.dm | 8 +- .../gamemodes/changeling/powers/mutations.dm | 2 +- code/game/gamemodes/meteor/meteors.dm | 3 +- .../miniantags/abduction/abduction_gear.dm | 5 +- .../miniantags/abduction/machinery/console.dm | 2 +- .../abduction/machinery/dispenser.dm | 2 + .../gamemodes/miniantags/revenant/revenant.dm | 3 +- .../miniantags/revenant/revenant_abilities.dm | 2 +- code/game/gamemodes/nuclear/nuclearbomb.dm | 4 +- .../shadowling/shadowling_abilities.dm | 2 +- code/game/gamemodes/wizard/artefact.dm | 4 +- code/game/gamemodes/wizard/soulstone.dm | 2 + code/game/gamemodes/wizard/spellbook.dm | 2 +- code/game/machinery/Sleeper.dm | 2 + code/game/machinery/ai_slipper.dm | 26 ++-- code/game/machinery/autolathe.dm | 11 +- code/game/machinery/buttons.dm | 10 +- code/game/machinery/camera/camera_assembly.dm | 2 +- code/game/machinery/cell_charger.dm | 14 ++- code/game/machinery/cloning.dm | 17 +-- code/game/machinery/computer/aifixer.dm | 3 +- code/game/machinery/computer/card.dm | 2 +- code/game/machinery/computer/cloning.dm | 7 +- .../game/machinery/computer/communications.dm | 3 +- code/game/machinery/computer/dna_console.dm | 3 +- code/game/machinery/computer/law.dm | 2 +- code/game/machinery/computer/medical.dm | 2 +- code/game/machinery/computer/message.dm | 4 +- code/game/machinery/computer/prisoner.dm | 9 +- code/game/machinery/computer/security.dm | 17 +-- .../machinery/computer/telecrystalconsoles.dm | 27 ++-- code/game/machinery/deployable.dm | 50 ++++---- code/game/machinery/dna_scanner.dm | 5 +- code/game/machinery/doppler_array.dm | 2 +- code/game/machinery/flasher.dm | 7 +- code/game/machinery/igniter.dm | 4 +- code/game/machinery/navbeacon.dm | 3 +- code/game/machinery/pipe/pipe_dispenser.dm | 2 +- .../machinery/porta_turret/portable_turret.dm | 116 +++++++----------- .../porta_turret/portable_turret_construct.dm | 6 +- .../porta_turret/portable_turret_cover.dm | 23 ++-- code/game/machinery/rechargestation.dm | 4 +- code/game/machinery/recycler.dm | 7 +- code/game/machinery/robot_fabricator.dm | 2 + code/game/machinery/slotmachine.dm | 12 +- code/game/machinery/spaceheater.dm | 2 +- code/game/machinery/suit_storage_unit.dm | 7 +- code/game/machinery/syndicatebeacon.dm | 5 +- code/game/machinery/syndicatebomb.dm | 2 +- .../telecomms/computers/logbrowser.dm | 5 +- .../telecomms/computers/telemonitor.dm | 5 +- .../telecomms/machine_interactions.dm | 10 +- code/game/mecha/equipment/mecha_equipment.dm | 8 +- code/game/mecha/equipment/weapons/weapons.dm | 4 +- code/game/mecha/mech_bay.dm | 4 +- code/game/mecha/mecha_parts.dm | 3 +- code/game/mecha/mecha_topic.dm | 3 +- code/game/mecha/mecha_wreckage.dm | 6 +- code/game/objects/effects/decals/cleanable.dm | 6 +- .../effects/effect_system/effects_foam.dm | 16 ++- code/game/objects/effects/glowshroom.dm | 7 +- code/game/objects/items.dm | 15 +-- code/game/objects/items/crayons.dm | 7 +- code/game/objects/items/devices/camera_bug.dm | 1 + .../objects/items/devices/chameleonproj.dm | 2 +- code/game/objects/items/devices/doorCharge.dm | 1 + code/game/objects/items/devices/flashlight.dm | 15 ++- .../objects/items/devices/geiger_counter.dm | 3 +- .../objects/items/devices/lightreplacer.dm | 10 +- .../objects/items/devices/pipe_painter.dm | 5 +- code/game/objects/items/devices/powersink.dm | 2 +- .../items/devices/radio/electropack.dm | 3 +- .../items/devices/radio/encryptionkey.dm | 5 - .../objects/items/devices/radio/headset.dm | 9 +- .../game/objects/items/devices/radio/radio.dm | 10 +- code/game/objects/items/devices/scanners.dm | 10 +- code/game/objects/items/nuke_tools.dm | 4 +- code/game/objects/items/shooting_range.dm | 4 +- code/game/objects/items/stacks/rods.dm | 7 +- .../game/objects/items/stacks/sheets/glass.dm | 6 +- .../objects/items/stacks/sheets/leather.dm | 2 +- .../game/objects/items/stacks/sheets/light.dm | 7 +- .../objects/items/stacks/sheets/mineral.dm | 2 +- code/game/objects/items/stacks/stack.dm | 2 +- code/game/objects/items/stacks/tiles/light.dm | 5 +- .../objects/items/stacks/tiles/tile_types.dm | 3 +- code/game/objects/items/weapons/RCD.dm | 8 +- code/game/objects/items/weapons/RPD.dm | 4 +- .../objects/items/weapons/airlock_painter.dm | 8 +- code/game/objects/items/weapons/cards_ids.dm | 5 +- .../objects/items/weapons/cigs_lighters.dm | 11 +- .../game/objects/items/weapons/clown_items.dm | 1 + code/game/objects/items/weapons/courtroom.dm | 2 +- code/game/objects/items/weapons/defib.dm | 11 +- code/game/objects/items/weapons/explosives.dm | 2 +- .../objects/items/weapons/extinguisher.dm | 7 +- .../objects/items/weapons/flamethrower.dm | 14 +-- .../items/weapons/grenades/chem_grenade.dm | 5 +- .../objects/items/weapons/grenades/grenade.dm | 21 +--- code/game/objects/items/weapons/handcuffs.dm | 2 + .../items/weapons/implants/implantcase.dm | 7 +- .../items/weapons/implants/implantchair.dm | 5 +- .../items/weapons/implants/implanter.dm | 3 +- .../items/weapons/implants/implantpad.dm | 6 +- .../objects/items/weapons/melee/energy.dm | 4 +- code/game/objects/items/weapons/melee/misc.dm | 2 +- code/game/objects/items/weapons/mop.dm | 5 +- code/game/objects/items/weapons/paiwire.dm | 20 ++- code/game/objects/items/weapons/shields.dm | 2 +- code/game/objects/items/weapons/signs.dm | 3 +- .../items/weapons/singularityhammer.dm | 7 +- .../objects/items/weapons/storage/lockbox.dm | 14 +-- .../objects/items/weapons/storage/storage.dm | 11 +- code/game/objects/items/weapons/stunbaton.dm | 5 +- .../objects/items/weapons/tanks/tank_types.dm | 7 +- .../game/objects/items/weapons/tanks/tanks.dm | 9 +- .../objects/items/weapons/tanks/watertank.dm | 9 +- code/game/objects/items/weapons/teleprod.dm | 3 +- code/game/objects/items/weapons/tools.dm | 7 +- code/game/objects/items/weapons/twohanded.dm | 21 ++-- code/game/objects/items/weapons/weaponry.dm | 3 +- code/game/objects/structures.dm | 3 +- code/game/objects/structures/artstuff.dm | 12 +- code/game/objects/structures/barsigns.dm | 13 +- .../objects/structures/beds_chairs/bed.dm | 2 + .../objects/structures/beds_chairs/chair.dm | 2 + code/game/objects/structures/bedsheet_bin.dm | 3 +- .../structures/crates_lockers/crates/bins.dm | 2 +- .../structures/crates_lockers/crates/large.dm | 2 +- code/game/objects/structures/flora.dm | 2 +- code/game/objects/structures/girders.dm | 4 +- code/game/objects/structures/janicart.dm | 2 + code/game/objects/structures/kitchen_spike.dm | 10 +- code/game/objects/structures/mop_bucket.dm | 4 +- code/game/objects/structures/morgue.dm | 6 +- code/game/objects/structures/musician.dm | 2 +- code/game/objects/structures/noticeboard.dm | 2 + code/game/objects/structures/plasticflaps.dm | 4 - code/game/objects/structures/reflector.dm | 6 +- code/game/objects/structures/safe.dm | 7 +- code/game/objects/structures/table_frames.dm | 22 ++-- .../game/objects/structures/tank_dispenser.dm | 4 +- .../structures/transit_tubes/transit_tube.dm | 4 +- .../transit_tube_construction.dm | 5 +- .../transit_tubes/transit_tube_pod.dm | 2 + .../objects/structures/windoor_assembly.dm | 4 +- code/game/turfs/simulated/walls.dm | 2 +- code/modules/admin/verbs/debug.dm | 4 +- .../atmospherics/machinery/other/meter.dm | 2 +- .../atmospherics/machinery/pipes/pipes.dm | 8 +- .../machinery/portable/scrubber.dm | 2 +- .../awaymissions/mission_code/Cabin.dm | 2 +- code/modules/detectivework/evidence.dm | 5 +- .../detectivework/footprints_and_rag.dm | 1 + .../drinks/drinks/drinkingglass.dm | 4 +- .../kitchen machinery/food_cart.dm | 2 +- .../food&drinks/kitchen machinery/gibber.dm | 15 ++- .../kitchen machinery/icecream_vat.dm | 2 +- .../kitchen machinery/monkeyrecycler.dm | 12 +- code/modules/games/cards.dm | 1 + code/modules/holodeck/items.dm | 4 - code/modules/hydroponics/hydroponics.dm | 14 ++- code/modules/library/lib_items.dm | 4 +- code/modules/library/lib_machines.dm | 6 +- code/modules/mining/abandoned_crates.dm | 7 +- code/modules/mining/laborcamp/laborstacker.dm | 7 +- code/modules/mining/satchel_ore_boxdm.dm | 9 +- code/modules/mob/interactive.dm | 4 +- .../mob/living/carbon/carbon_defense.dm | 2 +- .../living/carbon/human/human_attackhand.dm | 3 - .../mob/living/carbon/human/human_defense.dm | 2 +- .../mob/living/carbon/human/species.dm | 12 +- .../modules/mob/living/silicon/robot/robot.dm | 13 +- .../mob/living/simple_animal/bot/medbot.dm | 2 +- .../simple_animal/friendly/farm_animals.dm | 6 +- .../mob/living/simple_animal/simple_animal.dm | 7 -- code/modules/paperwork/filingcabinet.dm | 4 +- code/modules/paperwork/handlabeler.dm | 2 - code/modules/paperwork/photocopier.dm | 2 + code/modules/paperwork/photography.dm | 6 +- code/modules/power/apc.dm | 2 - code/modules/power/gravitygenerator.dm | 14 ++- code/modules/power/port_gen.dm | 8 +- code/modules/power/power.dm | 11 +- code/modules/power/singularity/emitter.dm | 13 +- .../power/singularity/field_generator.dm | 2 +- code/modules/power/singularity/generator.dm | 6 +- .../particle_accelerator.dm | 2 +- code/modules/power/smes.dm | 4 + code/modules/power/terminal.dm | 5 +- code/modules/power/tesla/coil.dm | 10 +- code/modules/power/tracker.dm | 4 +- .../projectiles/guns/grenade_launcher.dm | 9 +- .../projectiles/guns/projectile/saw.dm | 1 + code/modules/projectiles/projectile/energy.dm | 10 +- .../reagents/chemistry/machinery/pandemic.dm | 23 ++-- .../chemistry/machinery/reagentgrinder.dm | 3 +- .../chemistry/reagents/toxin_reagents.dm | 5 +- .../reagents/reagent_containers/glass.dm | 35 ------ .../reagents/reagent_containers/spray.dm | 6 +- code/modules/reagents/reagent_dispenser.dm | 4 +- code/modules/telesci/telesci_computer.dm | 2 +- code/modules/vehicles/vehicle.dm | 3 +- icons/obj/doors/door_fire2.dmi | Bin 41754 -> 0 bytes tgstation.dme | 1 + 207 files changed, 672 insertions(+), 758 deletions(-) delete mode 100644 icons/obj/doors/door_fire2.dmi diff --git a/code/datums/wires/airlock.dm b/code/datums/wires/airlock.dm index 2644fec3b9c..4a37ef1503a 100644 --- a/code/datums/wires/airlock.dm +++ b/code/datums/wires/airlock.dm @@ -19,7 +19,7 @@ var/obj/machinery/door/airlock/A = holder if(!istype(user, /mob/living/silicon) && A.isElectrified() && A.shock(user, 100)) return FALSE - if(A.p_open) + if(A.panel_open) return TRUE /datum/wires/airlock/get_status() diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 2f54af4a901..d556f2a5b2e 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -113,7 +113,7 @@ if (!( RA.fire )) RA.set_fire_alarm_effect() for(var/obj/machinery/door/firedoor/D in RA) - if(!D.blocked) + if(!D.welded) if(D.operating) D.nextstate = CLOSED else if(!D.density) @@ -139,7 +139,7 @@ RA.mouse_opacity = 0 RA.updateicon() for(var/obj/machinery/door/firedoor/D in RA) - if(!D.blocked) + if(!D.welded) if(D.operating) D.nextstate = OPEN else if(D.density) @@ -214,7 +214,7 @@ src.mouse_opacity = 0 src.updateicon() for(var/obj/machinery/door/firedoor/D in src) - if(!D.blocked) + if(!D.welded) if(D.operating) D.nextstate = OPEN else if(D.density) diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm index c7244e547a6..1bac15b4993 100644 --- a/code/game/gamemodes/blob/theblob.dm +++ b/code/game/gamemodes/blob/theblob.dm @@ -213,14 +213,14 @@ take_damage(Proj.damage, Proj.damage_type, Proj) return 0 -/obj/effect/blob/attackby(obj/item/weapon/W, mob/living/user, params) +/obj/effect/blob/attacked_by(obj/item/I, mob/living/user) user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src) playsound(src.loc, 'sound/effects/attackblob.ogg', 50, 1) - visible_message("[user] has attacked the [src.name] with \the [W]!") - if(W.damtype == BURN) + visible_message("[user] has attacked the [src.name] with \the [I]!") + if(I.damtype == BURN) playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) - take_damage(W.force, W.damtype, user) + take_damage(I.force, I.damtype, user) /obj/effect/blob/attack_animal(mob/living/simple_animal/M) if("blob" in M.faction) //sorry, but you can't kill the blob as a blobbernaut diff --git a/code/game/gamemodes/changeling/powers/mutations.dm b/code/game/gamemodes/changeling/powers/mutations.dm index c75faf9cf4b..fddcbfa6d66 100644 --- a/code/game/gamemodes/changeling/powers/mutations.dm +++ b/code/game/gamemodes/changeling/powers/mutations.dm @@ -165,7 +165,7 @@ return if(istype(target, /obj/structure/table)) var/obj/structure/table/T = target - T.table_destroy(1) + T.table_destroy() else if(istype(target, /obj/machinery/computer)) var/obj/machinery/computer/C = target diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index 854ab2d19a1..85508dfdaea 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -162,7 +162,8 @@ make_debris() qdel(src) return - ..() + else + return ..() /obj/effect/meteor/proc/make_debris() for(var/throws = dropamt, throws > 0, throws--) diff --git a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm index ba2f6335045..9a4c69e1fbb 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm +++ b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm @@ -590,7 +590,10 @@ Congratulations! You are now trained for xenobiology research!"} icon_state = "bed" can_buckle = 1 buckle_lying = 1 - deconstructable = 0 + flags = NODECONSTRUCT + +/obj/structure/table/optable/abductor/table_destroy() + return //can't destroy the abductor's only optable. /obj/structure/bed/abductor name = "resting contraption" diff --git a/code/game/gamemodes/miniantags/abduction/machinery/console.dm b/code/game/gamemodes/miniantags/abduction/machinery/console.dm index d0becf1a888..a2f029725a3 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/console.dm +++ b/code/game/gamemodes/miniantags/abduction/machinery/console.dm @@ -195,7 +195,7 @@ user << "You link the vest to the console." vest = V else - ..() + return ..() /obj/machinery/abductor/console/proc/Dispense(item,cost=1) if(experiment && experiment.points >= cost) diff --git a/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm b/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm index aacf75770e9..5a8eb481921 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm +++ b/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm @@ -66,6 +66,8 @@ for(var/i=1,i<=gland_colors.len,i++) if(gland_types[i] == W.type) amounts[i]++ + else + return ..() /obj/machinery/abductor/gland_dispenser/Topic(href, href_list) if(..()) diff --git a/code/game/gamemodes/miniantags/revenant/revenant.dm b/code/game/gamemodes/miniantags/revenant/revenant.dm index 84664e07815..ac3816d8a0d 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant.dm @@ -174,7 +174,8 @@ spawn(30) inhibited = 0 update_action_buttons_icon() - ..() + else + return ..() /mob/living/simple_animal/revenant/adjustHealth(amount) if(!revealed) diff --git a/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm b/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm index 9e28fb9b116..b311c1e7669 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm @@ -260,7 +260,7 @@ for(var/obj/machinery/dna_scannernew/dna in T.contents) dna.open_machine() for(var/obj/structure/window/window in T.contents) - window.hit(rand(30,80)) + window.take_damage(rand(30,80)) if(window && window.fulltile) PoolOrNew(/obj/effect/overlay/temp/revenant/cracks, window.loc) for(var/obj/machinery/light/light in T.contents) diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm index 2dee631f659..fe266c02cbf 100644 --- a/code/game/gamemodes/nuclear/nuclearbomb.dm +++ b/code/game/gamemodes/nuclear/nuclearbomb.dm @@ -109,6 +109,7 @@ var/bomb_set deconstruction_state = NUKESTATE_CORE_EXPOSED update_icon() SSobj.processing += core + return if(NUKESTATE_CORE_EXPOSED) if(istype(I, /obj/item/nuke_core_container)) var/obj/item/nuke_core_container/core_box = I @@ -137,8 +138,7 @@ var/bomb_set else user << "You need more metal to do that!" return - else - ..() + return ..() /obj/machinery/nuclearbomb/proc/get_nuke_state() if(timing < 0) diff --git a/code/game/gamemodes/shadowling/shadowling_abilities.dm b/code/game/gamemodes/shadowling/shadowling_abilities.dm index 9123a969bee..cefa07ddb4a 100644 --- a/code/game/gamemodes/shadowling/shadowling_abilities.dm +++ b/code/game/gamemodes/shadowling/shadowling_abilities.dm @@ -460,7 +460,7 @@ sp.start() S.Weaken(6) for(var/obj/structure/window/W in T.contents) - W.hit(rand(80, 100)) + W.take_damage(rand(80, 100)) /obj/effect/proc_holder/spell/aoe_turf/drain_life //Deals stamina and oxygen damage to nearby humans and heals the shadowling. On a short cooldown because of the small range and situational usefulness diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index a3f69181f4a..986f9357519 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -62,7 +62,8 @@ user.visible_message("[user] seals \the [src] with \the [I].") qdel(src) return - ..() + else + return ..() /obj/item/weapon/veilrender/vealrender name = "veal render" @@ -522,7 +523,6 @@ var/global/list/multiverse = list() link = I user << "You attach [I] to the doll." update_targets() - ..() /obj/item/voodoo/check_eye(mob/user) if(loc != user) diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm index 161e329fa57..09e306ed31a 100644 --- a/code/game/gamemodes/wizard/soulstone.dm +++ b/code/game/gamemodes/wizard/soulstone.dm @@ -100,6 +100,8 @@ if(istype(O, /obj/item/device/soulstone)) var/obj/item/device/soulstone/SS = O SS.transfer_soul("CONSTRUCT",src,user) + else + return ..() ////////////////////////////Proc for moving soul in and out off stone////////////////////////////////////// diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index 393877d947c..d685bd0ea9b 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -514,7 +514,7 @@ if(!isnull(CT.limit)) CT.limit++ qdel(O) - if(istype(O, /obj/item/weapon/antag_spawner/slaughter_demon)) + else if(istype(O, /obj/item/weapon/antag_spawner/slaughter_demon)) user << "On second thought, maybe summoning a demon is a bad idea. You refund your points." uses++ for(var/datum/spellbook_entry/item/bloodbottle/BB in entries) diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index f8669e5b8ea..b2d9233a0ec 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -105,6 +105,8 @@ return if(default_deconstruction_crowbar(I)) return + return ..() + /obj/machinery/sleeper/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \ datum/tgui/master_ui = null, datum/ui_state/state = notcontained_state) ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) diff --git a/code/game/machinery/ai_slipper.dm b/code/game/machinery/ai_slipper.dm index 59ee2b315cd..acf294fd25c 100644 --- a/code/game/machinery/ai_slipper.dm +++ b/code/game/machinery/ai_slipper.dm @@ -31,10 +31,10 @@ /obj/machinery/ai_slipper/attackby(obj/item/weapon/W, mob/user, params) if(stat & (NOPOWER|BROKEN)) return - if (istype(user, /mob/living/silicon)) + if (issilicon(user)) return src.attack_hand(user) else // trying to unlock the interface - if (src.allowed(usr)) + if (src.allowed(user)) locked = !locked user << "You [ locked ? "lock" : "unlock"] the device." if (locked) @@ -43,7 +43,7 @@ user << browse(null, "window=ai_slipper") else if (user.machine==src) - src.attack_hand(usr) + src.attack_hand(user) else user << "Access denied." @@ -55,31 +55,23 @@ if(stat & (NOPOWER|BROKEN)) return if ( (get_dist(src, user) > 1 )) - if (!(istype(user, /mob/living/silicon) || IsAdminGhost(user))) + if (!(issilicon(user) || IsAdminGhost(user))) user << text("Too far away.") user.unset_machine() user << browse(null, "window=ai_slipper") return user.set_machine(src) - var/loc = src.loc - if (istype(loc, /turf)) - loc = loc:loc - if (!istype(loc, /area)) - user << text("Turret badly positioned - loc.loc is [].", loc) - return - var/area/area = loc - var/t = "AI Liquid Dispenser ([format_text(area.name)])