Merge branch 'master' of https://github.com/ParadiseSS13/Paradise into FlagBearerFluff

This commit is contained in:
Aurorablade
2018-09-29 23:30:04 -04:00
407 changed files with 4479 additions and 3624 deletions
+3 -3
View File
@@ -37,9 +37,9 @@ actual development.
* Document and explain your pull requests thoroughly. Detail what each commit changes,
and why it changes it. We do not want to have to read all of you commit names to figure
out what your pull request is about.
* Any pull request that is not solely composed of fixes or non gameplay-affecting
refactors must have a changelog. Inline changelogs are supported through the format
described [here](https://github.com/ParadiseSS13/Paradise/pull/3291#issuecomment-172950466)
* Any pull request must have a changelog, this is to allow us to know when a PR is deployed
on the live server. Inline changelogs are supported through the format described
[here](https://github.com/ParadiseSS13/Paradise/pull/3291#issuecomment-172950466)
and should be used rather than manually edited .yml file changelogs.
* Pull requests should not have any merge commits except in the case of fixing merge
conflicts for an existing pull request. New pull requests should not have any merge
+23
View File
@@ -0,0 +1,23 @@
**What does this PR do:**
Include a small to medium description of what your PR changes. Feel free to give it a little flourish if you want to show off a new feature more completely.
**Images of sprite/map changes (IF APPLICABLE):**
If you did not make a map or sprite edit, you may leave this section blank. You may include a gif of your feature if you want
**Changelog:**
*Remove this line, and appropriate fields from the changelog*
:cl: name here
add: Added new things
del: Removed old things
tweak: tweaked a few things
balance: rebalanced something
fix: fixed a few things
wip: added a few works in progress
soundadd: added a new sound thingy
sounddel: removed an old sound thingy
imageadd: added some icons and images
imagedel: deleted some icons and images
spellcheck: fixed a few typos
experiment: added an experimental thingy
/:cl:
+1 -1
View File
@@ -134,7 +134,7 @@ CREATE TABLE `SS13_death` (
DROP TABLE IF EXISTS `SS13_donators`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `donators` (
CREATE TABLE `SS13_donators` (
`patreon_name` varchar(32) NOT NULL,
`tier` int(2),
`ckey` varchar(32) COMMENT 'Manual Field',
@@ -1,7 +1,7 @@
"a" = (/turf/space,/area/space)
"b" = (/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/ruin/powered)
"b" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/ruin/powered)
"c" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/ruin/powered)
"d" = (/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/ruin/powered)
"d" = (/turf/space,/turf/simulated/shuttle/wall{dir = 2; icon_state = "diagonalWall3"},/area/ruin/powered)
"e" = (/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "propulsion"; tag = "icon-propulsion (EAST)"},/turf/space,/area/ruin/powered)
"f" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/shuttle/engine/heater{tag = "icon-heater (WEST)"; icon_state = "heater"; dir = 8},/turf/simulated/floor/plating,/area/ruin/powered)
"g" = (/obj/structure/table/wood,/obj/item/clothing/under/shorts/black,/turf/simulated/shuttle/floor{tag = "icon-floor5"; icon_state = "floor5"},/area/ruin/powered)
@@ -24,22 +24,22 @@
"x" = (/obj/machinery/door_control{name = "Strange Ship Door Control"; pixel_x = 6; pixel_y = 0; id = "strange ship"},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/ruin/powered)
"y" = (/obj/machinery/light,/turf/simulated/shuttle/floor{tag = "icon-floor5"; icon_state = "floor5"},/area/ruin/powered)
"z" = (/mob/living/simple_animal/bot/medbot,/turf/simulated/shuttle/floor{tag = "icon-floor5"; icon_state = "floor5"},/area/ruin/powered)
"A" = (/turf/simulated/shuttle/wall{dir = 2; icon_state = "diagonalWall3"},/area/ruin/powered)
"A" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/ruin/powered)
"B" = (/obj/structure/stool/bed/chair,/turf/simulated/shuttle/floor{tag = "icon-floor5"; icon_state = "floor5"},/area/ruin/powered)
"C" = (/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/ruin/powered)
"C" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/ruin/powered)
"D" = (/obj/machinery/light,/obj/structure/stool/bed,/turf/simulated/shuttle/floor{tag = "icon-floor5"; icon_state = "floor5"},/area/ruin/powered)
(1,1,1) = {"
aabcccccdaaaa
aabcccccAaaaa
aefghijkcaaaa
aeflhhhhccccd
aeflhhhhccccA
bccccmhhcmhjc
cnophhhhqhhrc
shhthhhhuhvwc
xhypzhhhqhhnc
Accccmhhcmhjc
dccccmhhcmhjc
aefBhhhhccccC
aefnnDhjcaaaa
aaAcccccCaaaa
aadcccccCaaaa
"}
+4 -4
View File
@@ -177,7 +177,7 @@
"du" = (/obj/structure/stool,/turf/simulated/floor/plasteel,/area/awaymission/academy/classrooms)
"dv" = (/turf/simulated/floor/plasteel,/area/awaymission/academy/classrooms)
"dw" = (/turf/simulated/floor/plasteel{icon_state = "green"; dir = 4},/area/awaymission/academy/classrooms)
"dx" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/effect/landmark{name = "awaystart"},/obj/item/weldingtool,/turf/simulated/floor/greengrid,/area/awaymission/academy/classrooms)
"dx" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/item/weldingtool,/turf/simulated/floor/greengrid,/area/awaymission/academy/classrooms)
"dy" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/greengrid,/area/awaymission/academy/classrooms)
"dz" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/greengrid,/area/awaymission/academy/classrooms)
"dA" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/academy/classrooms)
@@ -200,6 +200,7 @@
"dR" = (/obj/structure/kitchenspike,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/academy/classrooms)
"dS" = (/obj/structure/mineral_door/iron,/turf/simulated/floor/plasteel,/area/awaymission/academy/classrooms)
"dT" = (/obj/structure/mineral_door/iron,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/academy/classrooms)
"dU" = (/obj/effect/landmark{name = "awaystart"},/turf/simulated/floor/wood,/area/awaymission/academy/classrooms)
"dV" = (/obj/machinery/seed_extractor,/turf/simulated/floor/plasteel,/area/awaymission/academy/classrooms)
"dW" = (/obj/structure/cable,/turf/simulated/floor/plasteel,/area/awaymission/academy/classrooms)
"dX" = (/obj/structure/closet/crate/freezer,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/academy/classrooms)
@@ -305,7 +306,6 @@
"fT" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel,/area/awaymission/academy/classrooms)
"fU" = (/obj/structure/target_stake,/turf/simulated/floor/plasteel,/area/awaymission/academy/classrooms)
"fV" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/awaymission/academy/classrooms)
"fW" = (/obj/effect/landmark{name = "awaystart"},/turf/simulated/floor/plating,/area/awaymission/academy/classrooms)
"fX" = (/obj/structure/grille,/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/window/reinforced{dir = 5},/turf/simulated/floor/plating,/area/awaymission/academy/classrooms)
"fY" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/awaymission/academy/classrooms)
"fZ" = (/obj/structure/table,/obj/item/pen/red,/turf/simulated/floor/plasteel,/area/awaymission/academy/classrooms)
@@ -655,7 +655,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabscXcYcZcZcZcZdadvbEdbdcdcdcdcdcdcddasbrbJbKbraVapbrbJbKbrasasasasasasasasasabbsbsbsbsbsbsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsdededebVbVdvcMdvbEdcdcdfdcdfdcdfdcasbrbrbrbraVapbrbrbrbrasdhdidjdkdidididjdidlbEdmdmdnbsbsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsdodpdqbVdvdvcMdrbEdcdcdsdcdsdcdsdcasaFaFaFaFaVapaFaFaFaFasdtdudvjMdudvdvdvdvdwbEdmdmdmdmbsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsdxdydzcYcYcYdAdvbEdcdcdcdcdfdcdfdcasaFdBdBaFaVapaFdBdBaFasdtdvdvdvdvdvdvdCdDdwdEdmkydmdFbsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsdxdydzcYcYcYdAdvbEdcdcdUdcdfdcdfdcasaFdBdBaFaVapaFdBdBaFasdtdvdvdvdvdvdvdCdDdwdEdmkydmdFbsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsdGdpdHbVdvdvcMdvbEdcdcdcdcdsdcdsdcasaFdBdBaFaVapaFdBdBaFasdtdudvdvdudIdvdJdKdwbEdmdmdmdmbsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsdedededvbVdvcMdvbEdcdcdcdcdcdcdcdcasaFdBdBaFaVapaFdBdBaFasdtdvdvdvdvdvdvdLdMdNdOdPdQdmdRbsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsbsbsbsbEbEbEdSdTbEbEbEewewbEbEbEbEbEasasasasasaVapasasasasasdtdudvdvdvdVdvdvdWdwbEdXdYdmdRbsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -669,7 +669,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsdZdZbsfsftfuedfvfwfefefefefxeieifyfefefefzekeihEekekeieieibEeCeCeCeCfAeCeCeCeCeFeGeGeGbsbsaPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsbsbsbsbsbsbEdSdTbEbEbEbEbEererererbEbEfBfCfDfBkTfDfDfBbEbEbEbEbEbEbEbEbEbEbEbEbEbEbEbsbsaPaPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsbBbBbBfEfFfGfHfIfIfJbEfKdcdcdcdcdcbEfLfCfDfLkUfDfDfMbEfNfOfPbzbzkvfQfRfSfTdvdvfUbsbsaPaaaPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsfVfWbBfXfYdvdvdvfZgabEdcgbdcgcgcdcgdgegffDfLkUfDfDfLbEggghgigjggcAdvgkdvdvdvdvbsbsaPaPaaaPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsfVbBbBfXfYdvdvdvfZgabEdcgbdcgcgcdcgdgegffDfLkUfDfDfLbEggghgigjggcAdvgkdvdvdvdvbsbsaPaPaaaPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaSaaaaaaaaaaaaaaaaaaaaaabsglbBbBgmfYdvgndvdvgobEdcdfdcdcdcdcgpfLfDfDfLkUfDfDfLbEgggqggggggcAfQkzdvdvfUbsbsaPaaaPaaaPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaSaSaSaSaaaaaaaaaaaaaaaaaabsgrgrgrfXfYdvdudvdvgsbEgtdsdckAgudcgpfLfDfDfLkUfDfDgvbEgwgqggggggcAdvgxdvgybsbsaPaaaaaPaaaPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSkBaSaSaSaaaaaaaaaaaaaaaaaabsgzgzgzfXfYdvgAdvgngobEdcgbdcdcdcdcgBgegCgDfLkUfDfDfLbEgggqdggEgGcAgHfRfUbsbsaPaaaaaaaPaaaPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -8,16 +8,16 @@
"ah" = (/turf/simulated/shuttle/wall{tag = "icon-swall14"; icon_state = "swall14"},/area/awaymission/BMPship/Fore)
"ai" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s10"; icon_state = "swall_s10"; dir = 2},/area/awaymission/BMPship/Fore)
"aj" = (/mob/living/simple_animal/hostile/carp,/turf/space,/area/space)
"ak" = (/obj/machinery/porta_turret{lethal = 1; name = "ship defense turret"},/turf/simulated/floor/engine,/area/awaymission/BMPship/Aft)
"ak" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"},/area/awaymission/BMPship/Gate)
"al" = (/turf/simulated/floor/engine,/area/awaymission/BMPship/Fore)
"am" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/simulated/floor/engine,/area/awaymission/BMPship/Aft)
"an" = (/turf/simulated/floor/plating,/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2},/area/awaymission/BMPship/Aft)
"am" = (/turf/simulated/shuttle/wall{tag = "icon-swall4"; icon_state = "swall4"},/area/awaymission/BMPship/Gate)
"an" = (/turf/simulated/shuttle/wall{tag = "icon-swall14"; icon_state = "swall14"},/area/awaymission/BMPship/Gate)
"ao" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"ap" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/simulated/floor/engine,/area/awaymission/BMPship/Aft)
"aq" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/simulated/floor/engine,/area/awaymission/BMPship/Aft)
"aq" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f10"; icon_state = "swall_f10"; dir = 2},/area/awaymission/BMPship/Gate)
"ar" = (/turf/simulated/floor/plating,/area/awaymission/BMPship/Fore)
"as" = (/obj/structure/lattice,/turf/space,/area/space)
"at" = (/obj/machinery/light/small,/turf/simulated/floor/engine,/area/awaymission/BMPship/Aft)
"at" = (/obj/machinery/porta_turret{lethal = 1; name = "ship defense turret"},/turf/simulated/floor/engine,/area/awaymission/BMPship/Gate)
"au" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc/noalarm{dir = 1; equipment = 0; lighting = 0; locked = 0; operating = 0; pixel_y = 24; req_access = ""},/turf/simulated/floor/plasteel{tag = "icon-carpet"; icon_state = "carpet"},/area/awaymission/BMPship/Fore)
"av" = (/obj/structure/table,/obj/structure/reagent_dispensers/beerkeg,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
"aw" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/apc/noalarm{dir = 1; environ = 0; equipment = 3; locked = 0; operating = 0; req_access = ""},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
@@ -25,41 +25,41 @@
"ay" = (/turf/simulated/shuttle/wall{tag = "icon-swall14"; icon_state = "swall14"},/area/awaymission/BMPship/Aft)
"az" = (/turf/simulated/shuttle/wall{tag = "icon-swall13"; icon_state = "swall13"},/area/awaymission/BMPship/Aft)
"aA" = (/turf/simulated/shuttle/wall{tag = "icon-swall8"; icon_state = "swall8"},/area/awaymission/BMPship/Aft)
"aB" = (/obj/machinery/door/airlock/silver{locked = 1},/turf/simulated/floor/plating{tag = "icon-panelscorched"; icon_state = "panelscorched"},/area/awaymission/BMPship/Aft)
"aB" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/simulated/floor/engine,/area/awaymission/BMPship/Gate)
"aC" = (/turf/simulated/shuttle/wall{tag = "icon-swall4"; icon_state = "swall4"},/area/awaymission/BMPship/Aft)
"aD" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"; dir = 2},/area/awaymission/BMPship/Aft)
"aE" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f6"; icon_state = "swall_f6"; dir = 2},/area/awaymission/BMPship/Aft)
"aF" = (/turf/simulated/shuttle/wall,/area/awaymission/BMPship/Aft)
"aG" = (/obj/structure/stool/bed/roller,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Aft)
"aH" = (/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Aft)
"aI" = (/obj/item/restraints/handcuffs,/obj/structure/closet/crate,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Aft)
"aJ" = (/obj/item/scalpel,/obj/structure/closet/crate,/obj/item/tank/anesthetic,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Aft)
"aK" = (/obj/item/bodybag,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Aft)
"aL" = (/obj/item/storage/box/syringes,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Aft)
"aM" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Aft)
"aN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Aft)
"aO" = (/obj/machinery/computer/operating,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Aft)
"aD" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/awaymission/BMPship/Gate)
"aE" = (/turf/simulated/floor/engine,/area/awaymission/BMPship/Gate)
"aF" = (/turf/simulated/floor/plating,/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2},/area/awaymission/BMPship/Gate)
"aG" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"aH" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/simulated/floor/engine,/area/awaymission/BMPship/Gate)
"aI" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"aJ" = (/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"aK" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/simulated/floor/engine,/area/awaymission/BMPship/Gate)
"aL" = (/obj/machinery/light/small,/turf/simulated/floor/engine,/area/awaymission/BMPship/Gate)
"aM" = (/turf/simulated/shuttle/wall{tag = "icon-swall7"; icon_state = "swall7"},/area/awaymission/BMPship/Gate)
"aN" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f6"; icon_state = "swall_f6"; dir = 2},/area/awaymission/BMPship/Gate)
"aO" = (/turf/simulated/shuttle/wall{tag = "icon-swall13"; icon_state = "swall13"},/area/awaymission/BMPship/Gate)
"aP" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"},/area/awaymission/BMPship/Aft)
"aQ" = (/turf/simulated/floor/plating{tag = "icon-warnplate (NORTHWEST)"; icon_state = "warnplate"; dir = 9},/area/awaymission/BMPship/Aft)
"aR" = (/obj/structure/closet/crate/freezer,/obj/item/reagent_containers/food/snacks/meat,/obj/item/reagent_containers/food/snacks/meat,/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/awaymission/BMPship/Aft)
"aS" = (/obj/structure/closet/crate/freezer,/obj/item/reagent_containers/food/snacks/meat,/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/awaymission/BMPship/Aft)
"aT" = (/obj/structure/table,/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/awaymission/BMPship/Aft)
"aU" = (/obj/structure/table,/obj/item/storage/box,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/awaymission/BMPship/Aft)
"aV" = (/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/awaymission/BMPship/Aft)
"aW" = (/turf/simulated/floor/plating{tag = "icon-warnplate (NORTHEAST)"; icon_state = "warnplate"; dir = 5},/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2},/area/awaymission/BMPship/Aft)
"aX" = (/turf/simulated/floor/plating/airless{tag = "icon-platingdmg2"; icon_state = "platingdmg2"},/area/awaymission/BMPship/Aft)
"aY" = (/turf/simulated/floor/plating/airless{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/awaymission/BMPship/Aft)
"aZ" = (/obj/effect/gibspawner/generic,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Aft)
"ba" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Aft)
"aQ" = (/obj/machinery/door/airlock/silver{locked = 1},/turf/simulated/floor/plating{tag = "icon-panelscorched"; icon_state = "panelscorched"},/area/awaymission/BMPship/Gate)
"aR" = (/turf/simulated/shuttle/wall{tag = "icon-swall8"; icon_state = "swall8"},/area/awaymission/BMPship/Gate)
"aS" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"; dir = 2},/area/awaymission/BMPship/Gate)
"aT" = (/turf/simulated/shuttle/wall,/area/awaymission/BMPship/Gate)
"aU" = (/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
"aV" = (/obj/structure/stool/bed/roller,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
"aW" = (/obj/item/scalpel,/obj/structure/closet/crate,/obj/item/tank/anesthetic,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
"aX" = (/obj/item/restraints/handcuffs,/obj/structure/closet/crate,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
"aY" = (/obj/item/storage/box/syringes,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
"aZ" = (/obj/item/bodybag,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
"ba" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
"bb" = (/turf/simulated/shuttle/wall{tag = "icon-swall1"; icon_state = "swall1"},/area/awaymission/BMPship/Aft)
"bc" = (/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/awaymission/BMPship/Aft)
"bc" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
"bd" = (/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"be" = (/obj/item/storage/box,/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"bf" = (/obj/machinery/gateway{dir = 9},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"bg" = (/obj/machinery/gateway{dir = 1},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"bh" = (/obj/machinery/gateway{dir = 5},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"bi" = (/obj/item/hand_labeler,/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"bj" = (/obj/structure/largecrate,/turf/simulated/floor/plating{tag = "icon-warnplate (EAST)"; icon_state = "warnplate"; dir = 4},/area/awaymission/BMPship/Aft)
"be" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"},/area/awaymission/BMPship/Gate)
"bf" = (/obj/machinery/computer/operating,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
"bg" = (/obj/structure/closet/crate/freezer,/obj/item/reagent_containers/food/snacks/meat,/obj/item/reagent_containers/food/snacks/meat,/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/awaymission/BMPship/Gate)
"bh" = (/turf/simulated/floor/plating{tag = "icon-warnplate (NORTHWEST)"; icon_state = "warnplate"; dir = 9},/area/awaymission/BMPship/Gate)
"bi" = (/obj/structure/table,/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/awaymission/BMPship/Gate)
"bj" = (/obj/structure/closet/crate/freezer,/obj/item/reagent_containers/food/snacks/meat,/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/awaymission/BMPship/Gate)
"bk" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Fore)
"bl" = (/obj/item/stack/spacecash/c500,/obj/item/stack/spacecash/c100,/turf/simulated/floor/wood,/area/awaymission/BMPship/Fore)
"bm" = (/obj/structure/stool/bed,/obj/item/bedsheet/yellow,/turf/simulated/floor/wood,/area/awaymission/BMPship/Fore)
@@ -69,17 +69,17 @@
"bq" = (/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/awaymission/BMPship/Fore)
"br" = (/turf/simulated/floor/plating{tag = "icon-warnplate (NORTHEAST)"; icon_state = "warnplate"; dir = 5},/area/awaymission/BMPship/Fore)
"bs" = (/obj/structure/sign/vacuum,/turf/simulated/shuttle/wall{tag = "icon-swall1"; icon_state = "swall1"},/area/awaymission/BMPship/Fore)
"bt" = (/turf/simulated/floor/plating/airless{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/awaymission/BMPship/Aft)
"bu" = (/turf/simulated/floor/plating/airless{tag = "icon-panelscorched"; icon_state = "panelscorched"},/area/awaymission/BMPship/Aft)
"bv" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/item/clothing/glasses/regular/hipster,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Aft)
"bw" = (/obj/machinery/door/unpowered/shuttle,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated,/area/awaymission/BMPship/Aft)
"bx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/awaymission/BMPship/Aft)
"by" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"bz" = (/obj/structure/closet/crate/freezer,/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"bA" = (/obj/machinery/gateway{dir = 8},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"bB" = (/obj/machinery/gateway/centeraway{calibrated = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"bC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/gateway{dir = 4},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"bD" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"bt" = (/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/awaymission/BMPship/Gate)
"bu" = (/obj/structure/table,/obj/item/storage/box,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/awaymission/BMPship/Gate)
"bv" = (/turf/simulated/floor/plating{tag = "icon-warnplate (NORTHEAST)"; icon_state = "warnplate"; dir = 5},/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2},/area/awaymission/BMPship/Gate)
"bw" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/apc/noalarm{dir = 1; environ = 2; equipment = 0; lighting = 0; locked = 0; operating = 1; req_access = ""},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/awaymission/BMPship/Gate)
"bx" = (/turf/simulated/floor/plating/airless{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/awaymission/BMPship/Gate)
"by" = (/turf/simulated/floor/plating/airless{tag = "icon-platingdmg2"; icon_state = "platingdmg2"},/area/awaymission/BMPship/Gate)
"bz" = (/obj/effect/gibspawner/generic,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
"bA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
"bB" = (/turf/simulated/shuttle/wall{tag = "icon-swall1"; icon_state = "swall1"},/area/awaymission/BMPship/Gate)
"bC" = (/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/awaymission/BMPship/Gate)
"bD" = (/obj/item/storage/box,/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"bE" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Fore)
"bF" = (/turf/simulated/floor/wood,/area/awaymission/BMPship/Fore)
"bG" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/wood,/area/awaymission/BMPship/Fore)
@@ -87,10 +87,10 @@
"bI" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plating,/area/awaymission/BMPship/Fore)
"bJ" = (/turf/simulated/shuttle/wall{tag = "icon-swall2"; icon_state = "swall2"},/area/awaymission/BMPship/Aft)
"bK" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"bL" = (/obj/machinery/gateway{dir = 10},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"bM" = (/obj/machinery/gateway,/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"bN" = (/obj/machinery/gateway{dir = 6},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"bO" = (/obj/structure/closet/crate,/obj/item/stack/spacecash/c1000,/turf/simulated/floor/plating{tag = "icon-warnplate (EAST)"; icon_state = "warnplate"; dir = 4},/area/awaymission/BMPship/Aft)
"bL" = (/obj/machinery/gateway{dir = 1},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"bM" = (/obj/machinery/gateway{dir = 9},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"bN" = (/obj/machinery/gateway{dir = 5},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"bO" = (/obj/structure/largecrate,/turf/simulated/floor/plating{tag = "icon-warnplate (EAST)"; icon_state = "warnplate"; dir = 4},/area/awaymission/BMPship/Gate)
"bP" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Fore)
"bQ" = (/turf/simulated/floor/plasteel{tag = "icon-wood-broken"; icon_state = "wood-broken"},/area/awaymission/BMPship/Fore)
"bR" = (/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/awaymission/BMPship/Fore)
@@ -98,15 +98,15 @@
"bT" = (/turf/simulated/floor/plating{tag = "icon-warnplate (SOUTHEAST)"; icon_state = "warnplate"; dir = 6},/area/awaymission/BMPship/Fore)
"bU" = (/turf/simulated/shuttle/wall{tag = "icon-swall2"; icon_state = "swall2"},/area/awaymission/BMPship/Fore)
"bV" = (/turf/simulated/shuttle/wall{tag = "icon-swall11"; icon_state = "swall11"},/area/awaymission/BMPship/Aft)
"bW" = (/obj/machinery/light,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Aft)
"bX" = (/obj/machinery/door_control{id = "packerMed"; pixel_y = -24},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Aft)
"bY" = (/obj/machinery/sleeper{dir = 1},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Aft)
"bW" = (/obj/item/hand_labeler,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"bX" = (/turf/simulated/floor/plating/airless{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/awaymission/BMPship/Gate)
"bY" = (/turf/simulated/floor/plating/airless{tag = "icon-panelscorched"; icon_state = "panelscorched"},/area/awaymission/BMPship/Gate)
"bZ" = (/obj/machinery/seed_extractor,/obj/item/seeds/plump/walkingmushroom,/turf/simulated/floor/plasteel{tag = "icon-green"; icon_state = "green"},/area/awaymission/BMPship/Midship)
"ca" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"cb" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/item/hand_labeler,/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"cc" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"cd" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/item/storage/box,/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"ce" = (/turf/simulated/floor/plating{tag = "icon-warnplate (EAST)"; icon_state = "warnplate"; dir = 4},/area/awaymission/BMPship/Aft)
"ca" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/item/clothing/glasses/regular/hipster,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
"cb" = (/obj/machinery/door/unpowered/shuttle,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated,/area/awaymission/BMPship/Gate)
"cc" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"cd" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/awaymission/BMPship/Gate)
"ce" = (/obj/structure/closet/crate/freezer,/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"cf" = (/turf/simulated/shuttle/wall{tag = "icon-swallc2"; icon_state = "swallc2"},/area/awaymission/BMPship/Fore)
"cg" = (/turf/simulated/shuttle/wall{tag = "icon-swall8"; icon_state = "swall8"},/area/awaymission/BMPship/Fore)
"ch" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/floor/plasteel{tag = "icon-carpetside (NORTH)"; icon_state = "carpetside"; dir = 1},/area/awaymission/BMPship/Fore)
@@ -117,17 +117,17 @@
"cm" = (/turf/simulated/shuttle/wall{tag = "icon-swall13"; icon_state = "swall13"},/area/awaymission/BMPship/Midship)
"cn" = (/turf/simulated/shuttle/wall{tag = "icon-swall15"; icon_state = "swall15"},/area/awaymission/BMPship/Aft)
"co" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f10"; icon_state = "swall_f10"; dir = 2},/area/awaymission/BMPship/Aft)
"cp" = (/obj/machinery/door/poddoor/shutters{dir = 2; id_tag = "packerMed"},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Aft)
"cq" = (/obj/structure/largecrate,/turf/simulated/floor/plating{tag = "icon-warnplate (SOUTHWEST)"; icon_state = "warnplate"; dir = 10},/area/awaymission/BMPship/Aft)
"cr" = (/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/awaymission/BMPship/Aft)
"cs" = (/obj/machinery/light/small,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/awaymission/BMPship/Aft)
"ct" = (/obj/structure/kitchenspike,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/awaymission/BMPship/Aft)
"cu" = (/obj/structure/closet/crate,/obj/item/analyzer,/obj/item/stack/spacecash/c10,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/awaymission/BMPship/Aft)
"cv" = (/obj/structure/closet/crate,/obj/item/stack/spacecash/c1000,/obj/item/stack/spacecash/c500,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/awaymission/BMPship/Aft)
"cw" = (/obj/structure/closet/crate/freezer,/obj/item/reagent_containers/food/snacks/meat,/obj/item/reagent_containers/food/snacks/hugemushroomslice,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/awaymission/BMPship/Aft)
"cx" = (/obj/machinery/door_control{id = "packerCargo"; pixel_y = -24},/obj/machinery/light/small,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/awaymission/BMPship/Aft)
"cy" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/awaymission/BMPship/Aft)
"cz" = (/turf/simulated/floor/plating{tag = "icon-warnplate (SOUTHEAST)"; icon_state = "warnplate"; dir = 6},/area/awaymission/BMPship/Aft)
"cp" = (/obj/machinery/gateway/centeraway{calibrated = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"cq" = (/obj/machinery/gateway{dir = 8},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"cr" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"cs" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/gateway{dir = 4},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"ct" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"cu" = (/turf/simulated/shuttle/wall{tag = "icon-swall2"; icon_state = "swall2"},/area/awaymission/BMPship/Gate)
"cv" = (/obj/machinery/gateway,/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"cw" = (/obj/machinery/gateway{dir = 10},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"cx" = (/obj/machinery/gateway{dir = 6},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"cy" = (/obj/structure/closet/crate,/obj/item/stack/spacecash/c1000,/turf/simulated/floor/plating{tag = "icon-warnplate (EAST)"; icon_state = "warnplate"; dir = 4},/area/awaymission/BMPship/Gate)
"cz" = (/turf/simulated/shuttle/wall{tag = "icon-swall11"; icon_state = "swall11"},/area/awaymission/BMPship/Gate)
"cA" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f6"; icon_state = "swall_f6"; dir = 2},/area/awaymission/BMPship/Fore)
"cB" = (/turf/simulated/floor/plasteel{tag = "icon-carpet"; icon_state = "carpet"},/turf/simulated/shuttle/wall{tag = "icon-swall_f9"; icon_state = "swall_f9"; dir = 2},/area/awaymission/BMPship/Fore)
"cC" = (/turf/simulated/floor/plasteel{tag = "icon-carpet"; icon_state = "carpet"},/area/awaymission/BMPship/Fore)
@@ -151,7 +151,7 @@
"cU" = (/obj/structure/table,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
"cV" = (/obj/structure/table,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
"cW" = (/turf/simulated/shuttle/wall{tag = "icon-swall7"; icon_state = "swall7"},/area/awaymission/BMPship/Aft)
"cX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/poddoor/shutters{dir = 2; id_tag = "packerCargo"},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"cX" = (/obj/machinery/light,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
"cY" = (/turf/simulated/floor/plasteel{tag = "icon-carpet15-13 (EAST)"; icon_state = "carpet15-13"; dir = 4},/area/awaymission/BMPship/Fore)
"cZ" = (/turf/simulated/floor/plasteel{tag = "icon-carpet15-7 (EAST)"; icon_state = "carpet15-7"; dir = 4},/area/awaymission/BMPship/Fore)
"da" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{tag = "icon-carpet15-7 (EAST)"; icon_state = "carpet15-7"; dir = 4},/area/awaymission/BMPship/Fore)
@@ -473,6 +473,27 @@
"je" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/awaymission)
"jf" = (/turf/space,/area/crew_quarters/bar)
"jg" = (/turf/space,/area/exploration/methlab)
"jh" = (/obj/machinery/door_control{id = "packerMed"; pixel_y = -24},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
"ji" = (/obj/machinery/sleeper{dir = 1},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
"jj" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"jk" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"jl" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/item/hand_labeler,/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"jm" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/item/storage/box,/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"jn" = (/turf/simulated/floor/plating{tag = "icon-warnplate (EAST)"; icon_state = "warnplate"; dir = 4},/area/awaymission/BMPship/Gate)
"jo" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
"jp" = (/turf/simulated/shuttle/wall{tag = "icon-swall15"; icon_state = "swall15"},/area/awaymission/BMPship/Gate)
"jq" = (/obj/machinery/door/poddoor/shutters{dir = 2; id_tag = "packerMed"},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Gate)
"jr" = (/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/awaymission/BMPship/Gate)
"js" = (/obj/structure/largecrate,/turf/simulated/floor/plating{tag = "icon-warnplate (SOUTHWEST)"; icon_state = "warnplate"; dir = 10},/area/awaymission/BMPship/Gate)
"jt" = (/obj/structure/kitchenspike,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/awaymission/BMPship/Gate)
"ju" = (/obj/machinery/light/small,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/awaymission/BMPship/Gate)
"jv" = (/obj/structure/closet/crate,/obj/item/stack/spacecash/c1000,/obj/item/stack/spacecash/c500,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/awaymission/BMPship/Gate)
"jw" = (/obj/structure/closet/crate,/obj/item/analyzer,/obj/item/stack/spacecash/c10,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/awaymission/BMPship/Gate)
"jx" = (/obj/machinery/door_control{id = "packerCargo"; pixel_y = -24},/obj/machinery/light/small,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/awaymission/BMPship/Gate)
"jy" = (/obj/structure/closet/crate/freezer,/obj/item/reagent_containers/food/snacks/meat,/obj/item/reagent_containers/food/snacks/hugemushroomslice,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/awaymission/BMPship/Gate)
"jz" = (/turf/simulated/floor/plating{tag = "icon-warnplate (SOUTHEAST)"; icon_state = "warnplate"; dir = 6},/area/awaymission/BMPship/Gate)
"jA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/awaymission/BMPship/Gate)
"jB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/poddoor/shutters{dir = 2; id_tag = "packerCargo"},/turf/simulated/floor/plating,/area/awaymission/BMPship/Gate)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -523,18 +544,18 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaCaxaxayaxcoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamakezdhaoancoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaajaaaaaaapezezeybdbdancoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasaaaaaaaaaaaaaaaaaaaaaaaaaqakatdhbdbdbdcWcoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasaEaxaxaxaxaxaxaxaxaxayaxaxaxazaAaBaCazazaxaDcoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasaaasaFaGaHaIaJaKaLaMaNaOaPaQaRaSaTaUaVaVaVaVaVaVaWcoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafagagahagagagagagagagaiaaaaaaaaaaaaasaXaYaHaHaZaHaHaHbaaHaHbbbcbdbdbebdbdbfbgbhbdbibjaPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacababacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkblbmbnbobpbqbpbqbpbrbsaaaaaaaaaaasbtaYaHbuaHaHaHaGaHbvaNaNbwbxbybdbzbdbdbAbBbCbDbdbjaPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabEbFbGbnbHararararararbIaaaaaaasaEaFaHbuaYaHbuaHaHaHaZaHaHaHbJbcbKbdbdbdbdbLbMbNbdbdbOaPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPbQbFbnarbRbRbSbRbRbTbUaaaaaaaEbVbtbuaHbWbXaHaHaHbYaHbWbYaHaPbccacbcccccdccccccccbyceaPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacfcgchcicjckclclclclclcmclclclcmcnaxaxaxaxaAcpcpcpaCaxaxaxaxbVcqcrcsctcrcrcucvcwcxcyczaPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAcBcCcCaucCcEcFcGcHcIcJcKcIcLcGcMcNcOcPcQcRcMcMcMcMcScTcUavcVcWaxaxaxaxaxaxaxaxayaAcXaCcncoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaamakakanakaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBataEaDaGaFaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaaaaajaaaaaaaHaEaEaIaJaJaFaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasaaaaaaaaaaaaaaaaaaaaaaaaaKataLaDaJaJaJaMaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasaNakakakakakakakakakanakakakaOaRaQamaOaOakaSaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasaaasaTaVaUaXaWaZaYbcbabfbebhbgbjbibubtbtbtbtbtbwbvaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafagagahagagagagagagagaiaaaaaaaaaaaaasbybxaUaUbzaUaUaUbAaUaUbBbCaJaJbDaJaJbMbLbNaJbWbObeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacababacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkblbmbnbobpbqbpbqbpbrbsaaaaaaaaaaasbXbxaUbYaUaUaUaVaUcababacbcdccaJceaJaJcqcpcscrctbObeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabEbFbGbnbHararararararbIaaaaaaasaNaTaUbYbxaUbYaUaUaUbzaUaUaUcubCctaJaJaJaJcwcvcxaJctcybeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPbQbFbnarbRbRbSbRbRbTbUaaaaaaaNczbXbYaUcXjhaUaUaUjiaUcXjiaUbebCjjjljkjkjmjkjkjkjkjojnbeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacfcgchcicjckclclclclclcmclclclcmjpakakakakaRjqjqjqamakakakakczjsjrjujtjrjrjwjvjyjxjAjzbeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAcBcCcCaucCcEcFcGcHcIcJcKcIcLcGcMcNcOcPcQcRcMcMcMcMcScTcUavcVaMakakakakakakakakanaRjBamjpcoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAcBcYcZcYdacCcEcMdbcHdcdcdcdccLcMcMdddedededfcMcMcMcMdgdgcMdgcMdhdididjdkdldmdldnaPdodpdqdrazaxaycoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAcBcCdsdtdsdudvcEcMcMcHdcdwdcdccLcMcMdxdydzdAdBcMcMcMcMcMcMcMcMcMaPdjdCdjbJdDdEdFdGaPdHdpdodoawdJcWazaxcoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAcBcCcCdKdLdMdNdOcEcMcMdPdQdQbZdQdScMcMdTcMdUdVdVdVdVdVdVdVdVdVdWcMdhdjdXdjdraxaxaxaxbVcDdIdZeaebdYbbedeedRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -520,7 +520,7 @@
"jZ" = (/obj/structure/table,/obj/item/firstaid_arm_assembly,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/awaymission/centcomAway/hangar)
"ka" = (/obj/structure/table,/obj/item/flash,/obj/item/flash,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/awaymission/centcomAway/hangar)
"kb" = (/obj/structure/stool/bed/chair{dir = 1},/mob/living/simple_animal/hostile/russian/ranged{loot = list(/obj/effect/landmark/mobcorpse/russian/ranged)},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/awaymission/centcomAway/hangar)
"kc" = (/obj/structure/table,/obj/item/mmi/radio_enabled,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/awaymission/centcomAway/hangar)
"kc" = (/obj/structure/table,/obj/item/mmi,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/awaymission/centcomAway/hangar)
"kd" = (/obj/structure/table,/obj/item/storage/toolbox/mechanical,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/awaymission/centcomAway/hangar)
"ke" = (/obj/machinery/door/airlock/maintenance_hatch{req_access_txt = "101"},/turf/simulated/floor/plating,/area/awaymission/centcomAway/general)
"kf" = (/obj/machinery/door/window/northright,/obj/machinery/door/window/southleft,/turf/simulated/floor/plasteel{icon_state = "floor"},/area/awaymission/centcomAway/general)
@@ -971,4 +971,3 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"}
+8 -8
View File
@@ -2683,7 +2683,7 @@
"aZE" = (/obj/item/radio/intercom{pixel_x = 25},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/window/reinforced,/obj/structure/closet/secure_closet/bar{req_access_txt = "25"},/turf/simulated/floor/wood,/area/crew_quarters/bar)
"aZF" = (/obj/machinery/door/airlock/public/glass{name = "Central Access"},/turf/simulated/floor/plasteel,/area/hallway/primary/fore)
"aZG" = (/obj/machinery/door/airlock/public/glass{name = "Central Access"},/turf/simulated/floor/plasteel{icon_state = "bluecorner"},/area/hallway/primary/fore)
"aZH" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/obj/machinery/requests_console{department = "Atmospherics"; departmentType = 3; name = "Atmospherics Requests Console"; pixel_y = -30},/obj/item/stack/sheet/glass{amount = 50},/obj/item/clothing/head/welding,/obj/item/clothing/head/welding,/turf/simulated/floor/plasteel,/area/atmos)
"aZH" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/obj/machinery/requests_console{department = "Atmospherics"; departmentType = 3; name = "Atmospherics Requests Console"; pixel_y = -30},/obj/item/stack/sheet/glass{amount = 50},/obj/item/clothing/head/welding,/obj/item/clothing/head/welding,/obj/item/clothing/glasses/welding,/obj/item/clothing/glasses/welding,/turf/simulated/floor/plasteel,/area/atmos)
"aZI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"aZJ" = (/obj/effect/decal/cleanable/cobweb,/obj/item/clothing/mask/muzzle/gag,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig)
"aZK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
@@ -5878,7 +5878,7 @@
"cjb" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "telescienceblast"; name = "test chamber blast doors"; opacity = 0},/turf/simulated/floor/engine,/area/toxins/explab_chamber)
"cjc" = (/obj/structure/sign/poster/random{pixel_x = 32},/obj/machinery/photocopier,/turf/simulated/floor/wood,/area/blueshield)
"cjd" = (/obj/machinery/photocopier,/turf/simulated/floor/wood,/area/ntrep)
"cje" = (/obj/structure/table/wood,/obj/item/clipboard{pixel_x = -2},/obj/item/folder,/obj/item/stamp/centcom,/obj/item/pen/multi/fountain,/turf/simulated/floor/carpet,/area/ntrep)
"cje" = (/obj/structure/table/wood,/obj/item/clipboard{pixel_x = -2},/obj/item/folder,/obj/item/pen/multi/fountain,/obj/item/stamp/rep,/turf/simulated/floor/carpet,/area/ntrep)
"cjf" = (/obj/structure/table/wood,/obj/machinery/computer/skills{req_access_txt = "57"},/turf/simulated/floor/carpet,/area/ntrep)
"cjg" = (/obj/machinery/door/window{dir = 1; name = "Desk Door"; req_access_txt = "73"},/obj/machinery/keycard_auth{pixel_x = 24; pixel_y = 0},/turf/simulated/floor/wood,/area/ntrep)
"cjh" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/primary/aft)
@@ -6395,7 +6395,7 @@
"csY" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology)
"csZ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology)
"cta" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology)
"ctb" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology)
"ctb" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology)
"ctc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology)
"ctd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology)
"cte" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology)
@@ -7091,6 +7091,7 @@
"cGs" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "yellowcorner"},/area/hallway/primary/aft)
"cGt" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "yellowcorner"},/area/hallway/primary/aft)
"cGu" = (/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j2"; tag = "icon-pipe-j1 (WEST)"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "yellowcorner"},/area/hallway/primary/aft)
"cGv" = (/obj/machinery/door/airlock/maintenance,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/asmaint)
"cGw" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "yellowcorner"},/area/hallway/primary/aft)
"cGx" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "yellowcorner"},/area/hallway/primary/aft)
"cGy" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera{c_tag = "Aft Primary Hallway 3"; dir = 2; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 4; icon_state = "yellowcorner"},/area/hallway/primary/aft)
@@ -7632,7 +7633,7 @@
"cQO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/genetics)
"cQP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/atmos)
"cQQ" = (/obj/machinery/pipedispenser/disposal,/turf/simulated/floor/plasteel,/area/atmos)
"cQR" = (/obj/machinery/door/airlock/maintenance,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plating,/area/maintenance/asmaint)
"cQR" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/door/airlock/external{aiControlDisabled = 0; frequency = 1379; hackProof = 0; icon_state = "door_locked"; id_tag = "atmospherics_south_inner"; locked = 1; name = "Atmospherics External Access"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/engine/engineering)
"cQS" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Engineering"; name = "Engineering Security Doors"; opacity = 0},/turf/simulated/floor/plating,/area/engine/equipmentstorage)
"cQT" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel,/area/atmos/distribution)
"cQU" = (/obj/machinery/light_switch{pixel_x = 27},/obj/structure/reagent_dispensers/watertank,/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101; on = 1; pressure_checks = 1},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plating,/area/storage/secure)
@@ -8229,6 +8230,7 @@
"dcn" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/turf/simulated/wall/r_wall,/area/engine/engineering)
"dco" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/primary/central/ne)
"dcp" = (/obj/machinery/porta_turret{dir = 1},/obj/structure/sign/securearea{pixel_x = 32; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"},/area/turret_protected/aisat_interior)
"dcq" = (/obj/machinery/door/airlock/external{aiControlDisabled = 0; frequency = 1379; hackProof = 0; icon_state = "door_locked"; id_tag = "atmospherics_south_outer"; locked = 1; name = "Atmospherics External Access"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/engine/engineering)
"dcs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/cleanable/fungus,/turf/simulated/wall/r_wall,/area/engine/engineering)
"dct" = (/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor/plasteel,/area/atmos)
"dcv" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/turf/simulated/floor/plasteel,/area/atmos)
@@ -8626,8 +8628,6 @@
"dmt" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor/plating,/area/maintenance/asmaint)
"dmu" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall/r_wall,/area/maintenance/asmaint2)
"dmv" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "atmospherics_south_pump"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "atmospherics_south_sensor"; pixel_x = -8; pixel_y = -30},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "atmospherics_south"; pixel_x = 0; pixel_y = -25; req_access_txt = null; tag_airpump = "atmospherics_south_pump"; tag_chamber_sensor = "atmospherics_south_sensor"; tag_exterior_door = "atmospherics_south_outer"; tag_interior_door = "atmospherics_south_inner"},/turf/simulated/floor/plating,/area/engine/engineering)
"dmw" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/door/airlock/external{aiControlDisabled = 1; frequency = 1379; hackProof = 1; icon_state = "door_locked"; id_tag = "atmospherics_south_inner"; locked = 1; name = "Atmospherics External Access"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/engine/engineering)
"dmx" = (/obj/machinery/door/airlock/external{aiControlDisabled = 1; frequency = 1379; hackProof = 1; icon_state = "door_locked"; id_tag = "atmospherics_south_outer"; locked = 1; name = "Atmospherics External Access"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/engine/engineering)
"dmy" = (/obj/machinery/atmospherics/unary/outlet_injector/on{dir = 1; frequency = 1443; id = "air_in"},/turf/simulated/floor/engine/insulated,/area/maintenance/turbine)
"dmz" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 0; initialize_directions = 1; internal_pressure_bound = 4000; on = 0; pressure_checks = 2; pump_direction = 0},/obj/structure/sign/vacuum{pixel_y = -30},/turf/simulated/floor/engine/insulated,/area/maintenance/turbine)
"dmA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/igniter{icon_state = "igniter0"; id = "gasturbine"; on = 0},/turf/simulated/floor/engine/insulated,/area/maintenance/turbine)
@@ -9097,7 +9097,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaaaaabaaaaaaaaaaabaabaabaaaaaaaabaabaaaalvaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaabcXudbjcZucZucZucZucZudardbtdblcOqcOtcOrdarcKUdbqdbrcHhcVjcVjdbsdbBdbydbEdbCdbGdbFdbzcSUdbAcKLcNXcPgdacdbJcSUdbDcZSdbKdbLcSddaMdaNdbNcSddaPdaVcXTcXUcPicYbdbIcTodbScLVdbWcQZcRecBPckKchfdbMdbMcJqchfcLYcsLcLZcIjcMccMbcMecMdcJGcJvcyPctrcIqciYbQXbQXcMhciYbQXaqFcBRdbRcJKcJKcxNdbRcJKcJKcxNdbRcJKcJKcBRaaaaaaaaaaabaabaaaaaaaaacuQbGGbGGcFccuQbGGbGGbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvalwalwamhalvalvalvalvalwalvalvalwdbTaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacXudbUcZwcZucZucZudbVdardblcPkcMOcMTcMScMVcMUcMYcMWcMZcVjdcmdcldchcPlcPEcPDcPWcPFdcndcwdbrcHhcWecPXcZMcQccSUdcscZSdctdcLcSddaMdaNcZccSddcvdaVcXTdcOcQecZedcScSndcTdbbdbbcQZcRecBQckKdcAcuccABcJqchfchfcNdcNecDncNfcNfcNgchfchfchfchfctrcIqciYbQXcNhcKFciYcepcepcBRcBRcBRcBRcBRcBRcBRcBRcBRcBRcBRcBRcBRaaaaaaaaaaaaaabaabaaaaaabGHbGHbGHcFccuQdcJdcKbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcXucXucXudcUdcMdcMdcMdardcNcQjdcPdcPdcQdcWdawcNidcXcNkcNjcNjcNWcNZcQFcOaddbcOccQGcNZcOdcOfcOecOhcOgcOicQHddrdbDcZSddmddscSddaMcSdddtcSddaPdaVcXTcXUddxcYbdbIcQZcQZcQZcQZcQZcRecBQcOjcYlcuccTBcOScOPcOVcOPcOXcsLcsLcsLcsLczfchfcPacPecPbcPfcGLbQXcFvcepcepaaaaaaddFaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaabaaabGHcJQddBddKcuQddJddIbGGbZZaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddLcXucZucZucZudcMaabaabdarddGcQJdcPdcPcQUdarcRgcRwcRrcSvcStcSNcSxcSUcUBcQbddScVjcVccSUcVpcVqcVqcSvcSvcVucVrcSUddZcZSdeadehcSddaMcSdcZUdagdecdeidaYdejdekcXcdelcSndendemdemcQZcRecBQcsLckKchfchfcPdchfchfcsLcQlcyJcyJcyJcsLcQucQRcQOcQXcQWcDocepcepcepcepaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaabaabbGHdbgcAScaccuQcuQcuQbGGbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddLcXucZucZucZudcMaabaabdarddGcQJdcPdcPcQUdarcRgcRwcRrcSvcStcSNcSxcSUcUBcQbddScVjcVccSUcVpcVqcVqcSvcSvcVucVrcSUddZcZSdeadehcSddaMcSdcZUdagdecdeidaYdejdekcXcdelcSndendemdemcQZcRecBQcsLckKchfchfcPdchfchfcsLcQlcyJcyJcyJcsLcQucGvcQOcQXcQWcDocepcepcepcepaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaabaabbGHdbgcAScaccuQcuQcuQbGGbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcXucZucZucZudcMaabaaadardescQJdcPdcPcVvdardeucQYcSUdeFcRbcRbcRfcSUcVwdeAdeBdeCcVycSUcRbcRbcRbdeFcSUcRhdeucSUdbDcZSdeOdePdeHdeIdeJdeKdeQdeRcXbdeUcXUdeVcYbdbIcTodeXcRideYcQZcRecBPcBPckKcprdeScRjdeTchfcsLdfadeZdffcRkcRmcRlchfciYciYcRncepcepaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaabGHbGHbGHbGHbGHdfhcaccuQdfidfcbGGbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacXucXudcMdcUdfdaaaaaadardfecVzdcPdcPcVAdardfwcRodfzdfkcRpcRqcRpdfocVBdfqdfrdfscQHdfocRpcRpcRpdftdfzcRsdfvcSUdbDdfEdaMdfxdfydeQdfFdfGdfBdfIdfHdfKdfJdfNcZedcScSndfOdemdemcQZcRecBPcsLcOjcSfcScdfgcsKchfdgmcTBcsLcYidfLcsLcYicBNchfcSgcFcbGHaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaabGHbGGbGGbGGcJQdfSdfUcuQdfPbGGbGGbGHaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfXdfYdfYdfZdfYdfYdgadardfVcQjdcPdcPcVCdardaGcSicSUcSUdfodfodfodfocVGcVScVNcSvcVTdfodfodfodfocSUcSUcSydglcSUdbDcZSdgrdgsdfydggdghcSdcSddgtcXWdggcXUdgjcYbdbIcQZcQZcQZcQZcQZcRecBPcTBcsLdgkdgCcsLdgmchfchfdgnchfdgocpscJGcYichfchfcuQcFcbGHaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaabGHbGHcuQdgAdgycJQdfScacbGGbGGbGGdgBbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -9111,7 +9111,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabafOaabafOafOaabaabaabalwalwcSUcSUcUpdibaaacTDcTEaaaaaaaabdledlfdlgaabaaaaaacUlcTFaaadibcUqcSUcSUdaGcSUcQZdkOdlvdkOcQZdkTdlwdkTcQZdkVdlxdkVcQZaabdhKaaaalwaaadjddgSdgSdgSdlldlmdlndlydlndlmdkPdlpcsLdlAdlrdfMddHcYidlscBPcBQcBQcBQdlKaabaabaaabZZdlBdlCcuQbGGdlDdlJdbgcuQdlPbGGcuQdlzbGGbGGdlLbGGbGHbGHbGHbZZbZZbGHdjQdlSdlRdlUdjQaabaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaabaabaaaaaaaabaabalwcSUcSUcTtdibaaacTxafOaaadlEaabdlFdlGdlHaabaabdjqafOcTxaaadibcTtcSUcSUdaGcSUcQZcQZcQZcQZcQZcQZcQZcQZcQZcQZcQZcQZcQZaabdhKaaaayiaaadjdaaaaaaaaadlIdlmdlVdlXdlWdlmcsLdlMcsLcsLdlNdlOcXrdmcdlQcBPaaaaaaaaaaaaaaaaabaaabZZdlZdmbdlLbGGdgybGGbGGdlLdjobGGcuQcuQcuQcuQcuQbGGbGHaabaaaaaaaaaaabdlTdlTdmddlTdlTaabaabdhcaabaabdjTaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabcSUcSCcUodibaaacTxafOaaaaaaaabaabaabaabaabaaaaaaafOcTxaaadibcUncTmcSUdmecSUcSUcSUcSUdmfdhhdhhdhhdhhdhhdhhdhhdhhdhhdhhdmgaabaabaabdjEaaaaaaaaadlYdlmdlndmhdlndlmdmadmidfMdfMdmldmrdmmcBPcBPcBPaaaaaaaaaaaaaaaaabaaabZZdlBdmncuQdbgbGGbGGdmpcuQdmqbGGbGGbGGbGGbGGbGGbGGbGHaabaaaaaaaaaaabaaadlTdmsdlTaaaaabaaaaabaaaaaaaabaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaabcSUcTtdibdmjaaacTDcTEaaaaaaaaaaabaaaaaaaaaaaaaaacUlcTFaaadibdibcTtcSUdmkdmwdmvdaGdmxdmgaabaabaabaabaabaabaabdmoaabaabaabaabaabaabdjEaabaabaabdlYdlmdmydmAdmzdmEaabdmacBPcBQdmtcBQcBPcBPaaaaabaaaaaaaaaaaaaaaaabaabbZZbZZbZZbGHbGHbGHbGGcuQbGHdmubGHbGHdbgbPAcLhbKlcMsbGHaabaaaaaaaaaaabaaadlTdmGdlTaaaaabaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaabcSUcTtdibdmjaaacTDcTEaaaaaaaaaaabaaaaaaaaaaaaaaacUlcTFaaadibdibcTtcSUdmkcQRdmvdaGdcqdmgaabaabaabaabaabaabaabdmoaabaabaabaabaabaabdjEaabaabaabdlYdlmdmydmAdmzdmEaabdmacBPcBQdmtcBQcBPcBPaaaaabaaaaaaaaaaaaaaaaabaabbZZbZZbZZbGHbGHbGHbGGcuQbGHdmubGHbGHdbgbPAcLhbKlcMsbGHaabaaaaaaaaaaabaaadlTdmGdlTaaaaabaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcSUcUDdbudiPaabcTxafOdjqaaaaaadjqaaaaaaaaaaaadjqafOcTxaaadiRdbQcUEcSUdmLcSUcSUcSUcSUcSUcSUaaaaaaaabaaaaaaaaadmoaaaaaadmBdmBdmBdmBdmCaaaaaaaabdlYdmDdlmdmOdlmdlmaaaaabaaaaaadmFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaabGHdmbdmMbGHdmNaabbGHbGHbZZbZZcMsbGHaaaaabaaaaaaaaaaabaaaaaadmRaaaaaaaabaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSUcUFcUIcUHaaacTxafOafOdcfafOafOdcfafOafOdcfafOafOcTxaaacUJcUIcUKcSUdmPdmQdnjdnldnkdnmdmVdmWdmWdmXdmWdmWdmWdmYdmWdmWdmZdnadnbdnodmCaaaaaaaabdndaHQdlmdnedlmdnfaabaabaaaaaadngaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaabpaaaaaabGHdnqdnnbGHdnpaabaaaaabaaaaaaaabaaaaaaaabaaaaaaaaaaabaaaaaadnraaaaaaaabaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnscSUcSUcULaaacUMcSFcSFcUOcSFcSFcUOcSFcSFcUOcSFcSFcUQaaacULcSUcSUcSUdmPdnBdnAdnEdnCdnHdfoaaaaaaaabaaaaaaaaadmodmBdmBdmBbfmbJNdnvdmCaaaaaaaabaabaHQdnxdnIdnxaHQaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaaaaaaaaabZZdnJbZZbZZaabdhcaaaaabaaaaaaaabaaaamWamWalwayiaabaabaabaabdnLaabaabaabaabdhcamhamWamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -1,7 +1,7 @@
/obj/machinery/atmospherics/binary
dir = SOUTH
initialize_directions = SOUTH|NORTH
use_power = 1
use_power = IDLE_POWER_USE
var/datum/gas_mixture/air1
var/datum/gas_mixture/air2
@@ -150,4 +150,4 @@
/obj/machinery/atmospherics/binary/process_atmos()
..()
return parent1 && parent2
return parent1 && parent2
@@ -5,7 +5,7 @@
name = "omni device"
icon = 'icons/atmos/omni_devices.dmi'
icon_state = "base"
use_power = 1
use_power = IDLE_POWER_USE
initialize_directions = 0
can_unwrench = 1
@@ -299,4 +299,4 @@
for(var/datum/omni_port/port in ports)
if(!port.parent)
return 0
return 1
return 1
@@ -1,7 +1,7 @@
/obj/machinery/atmospherics/trinary
dir = SOUTH
initialize_directions = SOUTH|NORTH|WEST
use_power = 1
use_power = IDLE_POWER_USE
var/on = 0
@@ -209,4 +209,4 @@
/obj/machinery/atmospherics/trinary/process_atmos()
..()
return parent1 && parent2 && parent3
return parent1 && parent2 && parent3
@@ -2,7 +2,7 @@
icon = 'icons/obj/atmospherics/cold_sink.dmi'
icon_state = "on_cool"
density = 1
use_power = 1
use_power = IDLE_POWER_USE
name = "cold sink"
desc = "Cools gas when connected to pipe network"
@@ -39,4 +39,4 @@
if(abs(old_temperature-air_contents.temperature) > 1)
parent.update = 1
return 1
return 1
@@ -2,7 +2,7 @@
icon = 'icons/obj/atmospherics/cold_sink.dmi'
icon_state = "intact_off"
density = 1
use_power = 1
use_power = IDLE_POWER_USE
name = "heat reservoir"
desc = "Heats gas when connected to pipe network"
@@ -38,4 +38,4 @@
if(abs(old_temperature-air_contents.temperature) > 1)
parent.update = 1
return 1
return 1
@@ -1,7 +1,7 @@
/obj/machinery/atmospherics/unary/outlet_injector
icon = 'icons/atmos/injector.dmi'
icon_state = "map_injector"
use_power = 1
use_power = IDLE_POWER_USE
layer = 3
can_unwrench = 1
@@ -8,7 +8,7 @@
name = "air vent"
desc = "Has a valve and pump attached to it"
use_power = 1
use_power = IDLE_POWER_USE
can_unwrench = 1
var/open = 0
@@ -7,7 +7,7 @@
name = "air scrubber"
desc = "Has a valve and pump attached to it"
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 10
active_power_usage = 60
+1 -1
View File
@@ -4,7 +4,7 @@
var/volume = 0
force = 20
layer = 2.4 //under wires with their 2.44
use_power = 0
use_power = NO_POWER_USE
can_unwrench = 1
var/alert_pressure = 80*ONE_ATMOSPHERE //minimum pressure before check_pressure(...) should be called
+6 -6
View File
@@ -35,8 +35,8 @@
#define MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND 0.012
#define MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND 4 //Minimum temperature difference before group processing is suspended
#define MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER 0.5 //Minimum temperature difference before the gas temperatures are just set to be equal
#define MINIMUM_TEMPERATURE_FOR_SUPERCONDUCTION T20C+10
#define MINIMUM_TEMPERATURE_START_SUPERCONDUCTION T20C+200
#define MINIMUM_TEMPERATURE_FOR_SUPERCONDUCTION (T20C+10)
#define MINIMUM_TEMPERATURE_START_SUPERCONDUCTION (T20C+200)
#define FLOOR_HEAT_TRANSFER_COEFFICIENT 0.4
#define WALL_HEAT_TRANSFER_COEFFICIENT 0.0
#define DOOR_HEAT_TRANSFER_COEFFICIENT 0.0
@@ -45,8 +45,8 @@
#define WINDOW_HEAT_TRANSFER_COEFFICIENT 0.1 //a hack for now
//Must be between 0 and 1. Values closer to 1 equalize temperature faster
//Should not exceed 0.4 else strange heat flow occur
#define FIRE_MINIMUM_TEMPERATURE_TO_SPREAD 150+T0C
#define FIRE_MINIMUM_TEMPERATURE_TO_EXIST 100+T0C
#define FIRE_MINIMUM_TEMPERATURE_TO_SPREAD (150+T0C)
#define FIRE_MINIMUM_TEMPERATURE_TO_EXIST (100+T0C)
#define FIRE_SPREAD_RADIOSITY_SCALE 0.85
#define FIRE_CARBON_ENERGY_RELEASED 2500000 //Amount of heat released per mole of burnt carbon into the tile
#define FIRE_PLASMA_ENERGY_RELEASED 15000000 //Amount of heat released per mole of burnt plasma into the tile
@@ -56,8 +56,8 @@
//Plasma fire properties
#define OXYGEN_BURN_RATE_BASE 7
#define PLASMA_BURN_RATE_DELTA 20
#define PLASMA_MINIMUM_BURN_TEMPERATURE 100+T0C
#define PLASMA_UPPER_TEMPERATURE 1370+T0C
#define PLASMA_MINIMUM_BURN_TEMPERATURE (100+T0C)
#define PLASMA_UPPER_TEMPERATURE (1370+T0C)
#define PLASMA_MINIMUM_OXYGEN_NEEDED 2
#define PLASMA_MINIMUM_OXYGEN_PLASMA_RATIO 30
#define PLASMA_OXYGEN_FULLBURN 10
+1 -1
View File
@@ -34,7 +34,7 @@
#define CANPUSH 8
#define PASSEMOTES 16 //Mob has a cortical borer or holders inside of it that need to see emotes.
#define GOTTAGOFAST 32
#define GOTTAGOREALLYFAST 64
#define GOTTAGOFAST_METH 64
#define IGNORESLOWDOWN 128
#define GODMODE 4096
#define FAKEDEATH 8192 //Replaces stuff like changeling.changeling_fakedeath
+7
View File
@@ -5,3 +5,10 @@
#define CAT_FOOD "Food"
#define CAT_MISC "Misc"
#define CAT_PRIMAL "Tribal"
#define RECIPE_MICROWAVE "Microwave"
#define RECIPE_OVEN "Oven"
#define RECIPE_GRILL "Grill"
#define RECIPE_CANDY "Candy"
#define RECIPE_FAIL null
+4 -1
View File
@@ -370,4 +370,7 @@
// used for alternate_option
#define GET_RANDOM_JOB 0
#define BE_ASSISTANT 1
#define RETURN_TO_LOBBY 2
#define RETURN_TO_LOBBY 2
//Melting Temperatures for various specific objects
#define GIRDER_MELTING_TEMP 5000
+3
View File
@@ -129,6 +129,9 @@
#define TINT_BLIND 3 //Threshold of tint level to obscure vision fully
#define EYE_SHINE_THRESHOLD 6 //dark_view threshold past which a humanoid's eyes will 'shine' in the dark.
#define EMOTE_VISUAL 1 //A mob emote is visual
#define EMOTE_SOUND 2 //A mob emote is sound
//Human sub-species
#define isshadowling(A) (is_species(A, /datum/species/shadow/ling))
#define isshadowlinglesser(A) (is_species(A, /datum/species/shadow/ling/lesser))
+3
View File
@@ -91,6 +91,9 @@
/proc/log_adminsay(text, mob/speaker)
if(config.log_adminchat)
WRITE_LOG(GLOB.world_game_log, "ADMINSAY: [speaker.simple_info_line()]: [html_decode(text)][log_end]")
/proc/log_qdel(text)
WRITE_LOG(GLOB.world_qdel_log, "QDEL: [text]")
/proc/log_mentorsay(text, mob/speaker)
if(config.log_adminchat)
+3 -3
View File
@@ -56,7 +56,7 @@
/* This is used for displaying the "station time" equivelent of a world.time value
Calling it with no args will give you the current time, but you can specify a world.time-based value as an argument
- You can use this, for example, to do "This will expire at [station_time_at(world.time + 500)]" to display a "station time" expiration date
- You can use this, for example, to do "This will expire at [station_time_at(world.time + 500)]" to display a "station time" expiration date
which is much more useful for a player)*/
/proc/station_time(time=world.time, display_only=FALSE)
return ((((time - round_start_time)) + GLOB.gametime_offset) % 864000) - (display_only ? GLOB.timezoneOffset : 0)
@@ -93,8 +93,8 @@ proc/isDay(var/month, var/day)
/proc/stop_watch(wh)
return round(0.1 * (TimeOfGame - wh), 0.1)
/proc/month2number(month)
return month_names.Find(month)
/proc/numberToMonthName(number)
return month_names.Find(number)
//Take a value in seconds and returns a string of minutes and seconds in the format X minute(s) and X seconds.
/proc/seconds_to_time(var/seconds as num)
+11 -1
View File
@@ -31,6 +31,16 @@ var/list/round_end_sounds = list( // Maps available round end sounds to their du
'sound/goonstation/misc/newround2.ogg' = 14.8 SECONDS
)
GLOBAL_LIST_INIT(cooking_recipe_types, list(
RECIPE_MICROWAVE = /datum/recipe/microwave,
RECIPE_OVEN = /datum/recipe/oven,
RECIPE_GRILL = /datum/recipe/grill,
RECIPE_CANDY = /datum/recipe/candy
))
GLOBAL_LIST_INIT(cooking_recipes, list(RECIPE_MICROWAVE = list(), RECIPE_OVEN = list(), RECIPE_GRILL = list(), RECIPE_CANDY = list()))
GLOBAL_LIST_INIT(cooking_ingredients, list(RECIPE_MICROWAVE = list(), RECIPE_OVEN = list(), RECIPE_GRILL = list(), RECIPE_CANDY = list()))
GLOBAL_LIST_INIT(cooking_reagents, list(RECIPE_MICROWAVE = list(), RECIPE_OVEN = list(), RECIPE_GRILL = list(), RECIPE_CANDY = list()))
GLOBAL_LIST(station_level_space_turfs)
#define EGG_LAYING_MESSAGES list("lays an egg.", "squats down and croons.", "begins making a huge racket.", "begins clucking raucously.")
#define EGG_LAYING_MESSAGES list("lays an egg.", "squats down and croons.", "begins making a huge racket.", "begins clucking raucously.")
+2
View File
@@ -6,6 +6,8 @@ GLOBAL_VAR(config_error_log)
GLOBAL_PROTECT(config_error_log)
GLOBAL_VAR(world_runtime_log)
GLOBAL_PROTECT(world_runtime_log)
GLOBAL_VAR(world_qdel_log)
GLOBAL_PROTECT(world_qdel_log)
GLOBAL_VAR(world_href_log)
GLOBAL_PROTECT(world_href_log)
+6 -2
View File
@@ -85,6 +85,7 @@
var/githuburl = "http://example.org"
var/donationsurl = "http://example.org"
var/repositoryurl = "http://example.org"
var/discordurl = "http://example.org"
var/overflow_server_url
var/forbid_singulo_possession = 0
@@ -388,7 +389,10 @@
if("githuburl")
config.githuburl = value
if("discordurl")
config.discordurl = value
if("donationsurl")
config.donationsurl = value
@@ -782,4 +786,4 @@
if(M.can_start())
runnable_modes[M] = probabilities[M.config_tag]
// to_chat(world, "DEBUG: runnable_mode\[[runnable_modes.len]\] = [M.config_tag]")
return runnable_modes
return runnable_modes
+4 -1
View File
@@ -284,9 +284,12 @@ SUBSYSTEM_DEF(air)
/datum/controller/subsystem/air/proc/setup_allturfs(var/list/turfs_to_init = block(locate(1, 1, 1), locate(world.maxx, world.maxy, world.maxz)))
var/list/active_turfs = src.active_turfs
// Clear active turfs - faster than removing every single turf in the world
// one-by-one, and Initalize_Atmos only ever adds `src` back in.
active_turfs.Cut()
for(var/thing in turfs_to_init)
var/turf/T = thing
active_turfs -= T
if(T.blocks_air)
continue
T.Initialize_Atmos(times_fired)
+1 -2
View File
@@ -59,7 +59,7 @@ SUBSYSTEM_DEF(garbage)
msg += " | Fail:[fail_counts.Join(",")]"
..(msg)
/* TO-DO
/datum/controller/subsystem/garbage/Shutdown()
//Adds the del() log to the qdel log file
var/list/dellog = list()
@@ -83,7 +83,6 @@ SUBSYSTEM_DEF(garbage)
if(I.no_hint)
dellog += "\tNo hint: [I.no_hint] times"
log_qdel(dellog.Join("\n"))
*/
/datum/controller/subsystem/garbage/fire()
//the fact that this resets its processing each fire (rather then resume where it left off) is intentional.
+3 -3
View File
@@ -546,7 +546,7 @@
to_chat(usr, "This can only be used on instances of type /mob")
return
var/new_name = sanitize(copytext(input(usr,"What would you like to name this mob?","Input a name",M.real_name) as text|null,1,MAX_NAME_LEN))
var/new_name = reject_bad_name(sanitize(copytext(input(usr,"What would you like to name this mob?","Input a name",M.real_name) as text|null,1,MAX_NAME_LEN)))
if( !new_name || !M ) return
message_admins("Admin [key_name_admin(usr)] renamed [key_name_admin(M)] to [new_name].")
@@ -1215,8 +1215,8 @@
return
switch(Text)
if("brute") L.adjustBruteLoss(amount)
if("fire") L.adjustFireLoss(amount)
if("brute") L.adjustBruteLoss(amount, robotic=1)
if("fire") L.adjustFireLoss(amount, robotic=1)
if("toxin") L.adjustToxLoss(amount)
if("oxygen")L.adjustOxyLoss(amount)
if("brain") L.adjustBrainLoss(amount)
+12 -3
View File
@@ -10,6 +10,7 @@
viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/human/monkey)
desc = "If left untreated subject will regurgitate... puppies."
severity = MEDIUM
var/barklimit = 0
/datum/disease/lycan/stage_act()
..()
@@ -33,13 +34,21 @@
affected_mob.visible_message("<span class='danger'>[affected_mob] howls!</span>", \
"<span class='userdanger'>You howl!</span>")
affected_mob.AdjustConfused(rand(6, 8))
if(prob(3))
if(prob(3) && barklimit <= 10)
var/list/puppytype = list(/mob/living/simple_animal/pet/corgi/puppy, /mob/living/simple_animal/pet/pug, /mob/living/simple_animal/pet/fox)
var/mob/living/puppypicked = pick(puppytype)
affected_mob.visible_message("<span class='danger'>[affected_mob] coughs up [initial(puppypicked.name)]!</span>", \
"<span class='userdanger'>You cough up [initial(puppypicked.name)]?!</span>")
affected_mob.emote("cough")
affected_mob.adjustBruteLoss(5)
new puppypicked(affected_mob.loc)
new puppypicked(affected_mob.loc)
barklimit ++
if(prob(1))
var/list/plushtype = list(/obj/item/toy/plushie/orange_fox, /obj/item/toy/plushie/corgi, /obj/item/toy/plushie/robo_corgi, /obj/item/toy/plushie/pink_fox)
var/obj/item/toy/plushie/coughfox = pick(plushtype)
new coughfox(affected_mob.loc)
affected_mob.visible_message("<span class='danger'>[affected_mob] coughs up a [initial(coughfox.name)]!</span>", \
"<span class='userdanger'>You cough [initial(coughfox.name)] up ?!</span>")
affected_mob.emote("cough")
affected_mob.adjustBruteLoss(5)
return
+19 -4
View File
@@ -1,5 +1,5 @@
//wrapper
/proc/do_teleport(ateleatom, adestination, aprecision=0, afteleport=1, aeffectin=null, aeffectout=null, asoundin=null, asoundout=null)
/proc/do_teleport(ateleatom, adestination, aprecision=0, afteleport=1, aeffectin=null, aeffectout=null, asoundin=null, asoundout=null, bypass_area_flag=FALSE)
var/datum/teleport/instant/science/D = new
if(D.start(arglist(args)))
return 1
@@ -14,14 +14,15 @@
var/soundin //soundfile to play before teleportation
var/soundout //soundfile to play after teleportation
var/force_teleport = 1 //if false, teleport will use Move() proc (dense objects will prevent teleportation)
var/ignore_area_flag = FALSE
/datum/teleport/proc/start(ateleatom, adestination, aprecision=0, afteleport=1, aeffectin=null, aeffectout=null, asoundin=null, asoundout=null)
/datum/teleport/proc/start(ateleatom, adestination, aprecision=0, afteleport=1, aeffectin=null, aeffectout=null, asoundin=null, asoundout=null, bypass_area_flag=FALSE)
if(!initTeleport(arglist(args)))
return 0
return 1
/datum/teleport/proc/initTeleport(ateleatom,adestination,aprecision,afteleport,aeffectin,aeffectout,asoundin,asoundout)
/datum/teleport/proc/initTeleport(ateleatom, adestination, aprecision, afteleport, aeffectin, aeffectout, asoundin, asoundout, bypass_area_flag=FALSE)
if(!setTeleatom(ateleatom))
return 0
if(!setDestination(adestination))
@@ -31,6 +32,7 @@
setEffects(aeffectin,aeffectout)
setForceTeleport(afteleport)
setSounds(asoundin,asoundout)
ignore_area_flag = bypass_area_flag
return 1
//must succeed
@@ -97,7 +99,8 @@
var/turf/destturf
var/turf/curturf = get_turf(teleatom)
var/area/destarea = get_area(destination)
var/area/curarea = get_area(curturf)
if(precision)
var/list/posturfs = list()
var/center = get_turf(destination)
@@ -109,6 +112,18 @@
else
destturf = get_turf(destination)
if(!is_teleport_allowed(destturf.z))
return 0
// Only check the destination zlevel for is_teleport_allowed. Checking origin as well breaks ERT teleporters.
var/area/destarea = get_area(destturf)
if(!ignore_area_flag)
if(curarea.tele_proof)
return 0
if(destarea.tele_proof)
return 0
if(!destturf || !curturf)
return 0
+5 -4
View File
@@ -479,10 +479,11 @@
message_admins("[key_name_admin(usr)] has changed [key_name_admin(current)]'s assigned role to [assigned_role]")
else if(href_list["memory_edit"])
var/new_memo = copytext(input("Write new memory", "Memory", memory) as null|message,1,MAX_MESSAGE_LEN)
if(isnull(new_memo))
var/messageinput = input("Write new memory", "Memory", memory) as null|message
if(isnull(messageinput))
return
var/confirmed = alert(usr, "Are you sure?", "Edit Memory", "Yes", "No")
var/new_memo = copytext(messageinput, 1,MAX_MESSAGE_LEN)
var/confirmed = alert(usr, "Are you sure you want to edit their memory? It will wipe out their original memory!", "Edit Memory", "Yes", "No")
if(confirmed == "Yes") // Because it is too easy to accidentally wipe someone's memory
memory = new_memo
log_admin("[key_name(usr)] has edited [key_name(current)]'s memory")
@@ -1349,7 +1350,7 @@
special_role = SPECIAL_ROLE_VAMPIRE
ticker.mode.forge_vampire_objectives(src)
ticker.mode.greet_vampire(src)
ticker.mode.update_change_icons_added(src)
ticker.mode.update_vampire_icons_added(src)
/datum/mind/proc/make_Changeling()
if(!(src in ticker.mode.changelings))
+13 -14
View File
@@ -53,19 +53,18 @@
return -1
return .
/datum/recipe/proc/check_items(obj/container) //1=precisely, 0=insufficiently, -1=superfluous
if(!items)
if(locate(/obj/) in container)
return -1
else
return 1
/datum/recipe/proc/check_items(obj/container, list/ignored_items = null) //1=precisely, 0=insufficiently, -1=superfluous
. = 1
var/list/checklist = items.Copy()
var/list/checklist = items ? items.Copy() : list()
for(var/obj/O in container)
if(ignored_items && is_type_in_list(O, ignored_items)) //skip if this is something we are ignoring
continue
if(!items)
return -1
var/found = 0
for(var/type in checklist)
if(istype(O,type))
checklist-=type
checklist -= type
found = 1
break
if(!found)
@@ -95,16 +94,16 @@
container.reagents.clear_reagents()
return result_obj
/proc/select_recipe(list/datum/recipe/avaiable_recipes, obj/obj, exact = 1 as num)
/proc/select_recipe(list/datum/recipe/available_recipes, obj/obj, exact = 1 as num, list/ignored_items = null)
if(!exact)
exact = -1
var/list/datum/recipe/possible_recipes = new
for(var/datum/recipe/recipe in avaiable_recipes)
if(recipe.check_reagents(obj.reagents)==exact && recipe.check_items(obj)==exact)
possible_recipes+=recipe
if(possible_recipes.len==0)
for(var/datum/recipe/recipe in available_recipes)
if(recipe.check_reagents(obj.reagents) == exact && recipe.check_items(obj, ignored_items) == exact)
possible_recipes += recipe
if(possible_recipes.len == 0)
return null
else if(possible_recipes.len==1)
else if(possible_recipes.len == 1)
return possible_recipes[1]
else //okay, let's select the most complicated recipe
var/r_count = 0
+28 -12
View File
@@ -146,7 +146,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
if(!istype(H.shoes, /obj/item/clothing/shoes/sandal))
to_chat(user, "<span class='notice'>I don't feel strong enough without my sandals.</span>")
return 0
if(!istype(H.head, /obj/item/clothing/head/wizard) && !istype(H.head, /obj/item/clothing/head/helmet/space/hardsuit/wizard) && !istype(H.wear_suit, /obj/item/clothing/head/helmet/space/eva/plasmaman/wizard))
if(!istype(H.head, /obj/item/clothing/head/wizard) && !istype(H.head, /obj/item/clothing/head/helmet/space/hardsuit/wizard) && !istype(H.head, /obj/item/clothing/head/helmet/space/eva/plasmaman/wizard))
to_chat(user, "<span class='notice'>I don't feel strong enough without my hat.</span>")
return 0
else if(!ishuman(user))
@@ -321,28 +321,40 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
var/include_user = 0 //if it includes usr in the target list
var/random_target = 0 // chooses random viable target instead of asking the caster
var/random_target_priority = TARGET_CLOSEST // if random_target is enabled how it will pick the target
var/humans_only = 0 //for avoiding simple animals and only doing "human" mobs, 0 = all mobs, 1 = humans only
/obj/effect/proc_holder/spell/aoe_turf //affects all turfs in view or range (depends)
var/inner_radius = -1 //for all your ring spell needs
/obj/effect/proc_holder/spell/targeted/choose_targets(mob/user = usr)
var/list/targets = list()
switch(max_targets)
if(0) //unlimited
for(var/mob/living/target in view_or_range(range, user, selection_type))
targets += target
if(!humans_only)
for(var/mob/living/target in view_or_range(range, user, selection_type))
targets += target
else
for(var/mob/living/carbon/human/target in view_or_range(range, user, selection_type))
targets += target
if(1) //single target can be picked
if(range < 0)
targets += user
else
var/possible_targets = list()
for(var/mob/living/M in view_or_range(range, user, selection_type))
if(!include_user && user == M)
continue
possible_targets += M
if(!humans_only)
for(var/mob/living/M in view_or_range(range, user, selection_type))
if(!include_user && user == M)
continue
possible_targets += M
else
for(var/mob/living/carbon/human/M in view_or_range(range, user, selection_type))
if(!include_user && user == M)
continue
possible_targets += M
//targets += input("Choose the target for the spell.", "Targeting") as mob in possible_targets
//Adds a safety check post-input to make sure those targets are actually in range.
@@ -366,8 +378,12 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
else
var/list/possible_targets = list()
for(var/mob/living/target in view_or_range(range, user, selection_type))
possible_targets += target
if(!humans_only)
for(var/mob/living/target in view_or_range(range, user, selection_type))
possible_targets += target
else
for(var/mob/living/carbon/human/target in view_or_range(range, user, selection_type))
possible_targets += target
for(var/i=1,i<=max_targets,i++)
if(!possible_targets.len)
break
+24
View File
@@ -30,4 +30,28 @@
SC.locked = 0
C.open()
return
/obj/effect/proc_holder/spell/aoe_turf/knock/greater
name = "Greater Knock"
desc = "On first cast, will remove access restrictions on all airlocks on the Cyberiad, and announce this spell's use to the station. On any further cast, will open all doors in sight. Cannot be refunded once bought!"
charge_max = 200
invocation = "MAIOR OXIN FIERA"
invocation_type = "shout"
range = 7
level_max = 0 //Cannot be improved, quality of life since can't be refunded
cooldown_min = 200
var/used = FALSE
/obj/effect/proc_holder/spell/aoe_turf/knock/greater/cast(list/targets, mob/user = usr)
if(!used)
used = TRUE
for(var/obj/machinery/door/airlock/A in airlocks)
if(is_station_level(A.z))
A.req_access = list()
A.req_one_access = list()
command_announcement.Announce("We have removed all access requirements on your station's airlocks. You can thank us later!", "Greetings!", 'sound/misc/notice2.ogg', , , "Space Wizard Federation Message")
else
..()
return
+2
View File
@@ -943,6 +943,8 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
/obj/item/reagent_containers/food/condiment/peppermill,
/obj/item/kitchen/rollingpin,
/obj/item/storage/fancy/egg_box,
/obj/item/mixing_bowl,
/obj/item/mixing_bowl,
/obj/item/reagent_containers/food/condiment/enzyme,
/obj/item/reagent_containers/food/condiment/sugar,
/obj/item/reagent_containers/food/snacks/meat/monkey,
+14 -16
View File
@@ -1,16 +1,13 @@
var/list/uplink_items = list()
GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
/proc/get_uplink_items(var/job = null)
// If not already initialized..
var/list/uplink_items = list()
if(!uplink_items.len)
// Fill in the list and order it like this:
// A keyed list, acting as categories, which are lists to the datum.
var/list/last = list()
for(var/item in typesof(/datum/uplink_item))
for(var/path in GLOB.uplink_items)
var/datum/uplink_item/I = new item()
var/datum/uplink_item/I = new path
if(!I.item)
continue
if(I.gamemodes.len && ticker && !(ticker.mode.type in I.gamemodes))
@@ -55,6 +52,9 @@ var/list/uplink_items = list()
var/list/job = null
var/surplus = 100 //Chance of being included in the surplus crate (when pick() selects it)
var/hijack_only = FALSE //can this item be purchased only during hijackings?
var/refundable = FALSE
var/refund_path = null // Alternative path for refunds, in case the item purchased isn't what is actually refunded (ie: holoparasites).
var/refund_amount // specified refund amount in case there needs to be a TC penalty for refunds.
/datum/uplink_item/proc/spawn_item(var/turf/loc, var/obj/item/uplink/U)
if(hijack_only)
@@ -214,7 +214,7 @@ var/list/uplink_items = list()
/datum/uplink_item/jobspecific/rad_laser
name = "Radiation Laser"
desc = "A radiation laser concealed inside of a Health Analyser. After a moderate delay, causes temporary collapse and radiation. Has adjustable controls, but will not function as a regular health analyser, only appears like one. May not function correctly on radiation resistant humanoids!"
desc = "A radiation laser concealed inside of a Health Analyzer. After a moderate delay, causes temporary collapse and radiation. Has adjustable controls, but will not function as a regular health analyzer, only appears like one. May not function correctly on radiation resistant humanoids!"
reference = "RL"
item = /obj/item/rad_laser
cost = 5
@@ -352,7 +352,7 @@ var/list/uplink_items = list()
item = /obj/item/pen/poison
cost = 2
excludefrom = list(/datum/game_mode/nuclear)
job = list("Head of Personnel", "Quartermaster", "Cargo Technician")
job = list("Head of Personnel", "Quartermaster", "Cargo Technician", "Librarian")
// DANGEROUS WEAPONS
@@ -500,6 +500,7 @@ var/list/uplink_items = list()
reference = "AGG"
item = /obj/item/storage/box/syndie_kit/atmosgasgrenades
cost = 11
surplus = 0
/datum/uplink_item/dangerous/emp
name = "EMP Grenades and Implanter Kit"
@@ -540,9 +541,11 @@ var/list/uplink_items = list()
desc = "A cyborg designed and programmed for systematic extermination of non-Syndicate personnel."
reference = "SC"
item = /obj/item/antag_spawner/borg_tele
refund_path = /obj/item/antag_spawner/borg_tele
cost = 50
gamemodes = list(/datum/game_mode/nuclear)
surplus = 0
refundable = TRUE
/datum/uplink_item/dangerous/foamsmg
name = "Toy Submachine Gun"
@@ -571,19 +574,14 @@ var/list/uplink_items = list()
gamemodes = list(/datum/game_mode/nuclear)
surplus = 0
//for refunding the syndieborg teleporter
/datum/uplink_item/dangerous/syndieborg/spawn_item()
var/obj/item/antag_spawner/borg_tele/T = ..()
if(istype(T))
T.TC_cost = cost
/datum/uplink_item/dangerous/guardian
name = "Holoparasites"
desc = "Though capable of near sorcerous feats via use of hardlight holograms and nanomachines, they require an organic host as a home base and source of fuel."
item = /obj/item/storage/box/syndie_kit/guardian
excludefrom = list(/datum/game_mode/nuclear)
cost = 12
refund_path = /obj/item/guardiancreator/tech/choose
refundable = TRUE
// Ammunition
+1 -1
View File
@@ -7,7 +7,7 @@
/proc/key_name_helper(whom, include_name, include_link = FALSE, type = null)
if(include_link != FALSE && include_link != TRUE)
log_runtime(EXCEPTION("Key_name was called with an incorrect include_link [include_link]"))
log_runtime(EXCEPTION("Key_name was called with an incorrect include_link [include_link]"), src)
var/mob/M
var/client/C
+7 -1
View File
@@ -394,4 +394,10 @@
for(var/obj/machinery/door/airlock/temp_airlock in src)
temp_airlock.prison_open()
for(var/obj/machinery/door/window/temp_windoor in src)
temp_windoor.open()
temp_windoor.open()
/area/AllowDrop()
CRASH("Bad op: area/AllowDrop() called")
/area/drop_location()
CRASH("Bad op: area/drop_location() called")
+43 -17
View File
@@ -57,22 +57,32 @@
/area/syndicate_depot/core/proc/reset_alert()
if(used_self_destruct)
return
for(var/obj/effect/overload/O in src)
new /obj/structure/fusionreactor(O.loc)
qdel(O)
if(on_peaceful)
peaceful_mode(FALSE, TRUE)
local_alarm = FALSE
called_backup = FALSE
unlock_computers()
used_self_destruct = FALSE
run_started = FALSE
run_finished = FALSE
despawn_guards()
hostile_list = list()
dead_list = list()
peaceful_list = list()
something_looted = FALSE
detected_mech = FALSE
detected_pod = FALSE
detected_double_agent = FALSE
updateicon()
despawn_guards()
guard_list = list()
hostile_list = list()
dead_list = list()
peaceful_list = list()
alert_log += "Alert level reset."
@@ -97,6 +107,13 @@
if(on_peaceful)
increase_alert("Thieves!")
/area/syndicate_depot/core/proc/armory_locker_looted()
if(!run_finished && !used_self_destruct)
if(shield_list.len)
activate_self_destruct("Armory compromised despite armory shield being online.", FALSE)
return
declare_finished()
/area/syndicate_depot/core/proc/turret_died()
something_looted = TRUE
if(on_peaceful)
@@ -133,19 +150,12 @@
if(L.opened)
L.close()
if(!L.locked)
L.locked = 1
L.locked = !L.locked
L.req_access = list(access_syndicate_leader)
L.update_icon()
for(var/obj/machinery/computer/syndicate_depot/teleporter/P in src)
if(!P.portal_enabled)
P.toggle_portal()
for(var/obj/machinery/door/airlock/hatch/syndicate/vault/V in src)
if(!V.density)
V.close()
V.emergency = 0
if(!V.locked)
V.locked = !V.locked
V.update_icon()
else
log_game("Depot visit: ended")
alert_log += "Visitor mode ended."
@@ -250,15 +260,17 @@
if(user)
var/turf/T = get_turf(user)
var/area/A = get_area(T)
var/log_msg = "[key_name(user)] has armed the depot self destruct device at [A.name] ([T.x],[T.y],[T.z])"
var/log_msg = "[key_name(user)] has triggered the depot self destruct at [A.name] ([T.x],[T.y],[T.z])"
message_admins(log_msg)
log_game(log_msg)
playsound(user, 'sound/machines/Alarm.ogg', 100, 0, 0)
else
log_game("Depot self destruct activated.")
if(reactor)
reactor.overload(containment_failure)
if(!reactor.has_overloaded)
reactor.overload(containment_failure)
else
log_debug("Depot: [src] called activate_self_destruct with no reactor.");
message_admins("<span class='adminnotice'>Syndicate Depot lacks reactor to initiate self-destruct. Must be destroyed manually.</span>")
updateicon()
@@ -269,13 +281,17 @@
for(var/obj/machinery/door/airlock/A in src)
spawn(0)
A.close()
if(A.density)
if(A.density && !A.locked)
A.lock()
/area/syndicate_depot/core/proc/lockout_computers()
for(var/obj/machinery/computer/syndicate_depot/C in src)
C.activate_security_lockout()
/area/syndicate_depot/core/proc/unlock_computers()
for(var/obj/machinery/computer/syndicate_depot/C in src)
C.security_lockout = FALSE
/area/syndicate_depot/core/proc/toggle_door_locks()
for(var/obj/machinery/door/airlock/A in src)
A.emergency = !A.emergency
@@ -313,6 +329,12 @@
if(L.name == "syndi_depot_shield")
var/obj/machinery/shieldwall/syndicate/S = new /obj/machinery/shieldwall/syndicate(L.loc)
shield_list += S.UID()
for(var/obj/structure/closet/secure_closet/syndicate/depot/armory/L in src)
if(L.opened)
L.close()
if(!L.locked)
L.locked = !L.locked
L.update_icon()
/area/syndicate_depot/core/proc/shields_key_check()
if(!shield_list.len)
@@ -327,6 +349,10 @@
if(S)
qdel(S)
shield_list = list()
for(var/obj/structure/closet/secure_closet/syndicate/depot/armory/L in src)
if(L.locked)
L.locked = !L.locked
L.update_icon()
/area/syndicate_depot/core/proc/despawn_guards()
for(var/mob/thismob in list_getmobs(guard_list))
+14 -4
View File
@@ -204,9 +204,6 @@
/atom/proc/allow_drop()
return 1
/atom/proc/CheckExit()
return 1
@@ -305,6 +302,10 @@
/atom/proc/rpd_act()
return
/atom/proc/rpd_blocksusage()
// Atoms that return TRUE prevent RPDs placing any kind of pipes on their turf.
return FALSE
/atom/proc/hitby(atom/movable/AM, skipcatch, hitpush, blocked)
if(density && !has_gravity(AM)) //thrown stuff bounces off dense stuff in no grav, unless the thrown stuff ends up inside what it hit(embedding, bola, etc...).
addtimer(CALLBACK(src, .proc/hitby_react, AM), 2)
@@ -708,4 +709,13 @@ var/list/blood_splatter_icons = list()
.["Jump to turf"] = "?_src_=holder;adminplayerobservecoodjump=1;X=[curturf.x];Y=[curturf.y];Z=[curturf.z]"
.["Add reagent"] = "?_src_=vars;addreagent=[UID()]"
.["Trigger explosion"] = "?_src_=vars;explode=[UID()]"
.["Trigger EM pulse"] = "?_src_=vars;emp=[UID()]"
.["Trigger EM pulse"] = "?_src_=vars;emp=[UID()]"
/atom/proc/AllowDrop()
return FALSE
/atom/proc/drop_location()
var/atom/L = loc
if(!L)
return null
return L.AllowDrop() ? L : get_turf(L)
+6 -3
View File
@@ -428,8 +428,11 @@
flick_overlay(I, viewing, 5) // 5 ticks/half a second
// And animate the attack!
animate(I, alpha = 175, pixel_x = 0, pixel_y = 0, pixel_z = 0, time = 3)
var/t_color = "#ffffff"
if(ismob(src) && ismob(A) && (!used_item))
var/mob/M = src
t_color = M.a_intent == INTENT_HARM ? "#ff0000" : "#ffffff"
animate(I, alpha = 175, pixel_x = 0, pixel_y = 0, pixel_z = 0, time = 3, color = t_color)
/atom/movable/proc/portal_destroyed(obj/effect/portal/P)
return
+5 -5
View File
@@ -56,7 +56,7 @@
icon_state = "scanner_open"
density = 1
anchored = 1.0
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 50
active_power_usage = 300
interact_offline = 1
@@ -103,8 +103,8 @@
for(var/obj/item/stock_parts/micro_laser/P in component_parts)
damage_coeff = P.rating
/obj/machinery/dna_scannernew/allow_drop()
return 0
/obj/machinery/dna_scannernew/AllowDrop()
return FALSE
/obj/machinery/dna_scannernew/relaymove(mob/user as mob)
if(user.stat)
@@ -359,7 +359,7 @@
var/obj/item/disk/data/disk = null
var/selected_menu_key = null
anchored = 1
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 10
active_power_usage = 400
var/waiting_for_user_input=0 // Fix for #274 (Mash create block injector without answering dialog to make unlimited injectors) - N3X
@@ -533,7 +533,7 @@
occupantData["name"] = connected.occupant.dna.real_name
occupantData["stat"] = connected.occupant.stat
occupantData["isViableSubject"] = 1
if((NOCLONE in connected.occupant.mutations && connected.scan_level < 3) || !src.connected.occupant.dna)
if((NOCLONE in connected.occupant.mutations && connected.scan_level < 3) || !src.connected.occupant.dna || (NO_DNA in connected.occupant.dna.species.species_traits))
occupantData["isViableSubject"] = 0
occupantData["health"] = connected.occupant.health
occupantData["maxHealth"] = connected.occupant.maxHealth
+2 -4
View File
@@ -171,11 +171,9 @@
H.visible_message("<span class='warning'>[user] sprays a cloud of fine ice crystals engulfing, [H]!</span>",
"<span class='warning'>[user] sprays a cloud of fine ice crystals cover your [H.head]'s visor and make it into your air vents!.</span>")
add_attack_logs(user, C, "Cryokinesis")
H.bodytemperature = max(0, H.bodytemperature - 50)
H.adjustFireLoss(5)
H.bodytemperature = max(0, H.bodytemperature - 100)
if(!handle_suit)
C.bodytemperature = max(0, C.bodytemperature - 100)
C.adjustFireLoss(10)
C.bodytemperature = max(0, C.bodytemperature - 200)
C.ExtinguishMob()
C.visible_message("<span class='warning'>[user] sprays a cloud of fine ice crystals, engulfing [C]!</span>")
+14 -1
View File
@@ -120,4 +120,17 @@
B.mind.special_role = SPECIAL_ROLE_BLOB_OVERMIND
spawn(0)
if(is_offspring)
B.verbs -= /mob/camera/blob/verb/split_consciousness
B.verbs -= /mob/camera/blob/verb/split_consciousness
/obj/structure/blob/core/proc/lateblobtimer()
addtimer(CALLBACK(src, .proc/lateblobcheck), 50)
/obj/structure/blob/core/proc/lateblobcheck()
if(overmind)
overmind.add_points(60)
if(overmind.mind)
overmind.mind.special_role = SPECIAL_ROLE_BLOB_OVERMIND
else
log_debug("/obj/structure/blob/core/proc/lateblobcheck: Blob core lacks a overmind.mind.")
else
log_debug("/obj/structure/blob/core/proc/lateblobcheck: Blob core lacks an overmind.")
+1 -1
View File
@@ -7,7 +7,7 @@
var/mob/camera/blob/overmind = null
/obj/structure/blob/storage/update_icon()
if(health <= 0)
if(health <= 0 && !QDELETED(src))
overmind.max_blob_points -= 50
qdel(src)
@@ -81,3 +81,18 @@
if(req_human && !ishuman(user))
return 0
return 1
// Transform the target to the chosen dna. Used in transform.dm and tiny_prick.dm (handy for changes since it's the same thing done twice)
/obj/effect/proc_holder/changeling/proc/transform_dna(var/mob/living/carbon/human/H, var/datum/dna/D)
if(!D)
return
H.set_species(D.species.type)
H.dna = D.Clone()
H.real_name = D.real_name
domutcheck(H, null, MUTCHK_FORCED) //Ensures species that get powers by the species proc handle_dna keep them
H.flavor_text = ""
H.dna.UpdateSE()
H.dna.UpdateUI()
H.sync_organ_dna(1)
H.UpdateAppearance()
@@ -48,7 +48,7 @@
var/healpertick = -(total_healing / healing_ticks)
user.heal_overall_damage((-healpertick/recent_uses), (-healpertick/recent_uses))
user.adjustOxyLoss(healpertick/recent_uses)
user.blood_volume += 30
user.blood_volume = min(user.blood_volume + 30, BLOOD_VOLUME_NORMAL)
user.updatehealth()
else
break
@@ -6,6 +6,11 @@
dna_cost = 1
req_human = 1
/obj/effect/proc_holder/changeling/headcrab/try_to_sting(mob/user, mob/target)
if(alert("Are you sure you wish to do this? This action cannot be undone.",,"Yes","No")=="No")
return
..()
/obj/effect/proc_holder/changeling/headcrab/sting_action(mob/user)
var/datum/mind/M = user.mind
var/list/organs = user.get_organs_zone("head", 1)
@@ -37,4 +42,4 @@
to_chat(crab, "<span class='warning'>You burst out of the remains of your former body in a shower of gore!</span>")
user.gib()
feedback_add_details("changeling_powers","LR")
return 1
return 1
@@ -25,13 +25,13 @@
if(istype(user.l_hand, weapon_type)) //Not the nicest way to do it, but eh
qdel(user.l_hand)
if(!silent)
user.visible_message("<span class='warning'>With a sickening crunch, [user] reforms [user.p_their()] [weapon_name_simple] into an arm!</span>", "<span class='notice'>We assimilate the [weapon_name_simple] back into our body.</span>", "<span class='warning>You hear organic matter ripping and tearing!</span>")
user.visible_message("<span class='warning'>With a sickening crunch, [user] reforms [user.p_their()] [weapon_name_simple] into an arm!</span>", "<span class='notice'>We assimilate the [weapon_name_simple] back into our body.</span>", "<span class='warning'>You hear organic matter ripping and tearing!</span>")
user.update_inv_l_hand()
return
if(istype(user.r_hand, weapon_type))
qdel(user.r_hand)
if(!silent)
user.visible_message("<span class='warning'>With a sickening crunch, [user] reforms [user.p_their()] [weapon_name_simple] into an arm!</span>", "<span class='notice'>We assimilate the [weapon_name_simple] back into our body.</span>", "<span class='warning>You hear organic matter ripping and tearing!</span>")
user.visible_message("<span class='warning'>With a sickening crunch, [user] reforms [user.p_their()] [weapon_name_simple] into an arm!</span>", "<span class='notice'>We assimilate the [weapon_name_simple] back into our body.</span>", "<span class='warning'>You hear organic matter ripping and tearing!</span>")
user.update_inv_r_hand()
return
..(user, target)
@@ -138,7 +138,7 @@
loc.visible_message("<span class='warning'>A grotesque blade forms around [loc.name]\'s arm!</span>", "<span class='warning'>Our arm twists and mutates, transforming it into a deadly blade.</span>", "<span class='warning'>You hear organic matter ripping and tearing!</span>")
/obj/item/melee/arm_blade/dropped(mob/user)
user.visible_message("<span class='warning'>With a sickening crunch, [user] reforms [user.p_their()] blade into an arm!</span>", "<span class='notice'>We assimilate the blade back into our body.</span>", "<span class='warning>You hear organic matter ripping and tearing!</span>")
user.visible_message("<span class='warning'>With a sickening crunch, [user] reforms [user.p_their()] blade into an arm!</span>", "<span class='notice'>We assimilate the blade back into our body.</span>", "<span class='warning'>You hear organic matter ripping and tearing!</span>")
. = ..()
/obj/item/melee/arm_blade/afterattack(atom/target, mob/user, proximity)
@@ -216,7 +216,7 @@
to_chat(loc, "<span class='notice'>You prepare to extend a tentacle.</span>")
/obj/item/gun/magic/tentacle/shoot_with_empty_chamber(mob/living/user as mob|obj)
to_chat(user, "<span class='warning'>The [name] is not ready yet.<span>")
to_chat(user, "<span class='warning'>The [name] is not ready yet.</span>")
/obj/item/gun/magic/tentacle/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] coils [src] tightly around [user.p_their()] neck! It looks like [user.p_theyre()] trying to commit suicide.</span>")
@@ -315,10 +315,10 @@
on_hit(I) //grab the item as if you had hit it directly with the tentacle
return 1
else
to_chat(firer, "<span class='danger'>You can't seem to pry [I] out of [C]'s hands!<span>")
to_chat(firer, "<span class='danger'>You can't seem to pry [I] out of [C]'s hands!</span>")
return 0
else
to_chat(firer, "<span class='danger'>[C] has nothing in hand to disarm!<span>")
to_chat(firer, "<span class='danger'>[C] has nothing in hand to disarm!</span>")
return 0
if(INTENT_GRAB)
@@ -100,7 +100,6 @@
/obj/effect/proc_holder/changeling/sting/transformation/sting_action(var/mob/user, var/mob/target)
add_attack_logs(user, target, "Transformation sting (changeling) (new identity is [selected_dna.real_name])")
var/datum/dna/NewDNA = selected_dna
if(issmall(target))
to_chat(user, "<span class='notice'>Our genes cry out as we sting [target.name]!</span>")
@@ -111,13 +110,7 @@
target.visible_message("<span class='danger'>[target] begins to violenty convulse!</span>","<span class='userdanger'>You feel a tiny prick and a begin to uncontrollably convulse!</span>")
spawn(10)
if(ishuman(target))
var/mob/living/carbon/human/H = target
H.set_species(NewDNA.species.type)
target.dna = NewDNA.Clone()
target.real_name = NewDNA.real_name
target.UpdateAppearance()
domutcheck(target, null)
transform_dna(target,selected_dna)//target is always human so no problem here
feedback_add_details("changeling_powers","TS")
return TRUE
@@ -14,16 +14,8 @@
if(!chosen_dna)
return
if(ishuman(user))
user.set_species(chosen_dna.species.type)
user.dna = chosen_dna.Clone()
user.real_name = chosen_dna.real_name
domutcheck(user, null, MUTCHK_FORCED) //Ensures species that get powers by the species proc handle_dna keep them
user.flavor_text = ""
user.dna.UpdateSE()
user.dna.UpdateUI()
user.sync_organ_dna(1)
user.UpdateAppearance()
transform_dna(user,chosen_dna)
user.changeling_update_languages(changeling.absorbed_languages)
+1 -1
View File
@@ -36,4 +36,4 @@
else if(M in dead_mob_list)
to_chat(M, "<span class='cultspeech'> <a href='?src=[M.UID()];follow=\ref[user]'>(F)</a> [my_message] </span>")
log_say("(CULT) [message]")
log_say("(CULT) [message]", user)
+1 -1
View File
@@ -739,7 +739,7 @@ var/list/teleport_runes = list()
playsound(E, 'sound/effects/EMPulse.ogg', 100, 1)
for(var/M in invokers)
var/mob/living/L = M
to_chat(L, "<span class=userdanger'>You chant in unison and a colossal burst of energy knocks you backward!</span>")
to_chat(L, "<span class='userdanger'>You chant in unison and a colossal burst of energy knocks you backward!</span>")
L.Weaken(2)
qdel(src) //delete before pulsing because it's a delay reee
empulse(E, 9*invokers.len, 12*invokers.len, 1) // Scales now, from a single room to most of the station depending on # of chanters
+1 -9
View File
@@ -156,15 +156,7 @@
msg="Task #[count] completed! "
if(pay>0)
if(M.mind.initial_account)
M.mind.initial_account.money += pay
var/datum/transaction/T = new()
T.target_name = "[command_name()] Payroll"
T.purpose = "Payment"
T.amount = pay
T.date = current_date_string
T.time = station_time_timestamp()
T.source_terminal = "\[CLASSIFIED\] Terminal #[rand(111,333)]"
M.mind.initial_account.transaction_log.Add(T)
M.mind.initial_account.credit(pay, "Payment", "\[CLASSIFIED\] Terminal #[rand(111,333)]", "[command_name()] Payroll")
msg += "You have been sent the $[pay], as agreed."
else
msg += "However, we were unable to send you the $[pay] you're entitled."
+1
View File
@@ -369,6 +369,7 @@ var/round_start_time = 0
if(player.mind.assigned_role == "Captain")
captainless=0
if(player.mind.assigned_role != player.mind.special_role)
job_master.AssignRank(player, player.mind.assigned_role, 0)
job_master.EquipRank(player, player.mind.assigned_role, 0)
EquipCustomItems(player)
if(captainless)
@@ -185,7 +185,7 @@
set name = "Destroy RCDs"
set desc = "Detonate all RCDs on the station, while sparing onboard cyborg RCDs."
if(stat || malf_cooldown)
if(stat || malf_cooldown > world.time)
return
for(var/obj/item/rcd/RCD in rcd_list)
@@ -193,9 +193,7 @@
RCD.detonate_pulse()
to_chat(src, "<span class='danger'>RCD detonation pulse emitted.</span>")
malf_cooldown = 1
spawn(100)
malf_cooldown = 0
malf_cooldown = world.time + 100
/datum/AI_Module/large/mecha_domination
@@ -454,7 +452,7 @@
set name = "Reactivate Cameranet"
set category = "Malfunction"
if(stat || malf_cooldown)
if(stat || malf_cooldown > world.time)
return
var/fixedcams = 0 //Tells the AI how many cams it fixed. Stats are fun.
@@ -477,9 +475,7 @@
break
to_chat(src, "<span class='notice'>Diagnostic complete! Operations completed: [fixedcams].</span>")
malf_cooldown = 1
spawn(30) //Lag protection
malf_cooldown = 0
malf_cooldown = world.time + 30
/datum/AI_Module/large/upgrade_cameras
@@ -197,17 +197,17 @@
/datum/game_mode/proc/auto_declare_completion_abduction()
var/text = ""
if(abductors.len)
text += "<br><span class='big'><b>The abductors were:</b></span>"
text += "<br><span class='big'><b>The abductors were:</b></span><br>"
for(var/datum/mind/abductor_mind in abductors)
text += printplayer(abductor_mind)
text += printobjectives(abductor_mind)
text += "<br>"
text += "<br>"
if(abductees.len)
text += "<br><span class='big'><b>The abductees were:</b></span>"
text += "<br><span class='big'><b>The abductees were:</b></span><br>"
for(var/datum/mind/abductee_mind in abductees)
text += printplayer(abductee_mind)
text += printobjectives(abductee_mind)
text += "<br>"
text += "<br>"
to_chat(world, text)
//Landmarks
@@ -363,7 +363,9 @@
if(M.has_brain_worms())
to_chat(src, "<span class='warning'>[M] is already infested!</span>")
return
host = M
add_attack_logs(src, host, "Infested as borer")
M.borer = src
forceMove(M)
@@ -415,6 +415,9 @@
failure_message = "<B>...ERROR. BOOT SEQUENCE ABORTED. AI FAILED TO INTIALIZE. PLEASE CONTACT SUPPORT OR TRY AGAIN LATER.</B>"
ling_failure = "The holoparasites recoil in horror. They want nothing to do with a creature like you."
/obj/item/guardiancreator/tech/check_uplink_validity()
return !used
/obj/item/guardiancreator/tech/choose
random = FALSE
@@ -439,13 +442,13 @@
info = {"<b>A list of Holoparasite Types</b><br>
<br>
<b>Chaos</b>: Ignites mobs on touch. teleports them at random on attack. Automatically extinguishes the user if they catch fire.<br>
<b>Chaos</b>: Has two modes. Deception: Causes target of attacks to hallucinate. Dispersion: Attacks have a chance to teleport the target randomly. Ignites mobs on touch. Automatically extinguishes the user if they catch fire.<br>
<br>
<b>Standard</b>:Devestating close combat attacks and high damage resist. No special powers.<br>
<b>Standard</b>: Devestating close combat attacks and high damage resist. No special powers.<br>
<br>
<b>Ranged</b>: Has two modes. Ranged: Extremely weak, highly spammable projectile attack. Scout: Can not attack, but can move through walls. Can lay surveillance snares in either mode.<br>
<br>
<b>Support</b>:Has two modes. Combat: Medium power attacks and damage resist. Healer: Attacks heal damage, but low damage resist and slow movemen. Can deploy a bluespace beacon and warp targets to it (including you) in either mode.<br>
<b>Support</b>: Has two modes. Combat: Medium power attacks and damage resist. Healer: Attacks heal damage, but low damage resist and slow movemen. Can deploy a bluespace beacon and warp targets to it (including you) in either mode.<br>
<br>
<b>Explosive</b>: High damage resist and medium power attack. Can turn any object into a bomb, dealing explosive damage to the next person to touch it. The object will return to normal after the trap is triggered.<br>
<br>
@@ -47,8 +47,8 @@
changeNext_move(CLICK_CD_MELEE)
if(heal_cooldown <= world.time && !stat)
var/mob/living/carbon/C = target
C.adjustBruteLoss(-5)
C.adjustFireLoss(-5)
C.adjustBruteLoss(-5, robotic=1)
C.adjustFireLoss(-5, robotic=1)
C.adjustOxyLoss(-5)
C.adjustToxLoss(-5)
heal_cooldown = world.time + 20
+1
View File
@@ -146,6 +146,7 @@ proc/issyndicate(mob/living/M as mob)
M.set_species(/datum/species/human, TRUE)
M.dna.ready_dna(M) // Quadriplegic Nuke Ops won't be participating in the paralympics
M.dna.species.create_organs(M)
M.reagents.add_reagent("mutadone", 1) //No fat/blind/colourblind/epileptic/whatever ops.
M.overeatduration = 0
+1 -1
View File
@@ -19,7 +19,7 @@ var/bomb_set
var/removal_stage = 0 // 0 is no removal, 1 is covers removed, 2 is covers open, 3 is sealant open, 4 is unwrenched, 5 is removed from bolts.
var/lastentered
var/is_syndicate = 0
use_power = 0
use_power = NO_POWER_USE
unacidable = 1
var/previous_level = ""
var/datum/wires/nuclearbomb/wires = null
+11 -3
View File
@@ -329,11 +329,17 @@ var/list/potential_theft_objectives = subtypesof(/datum/theft_objective) - /datu
explanation_text = "Destroy the station with a nuclear device."
martyr_compatible = 1
/datum/objective/steal
var/datum/theft_objective/steal_target
martyr_compatible = 0
var/theft_area
/datum/objective/steal/proc/get_location()
if(steal_target.location_override)
return steal_target.location_override
var/obj/item/T = locate(steal_target.typepath)
theft_area = get_area(T.loc)
return "[theft_area]"
/datum/objective/steal/find_target()
var/loop=50
@@ -346,7 +352,9 @@ var/list/potential_theft_objectives = subtypesof(/datum/theft_objective) - /datu
if(O.flags & 2)
continue
steal_target=O
explanation_text = "Steal [O]."
explanation_text = "Steal [steal_target]. One was last seen in [get_location()]. "
if(islist(O.protected_jobs) && O.protected_jobs.len)
explanation_text += "It may also be in the possession of the [jointext(O.protected_jobs, ", ")]."
return
explanation_text = "Free Objective."
+1 -1
View File
@@ -306,7 +306,7 @@
if(!(objective.check_completion()))
return 0
return 1
return 1
/////////////////////////////
//Checks for a head victory//
@@ -22,6 +22,7 @@
charge_max = 300
clothes_req = 0
action_icon_state = "glare"
humans_only = 1
/obj/effect/proc_holder/spell/targeted/glare/cast(list/targets, mob/user = usr)
for(var/mob/living/carbon/human/target in targets)
@@ -263,6 +264,7 @@
range = 1 //Adjacent to user
var/enthralling = 0
action_icon_state = "enthrall"
humans_only = 1
/obj/effect/proc_holder/spell/targeted/enthrall/cast(list/targets, mob/user = usr)
var/mob/living/carbon/human/ling = user
@@ -595,6 +597,7 @@
clothes_req = 0
include_user = 0
action_icon_state = "revive_thrall"
humans_only = 1
/obj/effect/proc_holder/spell/targeted/reviveThrall/cast(list/targets, mob/user = usr)
if(!shadowling_check(user))
@@ -751,7 +754,7 @@
playsound(user.loc, 'sound/magic/Staff_Chaos.ogg', 100, 1)
for(var/mob/living/boom in targets)
if(is_shadow(boom)) //Used to not work on thralls. Now it does so you can PUNISH THEM LIKE THE WRATHFUL GOD YOU ARE.
to_chat(user, "<span class='warning'>Making an ally explode seems unwise.<span>")
to_chat(user, "<span class='warning'>Making an ally explode seems unwise.</span>")
charge_counter = charge_max
return
user.visible_message("<span class='danger'>[user]'s markings flare as [user.p_they()] gesture[user.p_s()] at [boom]!</span>", \
@@ -782,7 +785,7 @@
for(var/mob/living/carbon/human/target in targets)
if(is_shadow_or_thrall(target))
to_chat(user, "<span class='warning'>You cannot enthrall an ally.<span>")
to_chat(user, "<span class='warning'>You cannot enthrall an ally.</span>")
charge_counter = charge_max
return
if(!target.ckey || !target.mind)
+4
View File
@@ -11,6 +11,7 @@
var/list/protected_jobs = list()
var/list/altitems = list()
var/flags = 0
var/location_override
/datum/theft_objective/proc/check_completion(var/datum/mind/owner)
if(!owner.current)
@@ -49,6 +50,7 @@
/datum/theft_objective/ai
name = "a functional AI"
typepath = /obj/item/aicard
location_override = "AI Satellite. An intellicard for transportation can be found in Tech Storage, Science Department or manufactured"
datum/theft_objective/ai/check_special_completion(var/obj/item/aicard/C)
if(..())
@@ -91,6 +93,7 @@ datum/theft_objective/ai/check_special_completion(var/obj/item/aicard/C)
name = "a sample of unused slime extract"
typepath = /obj/item/slime_extract
protected_jobs = list("Research Director","Scientist")
location_override = "Xenobiology"
/datum/theft_objective/slime_extract/check_special_completion(var/obj/item/slime_extract/E)
if(..())
@@ -169,6 +172,7 @@ datum/theft_objective/ai/check_special_completion(var/obj/item/aicard/C)
min=28
max=28
protected_jobs = list("Chief Engineer", "Station Engineer", "Scientist", "Research Director", "Life Support Specialist")
location_override = "Engineering or Toxin Mixing"
/datum/theft_objective/number/plasma_gas/getAmountStolen(var/obj/item/I)
return I:air_contents:toxins
+12 -1
View File
@@ -202,6 +202,14 @@
category = "Mobility"
cost = 1
/datum/spellbook_entry/greaterknock
name = "Greater Knock"
spell_type = /obj/effect/proc_holder/spell/aoe_turf/knock/greater
log_name = "GK"
category = "Mobility"
cost = 2
refundable = 0 //global effect on cast
/datum/spellbook_entry/fleshtostone
name = "Flesh to Stone"
spell_type = /obj/effect/proc_holder/spell/targeted/touch/flesh_to_stone
@@ -535,7 +543,10 @@
if(istype(O, /obj/item/antag_spawner/slaughter_demon))
to_chat(user, "<span class='notice'>On second thought, maybe summoning a demon is a bad idea. You refund your points.</span>")
uses+=2
if(istype(O, /obj/item/antag_spawner/slaughter_demon/laughter))
uses += 1
else
uses += 2
for(var/datum/spellbook_entry/item/bloodbottle/BB in entries)
if(!isnull(BB.limit))
BB.limit++
+38 -30
View File
@@ -412,8 +412,45 @@ var/global/datum/controller/occupations/job_master
return 1
/datum/controller/occupations/proc/AssignRank(var/mob/living/carbon/human/H, var/rank, var/joined_late = 0)
if(!H)
return null
var/datum/job/job = GetJob(rank)
/datum/controller/occupations/proc/EquipRank(var/mob/living/carbon/human/H, var/rank, var/joined_late = 0)
H.job = rank
var/alt_title = null
if(H.mind)
H.mind.assigned_role = rank
alt_title = H.mind.role_alt_title
CreateMoneyAccount(H, rank, job)
to_chat(H, "<B>You are the [alt_title ? alt_title : rank].</B>")
to_chat(H, "<b>As the [alt_title ? alt_title : rank] you answer directly to [job.supervisors]. Special circumstances may change this.</b>")
to_chat(H, "<b>For more information on how the station works, see <a href=\"https://nanotrasen.se/wiki/index.php/Standard_Operating_Procedure\">Standard Operating Procedure (SOP)</a></b>")
if(job.is_service)
to_chat(H, "<b>As a member of Service, make sure to read up on your <a href=\"https://nanotrasen.se/wiki/index.php/Standard_Operating_Procedure_&#40;Service&#41\">Department SOP</a></b>")
if(job.is_supply)
to_chat(H, "<b>As a member of Supply, make sure to read up on your <a href=\"https://nanotrasen.se/wiki/index.php/Standard_Operating_Procedure_&#40;Supply&#41\">Department SOP</a></b>")
if(job.is_command)
to_chat(H, "<b>As an important member of Command, read up on your <a href=\"https://nanotrasen.se/wiki/index.php/Standard_Operating_Procedure_&#40;Command&#41\">Department SOP</a></b>")
if(job.is_legal)
to_chat(H, "<b>Your job requires complete knowledge of <a href=\"https://nanotrasen.se/wiki/index.php/Space_law\">Space Law</a> and <a href=\"https://nanotrasen.se/wiki/index.php/Legal_Standard_Operating_Procedure\">Legal Standard Operating Procedure</a></b>")
if(job.is_engineering)
to_chat(H, "<b>As a member of Engineering, make sure to read up on your <a href=\"https://nanotrasen.se/wiki/index.php/Standard_Operating_Procedure_&#40;Engineering&#41\">Department SOP</a></b>")
if(job.is_medical)
to_chat(H, "<b>As a member of Medbay, make sure to read up on your <a href=\"https://nanotrasen.se/wiki/index.php/Standard_Operating_Procedure_&#40;Medical&#41\">Department SOP</a></b>")
if(job.is_science)
to_chat(H, "<b>As a member of Science, make sure to read up on your <a href=\"https://nanotrasen.se/wiki/index.php/Standard_Operating_Procedure_&#40;Science&#41\">Department SOP</a></b>")
if(job.is_security)
to_chat(H, "<b>As a member of Security, you are to know <a href=\"https://nanotrasen.se/wiki/index.php/Space_law\">Space Law</a>, <a href=\"https://nanotrasen.se/wiki/index.php/Legal_Standard_Operating_Procedure\">Legal Standard Operating Procedure</a>, as well as your <a href=\"https://nanotrasen.se/wiki/index.php/Standard_Operating_Procedure_&#40;Security&#41\">Department SOP</a></b>")
if(job.req_admin_notify)
to_chat(H, "<b>You are playing a job that is important for the game progression. If you have to disconnect, please notify the admins via adminhelp.</b>")
return H
/datum/controller/occupations/proc/EquipRank(mob/living/carbon/human/H, rank, joined_late = 0) // Equip and put them in an area
if(!H)
return null
@@ -457,40 +494,11 @@ var/global/datum/controller/occupations/job_master
H.buckled.loc = H.loc
H.buckled.dir = H.dir
var/alt_title = null
if(H.mind)
H.mind.assigned_role = rank
alt_title = H.mind.role_alt_title
CreateMoneyAccount(H, rank, job)
if(job)
var/new_mob = job.equip(H)
if(ismob(new_mob))
H = new_mob
to_chat(H, "<B>You are the [alt_title ? alt_title : rank].</B>")
to_chat(H, "<b>As the [alt_title ? alt_title : rank] you answer directly to [job.supervisors]. Special circumstances may change this.</b>")
to_chat(H, "<b>For more information on how the station works, see <a href=\"https://nanotrasen.se/wiki/index.php/Standard_Operating_Procedure\">Standard Operating Procedure (SOP)</a></b>")
if(job.is_service)
to_chat(H, "<b>As a member of Service, make sure to read up on your <a href=\"https://nanotrasen.se/wiki/index.php/Standard_Operating_Procedure_&#40;Service&#41\">Department SOP</a></b>")
if(job.is_supply)
to_chat(H, "<b>As a member of Supply, make sure to read up on your <a href=\"https://nanotrasen.se/wiki/index.php/Standard_Operating_Procedure_&#40;Supply&#41\">Department SOP</a></b>")
if(job.is_command)
to_chat(H, "<b>As an important member of Command, read up on your <a href=\"https://nanotrasen.se/wiki/index.php/Standard_Operating_Procedure_&#40;Command&#41\">Department SOP</a></b>")
if(job.is_legal)
to_chat(H, "<b>Your job requires complete knowledge of <a href=\"https://nanotrasen.se/wiki/index.php/Space_law\">Space Law</a> and <a href=\"https://nanotrasen.se/wiki/index.php/Legal_Standard_Operating_Procedure\">Legal Standard Operating Procedure</a></b>")
if(job.is_engineering)
to_chat(H, "<b>As a member of Engineering, make sure to read up on your <a href=\"https://nanotrasen.se/wiki/index.php/Standard_Operating_Procedure_&#40;Engineering&#41\">Department SOP</a></b>")
if(job.is_medical)
to_chat(H, "<b>As a member of Medbay, make sure to read up on your <a href=\"https://nanotrasen.se/wiki/index.php/Standard_Operating_Procedure_&#40;Medical&#41\">Department SOP</a></b>")
if(job.is_science)
to_chat(H, "<b>As a member of Science, make sure to read up on your <a href=\"https://nanotrasen.se/wiki/index.php/Standard_Operating_Procedure_&#40;Science&#41\">Department SOP</a></b>")
if(job.is_security)
to_chat(H, "<b>As a member of Security, you are to know <a href=\"https://nanotrasen.se/wiki/index.php/Space_law\">Space Law</a>, <a href=\"https://nanotrasen.se/wiki/index.php/Legal_Standard_Operating_Procedure\">Legal Standard Operating Procedure</a>, as well as your <a href=\"https://nanotrasen.se/wiki/index.php/Standard_Operating_Procedure_&#40;Security&#41\">Department SOP</a></b>")
if(job.req_admin_notify)
to_chat(H, "<b>You are playing a job that is important for the game progression. If you have to disconnect, please notify the admins via adminhelp.</b>")
if(job && H)
job.after_spawn(H)
+5 -2
View File
@@ -6,9 +6,10 @@
level = 1 // underfloor
layer = 2.5
anchored = 1
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 0
var/syndicate = 0
var/area_bypass = FALSE
var/obj/item/radio/beacon/Beacon
var/enabled = TRUE
@@ -22,6 +23,7 @@
Beacon.invisibility = INVISIBILITY_MAXIMUM
Beacon.loc = T
Beacon.syndicate = syndicate
Beacon.area_bypass = area_bypass
hide(T.intact)
/obj/machinery/bluespace_beacon/proc/destroy_beacon()
@@ -64,6 +66,7 @@
/obj/machinery/bluespace_beacon/syndicate
syndicate = TRUE
enabled = FALSE
area_bypass = TRUE // This enables teleports to this beacon to bypass the tele_proof flag of /area/s. Intended for depot syndi teleport computer.
var/obj/machinery/computer/syndicate_depot/teleporter/mycomputer
/obj/machinery/bluespace_beacon/syndicate/New()
@@ -74,4 +77,4 @@
/obj/machinery/bluespace_beacon/syndicate/Destroy()
if(mycomputer)
mycomputer.mybeacon = null
return ..()
return ..()
+1 -1
View File
@@ -5,7 +5,7 @@
density = 1
var/min_temperature = 0
anchored = 1.0
use_power = 1
use_power = IDLE_POWER_USE
current_heat_capacity = 1000
layer = 3
armor = list(melee = 0, bullet = 0, laser = 0, energy = 100, bomb = 0, bio = 100, rad = 100)
+1 -1
View File
@@ -5,7 +5,7 @@
icon_state = "table2-idle"
density = 1
anchored = 1.0
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 1
active_power_usage = 5
var/mob/living/carbon/human/victim = null
+3 -3
View File
@@ -420,7 +420,7 @@
/obj/machinery/sleeper/proc/inject_chemical(mob/living/user as mob, chemical, amount)
if(!(chemical in injection_chems))
to_chat(user, "<span class='notice'>The sleeper does not offer that chemical!</notice>")
to_chat(user, "<span class='notice'>The sleeper does not offer that chemical!</span>")
return
if(occupant)
@@ -519,8 +519,8 @@
return
return
/obj/machinery/sleeper/allow_drop()
return 0
/obj/machinery/sleeper/AllowDrop()
return FALSE
/obj/machinery/sleeper/verb/move_inside()
set name = "Enter Sleeper"
+1 -1
View File
@@ -75,7 +75,7 @@
icon = 'icons/obj/monitors.dmi'
icon_state = "alarm0"
anchored = 1
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 4
active_power_usage = 8
power_channel = ENVIRON
+1 -1
View File
@@ -74,7 +74,7 @@ var/datum/canister_icons/canister_icon_container = new()
pressure_resistance = 7*ONE_ATMOSPHERE
var/temperature_resistance = 1000 + T0C
volume = 1000
use_power = 0
use_power = NO_POWER_USE
interact_offline = 1
var/release_log = ""
var/busy = 0
+1 -1
View File
@@ -10,7 +10,7 @@
var/frequency = 0
var/id
var/id_tag
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 2
active_power_usage = 5
req_one_access_txt = "24;10"
@@ -1,6 +1,6 @@
/obj/machinery/portable_atmospherics
name = "atmoalter"
use_power = 0
use_power = NO_POWER_USE
armor = list(melee = 0, bullet = 0, laser = 0, energy = 100, bomb = 0, bio = 100, rad = 100)
var/datum/gas_mixture/air_contents = new
+1 -1
View File
@@ -21,7 +21,7 @@
var/hack_wire
var/disable_wire
var/shock_wire
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 10
active_power_usage = 100
var/busy = 0
+3 -3
View File
@@ -12,7 +12,7 @@
var/active = 0
settagwhitelist = list("id_tag", "logic_id_tag")
anchored = 1.0
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 2
active_power_usage = 4
var/range = 7
@@ -162,7 +162,7 @@
var/id = null
var/active = 0
anchored = 1.0
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 2
active_power_usage = 4
@@ -201,4 +201,4 @@
sleep(50)
icon_state = "launcherbtt"
active = 0
active = 0
+1 -1
View File
@@ -3,7 +3,7 @@
desc = "It's used to monitor rooms."
icon = 'icons/obj/monitors.dmi'
icon_state = "camera"
use_power = 2
use_power = ACTIVE_POWER_USE
idle_power_usage = 5
active_power_usage = 10
layer = WALL_OBJ_LAYER
+51 -47
View File
@@ -1,25 +1,25 @@
#define ASSEMBLY_UNBUILT 0 // Nothing done to it
#define ASSEMBLY_WRENCHED 1 // Wrenched in place
#define ASSEMBLY_WELDED 2 // Welded in place
#define ASSEMBLY_WIRED 3 // Wires attached (Upgradable now)
#define ASSEMBLY_BUILT 4 // Fully built (incl panel closed)
/obj/item/camera_assembly
name = "camera assembly"
desc = "A pre-fabricated security camera kit, ready to be assembled and mounted to a surface."
icon = 'icons/obj/monitors.dmi'
icon_state = "cameracase"
w_class = WEIGHT_CLASS_SMALL
anchored = 0
anchored = FALSE
materials = list(MAT_METAL=400, MAT_GLASS=250)
max_integrity = 150
can_be_hit = TRUE
// Motion, EMP-Proof, X-Ray
var/list/obj/item/possible_upgrades = list(/obj/item/assembly/prox_sensor, /obj/item/stack/sheet/mineral/plasma, /obj/item/analyzer)
var/list/upgrades = list()
var/state = 0
var/busy = 0
/*
0 = Nothing done to it
1 = Wrenched in place
2 = Welded in place
3 = Wires attached to it (you can now attach/dettach upgrades)
4 = Screwdriver panel closed and is fully built (you cannot attach upgrades)
*/
var/state = ASSEMBLY_UNBUILT
var/busy = FALSE
/obj/item/camera_assembly/Destroy()
QDEL_LIST(upgrades)
@@ -28,74 +28,72 @@
/obj/item/camera_assembly/attackby(obj/item/I, mob/living/user, params)
switch(state)
if(0)
if(ASSEMBLY_UNBUILT)
// State 0
if(iswrench(I) && isturf(loc))
playsound(loc, I.usesound, 50, 1)
to_chat(user, "You wrench the assembly into place.")
to_chat(user, "<span class='notice'>You wrench the assembly into place.</span>")
anchored = 1
state = 1
state = ASSEMBLY_WRENCHED
update_icon()
auto_turn()
return
if(1)
if(ASSEMBLY_WRENCHED)
// State 1
if(iswelder(I))
if(weld(I, user))
to_chat(user, "You weld the assembly securely into place.")
anchored = 1
state = 2
to_chat(user, "<span class='notice'>You weld the assembly securely into place.</span>")
anchored = TRUE
state = ASSEMBLY_WELDED
return
else if(iswrench(I))
playsound(loc, I.usesound, 50, 1)
to_chat(user, "You unattach the assembly from it's place.")
anchored = 0
to_chat(user, "<span class='notice'>You unattach the assembly from it's place.</span>")
anchored = FALSE
update_icon()
state = 0
state = ASSEMBLY_UNBUILT
return
if(2)
// State 2
if(ASSEMBLY_WELDED)
if(iscoil(I))
var/obj/item/stack/cable_coil/C = I
if(C.use(2))
to_chat(user, "<span class='notice'>You add wires to the assembly.</span>")
playsound(loc, I.usesound, 50, 1)
state = 3
state = ASSEMBLY_WIRED
else
to_chat(user, "<span class='warning'>You need 2 coils of wire to wire the assembly.</span>")
return
else if(iswelder(I))
if(weld(I, user))
to_chat(user, "You unweld the assembly from it's place.")
state = 1
anchored = 1
to_chat(user, "<span class='notice'>You unweld the assembly from it's place.</span>")
state = ASSEMBLY_WRENCHED
anchored = TRUE
return
if(3)
// State 3
if(ASSEMBLY_WIRED)
if(isscrewdriver(I))
playsound(loc, I.usesound, 50, 1)
var/input = strip_html(input(usr, "Which networks would you like to connect this camera to? Seperate networks with a comma. No Spaces!\nFor example: SS13,Security,Secret ", "Set Network", "SS13"))
if(!input)
to_chat(usr, "No input found please hang up and try your call again.")
to_chat(usr, "<span class='warning'>No input found please hang up and try your call again.</span>")
return
var/list/tempnetwork = splittext(input, ",")
if(tempnetwork.len < 1)
to_chat(usr, "No network found please hang up and try your call again.")
to_chat(usr, "<span class='warning'>No network found please hang up and try your call again.</span>")
return
var/area/camera_area = get_area(src)
var/temptag = "[sanitize(camera_area.name)] ([rand(1, 999)])"
input = strip_html(input(usr, "How would you like to name the camera?", "Set Camera Name", temptag))
state = 4
state = ASSEMBLY_BUILT
var/obj/machinery/camera/C = new(loc)
loc = C
C.assembly = src
@@ -104,7 +102,7 @@
C.network = uniquelist(tempnetwork)
tempnetwork = difflist(C.network,restricted_camera_networks)
if(!tempnetwork.len)//Camera isn't on any open network - remove its chunk from AI visibility.
if(!tempnetwork.len) // Camera isn't on any open network - remove its chunk from AI visibility.
cameranet.removeCamera(C)
C.c_tag = input
@@ -122,8 +120,8 @@
else if(iswirecutter(I))
new/obj/item/stack/cable_coil(get_turf(src), 2)
playsound(loc, I.usesound, 50, 1)
to_chat(user, "You cut the wires from the circuits.")
state = 2
to_chat(user, "<span class='notice'>You cut the wires from the circuits.</span>")
state = ASSEMBLY_WELDED
return
// Upgrades!
@@ -131,7 +129,7 @@
if(!user.unEquip(I))
to_chat(user, "<span class='warning'>[I] is stuck!</span>")
return
to_chat(user, "You attach [I] into the assembly inner circuits.")
to_chat(user, "<span class='notice'>You attach [I] into the assembly inner circuits.</span>")
upgrades += I
user.drop_item()
I.loc = src
@@ -141,7 +139,7 @@
else if(iscrowbar(I) && upgrades.len)
var/obj/U = locate(/obj) in upgrades
if(U)
to_chat(user, "You unattach an upgrade from the assembly.")
to_chat(user, "<span class='notice'>You unattach an upgrade from the assembly.</span>")
playsound(loc, I.usesound, 50, 1)
U.loc = get_turf(src)
upgrades -= U
@@ -161,23 +159,29 @@
..()
/obj/item/camera_assembly/proc/weld(obj/item/weldingtool/WT, mob/living/user)
if(busy)
return 0
return FALSE
if(!WT.remove_fuel(0, user))
return 0
return FALSE
to_chat(user, "<span class='notice'>You start to weld the [src]..</span>")
to_chat(user, "<span class='notice'>You start to weld the [src]...</span>")
playsound(loc, WT.usesound, 50, 1)
busy = 1
busy = TRUE
if(do_after(user, 20 * WT.toolspeed, target = src))
busy = 0
busy = FALSE
if(!WT.isOn())
return 0
return 1
busy = 0
return 0
return FALSE
return TRUE
busy = FALSE
return FALSE
/obj/item/camera_assembly/deconstruct(disassembled = TRUE)
new /obj/item/stack/sheet/metal(loc)
qdel(src)
qdel(src)
#undef ASSEMBLY_UNBUILT
#undef ASSEMBLY_WRENCHED
#undef ASSEMBLY_WELDED
#undef ASSEMBLY_WIRED
#undef ASSEMBLY_BUILT
+2 -2
View File
@@ -4,7 +4,7 @@
icon = 'icons/obj/power.dmi'
icon_state = "ccharger0"
anchored = 1
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 5
active_power_usage = 60
power_channel = EQUIP
@@ -123,4 +123,4 @@
use_power(200) //this used to use CELLRATE, but CELLRATE is fucking awful. feel free to fix this properly!
charging.give(175) //inefficiency.
updateicon()
updateicon()
@@ -515,7 +515,7 @@
var/eventstarted = 0
anchored = 1.0
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 2
active_power_usage = 6
power_channel = ENVIRON
+4 -2
View File
@@ -116,7 +116,10 @@
/obj/machinery/computer/security/proc/get_user_access(mob/user)
var/list/access = list()
if(ishuman(user))
if(emagged)
access = get_all_accesses() // Assume captain level access when emagged
else if(ishuman(user))
access = user.get_access()
else if((isAI(user) || isrobot(user)) && CanUseTopic(user, default_state) == STATUS_INTERACTIVE)
access = get_all_accesses() // Assume captain level access when AI
@@ -159,7 +162,6 @@
var/list/access = get_user_access(user)
if(emagged)
access = get_all_accesses() // Assume captain level access when emagged
data["emagged"] = 1
var/list/networks_list = list()
+1 -1
View File
@@ -107,7 +107,7 @@ var/time_last_changed_position = 0
set name = "Eject ID Card"
set src in oview(1)
if(usr.restrained())
if(usr.incapacitated())
return
if(scan)
+1 -1
View File
@@ -4,7 +4,7 @@
icon_state = "computer"
density = 1
anchored = 1.0
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 300
active_power_usage = 300
var/obj/item/circuitboard/circuit = null //if circuit==null, computer can't disassembly
+2 -2
View File
@@ -3,7 +3,7 @@
desc = "Used to monitor active health sensors built into most of the crew's uniforms."
icon_keyboard = "med_key"
icon_screen = "crew"
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 250
active_power_usage = 500
light_color = LIGHT_COLOR_DARKBLUE
@@ -33,4 +33,4 @@
crew_monitor.ui_interact(user, ui_key, ui, force_open)
/obj/machinery/computer/crew/interact(mob/user)
crew_monitor.ui_interact(user)
crew_monitor.ui_interact(user)
+12 -6
View File
@@ -138,6 +138,7 @@
if(depotarea)
depotarea.toggle_door_locks(src)
to_chat(user, "<span class='notice'>Door locks toggled.</span>")
playsound(user, sound_yes, 50, 0)
/obj/machinery/computer/syndicate_depot/doors/secondary(mob/user, subcommand)
if(..())
@@ -145,6 +146,7 @@
if(depotarea)
depotarea.toggle_falsewalls(src)
to_chat(user, "<span class='notice'>False walls toggled.</span>")
playsound(user, sound_yes, 50, 0)
// Engineering AKA self destruct computer, no useful functions, just a trap for the people who can't resist pushing dangerous-sounding buttons.
@@ -167,9 +169,9 @@
if(depotarea.used_self_destruct)
playsound(user, sound_no, 50, 0)
return
playsound(user, sound_click, 20, 1)
if(depotarea)
depotarea.activate_self_destruct("Fusion reactor containment field disengaged. All hands, evacuate. All hands, evacuate!", TRUE, user)
playsound(user, sound_click, 20, 1)
// Shield computer, used to manipulate base shield, and armory shield
@@ -285,6 +287,7 @@
to_chat(user, "<span class='warning'>[src] requires authentication with syndicate codewords, which you do not know.</span>")
raise_alert("Detected unauthorized access by [user] to [src]!")
updateUsrDialog()
playsound(user, sound_yes, 50, 0)
/obj/machinery/computer/syndicate_depot/syndiecomms/secondary(mob/user, subcommand)
if(..())
@@ -319,6 +322,7 @@
else
to_chat(user, "<span class='warning'>ERROR: [src] is unable to uplink to depot network.</span>")
updateUsrDialog()
playsound(user, sound_yes, 50, 0)
/obj/machinery/computer/syndicate_depot/syndiecomms/proc/grant_syndie_faction(mob/user)
user.faction += "syndicate"
@@ -347,7 +351,7 @@
icon_screen = "telesci"
icon_keyboard = "teleport_key"
var/obj/machinery/bluespace_beacon/syndicate/mybeacon
var/obj/effect/portal/myportal
var/obj/effect/portal/redspace/myportal
var/portal_enabled = FALSE
var/portaldir = WEST
@@ -401,10 +405,8 @@
if(!tele_target)
return
var/turf/portal_turf = get_step(src, portaldir)
var/obj/effect/portal/P = new(portal_turf, tele_target, src, 0)
var/obj/effect/portal/redspace/P = new(portal_turf, tele_target, src, 0)
myportal = P
P.failchance = 0
P.icon_state = "portal1"
var/area/A = get_area(tele_target)
P.name = "[A] portal"
else if(!portal_enabled && myportal)
@@ -432,6 +434,7 @@
var/bresult = mybeacon.toggle()
to_chat(user, "<span class='notice'>Syndicate Teleporter Beacon: [bresult ? "<span class='green'>ON</span>" : "<span class='red'>OFF</span>"]</span>")
updateUsrDialog()
playsound(user, sound_yes, 50, 0)
/obj/machinery/computer/syndicate_depot/teleporter/secondary(mob/user)
if(..())
@@ -444,6 +447,7 @@
toggle_portal()
to_chat(user, "<span class='notice'>Outgoing Teleport Portal: [portal_enabled ? "<span class='green'>ON</span>" : "<span class='red'>OFF</span>"]</span>")
updateUsrDialog()
playsound(user, sound_yes, 50, 0)
/obj/machinery/computer/syndicate_depot/teleporter/proc/toggle_portal()
portal_enabled = !portal_enabled
@@ -507,6 +511,7 @@
if(depotarea)
depotarea.reset_alert()
to_chat(user, "Alert level reset.")
playsound(user, sound_yes, 50, 0)
/obj/machinery/computer/syndicate_depot/aiterminal/secondary(mob/user)
if(..())
@@ -516,4 +521,5 @@
new /obj/effect/portal(get_turf(B))
to_chat(user, "[B] has been recalled.")
qdel(B)
raise_alert("Sentry bot removed via emergency recall.")
raise_alert("Sentry bot removed via emergency recall.")
playsound(user, sound_yes, 50, 0)
+1 -1
View File
@@ -3,7 +3,7 @@
desc = "Used to monitor power levels across the station."
icon_screen = "power"
icon_keyboard = "power_key"
use_power = 2
use_power = ACTIVE_POWER_USE
idle_power_usage = 20
active_power_usage = 80
light_color = LIGHT_COLOR_ORANGE
+1 -1
View File
@@ -50,7 +50,7 @@
/obj/machinery/computer/secure_data/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
ui = SSnanoui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
ui = new(user, src, ui_key, "secure_data.tmpl", name, 800, 380)
ui = new(user, src, ui_key, "secure_data.tmpl", name, 800, 800)
ui.open()
/obj/machinery/computer/secure_data/ui_data(mob/user, ui_key = "main", datum/topic_state/state = default_state)
+5 -5
View File
@@ -4,7 +4,7 @@
icon_state = "box_0"
density = 1
anchored = 1
use_power = 0
use_power = NO_POWER_USE
var/obj/item/circuitboard/circuit = null
var/list/components = null
var/list/req_components = null
@@ -655,11 +655,11 @@ obj/item/circuitboard/rdserver
build_path = /obj/machinery/mecha_part_fabricator/spacepod
board_type = "machine"
origin_tech = "programming=2;engineering=2"
frame_desc = "Requires 3 Matter Bins, 2 Manipulators, 2 Micro-Lasers, and 1 Console Screen."
frame_desc = "Requires 2 Matter Bins, 1 Manipulators, 1 Micro-Lasers, and 1 Console Screen."
req_components = list(
/obj/item/stock_parts/matter_bin = 3,
/obj/item/stock_parts/manipulator = 2,
/obj/item/stock_parts/micro_laser = 2,
/obj/item/stock_parts/matter_bin = 2,
/obj/item/stock_parts/manipulator = 1,
/obj/item/stock_parts/micro_laser = 1,
/obj/item/stock_parts/console_screen = 1)
+4 -4
View File
@@ -123,7 +123,7 @@
..()
if(autoeject)
if(occupant)
if(!occupant.has_organic_damage())
if(!occupant.has_organic_damage() && !occupant.has_mutated_organs())
on = 0
go_out()
playsound(src.loc, 'sound/machines/ding.ogg', 50, 1)
@@ -149,8 +149,8 @@
parent.update = 1
/obj/machinery/atmospherics/unary/cryo_cell/allow_drop()
return 0
/obj/machinery/atmospherics/unary/cryo_cell/AllowDrop()
return FALSE
/obj/machinery/atmospherics/unary/cryo_cell/relaymove(mob/user as mob)
@@ -367,7 +367,7 @@
if(air_contents.total_moles() < 10)
return
if(occupant)
if(occupant.stat == 2 || occupant.health >= 100) //Why waste energy on dead or healthy people
if(occupant.stat == 2 || (occupant.health >= 100 && !occupant.has_mutated_organs())) //Why waste energy on dead or healthy people
occupant.bodytemperature = T0C
return
occupant.bodytemperature += 2*(air_contents.temperature - occupant.bodytemperature)*current_heat_capacity/(current_heat_capacity + air_contents.heat_capacity())
+2 -2
View File
@@ -27,7 +27,7 @@
*/
anchored = 1.0
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 2
active_power_usage = 4
@@ -62,7 +62,7 @@
req_access = list()
req_one_access = list()
playsound(loc, "sparks", 100, 1)
/obj/machinery/door_control/attack_ghost(mob/user)
if(user.can_advanced_admin_interact())
return attack_hand(user)
+59 -19
View File
@@ -306,6 +306,10 @@ About the new airlock wires panel:
else
return 0
//Checks if the user can get shocked and shocks him if it can. Returns TRUE if it happened
/obj/machinery/door/airlock/proc/shock_user(mob/user, prob)
return (!issilicon(user) && isElectrified() && shock(user, prob))
/obj/machinery/door/airlock/update_icon(state=0, override=0)
if(operating && !override)
return
@@ -630,11 +634,25 @@ About the new airlock wires panel:
return ..()
/obj/machinery/door/airlock/attack_hand(mob/user)
if(!issilicon(user))
if(isElectrified())
if(shock(user, 100))
return
if(shock_user(user, 100))
return
if(headbutt_airlock(user))
return//Smack that head against that airlock
if(remove_airlock_note(user, FALSE))
return
if(panel_open)
if(security_level)
to_chat(user, "<span class='warning'>Wires are protected!</span>")
return
wires.Interact(user)
else
..()
//Checks if the user can headbutt the airlock and does it if it can. Returns TRUE if it happened
/obj/machinery/door/airlock/proc/headbutt_airlock(mob/user)
if(ishuman(user) && prob(40) && density)
var/mob/living/carbon/human/H = user
if(H.getBrainLoss() >= 60 && Adjacent(user))
@@ -648,15 +666,23 @@ About the new airlock wires panel:
H.UpdateDamageIcon()
else
visible_message("<span class='warning'>[user] headbutts the airlock. Good thing [user.p_theyre()] wearing a helmet.</span>")
return
return TRUE
return FALSE
//For the tools being used on the door. Since you don't want to call the attack_hand method if you're using hands. That would be silly
//Also it's a bit inconsistent that when you access the panel you headbutt it. But not while crowbarring
//Try to interact with the panel. If the user can't it'll try activating the door
/obj/machinery/door/airlock/proc/interact_with_panel(mob/user)
if(shock_user(user, 100))
return
if(panel_open)
if(security_level)
to_chat(user, "<span class='warning'>Wires are protected!</span>")
return
wires.Interact(user)
else
..()
try_to_activate_door(user)
/obj/machinery/door/airlock/CanUseTopic(mob/user)
if(!issilicon(user) && !isobserver(user))
@@ -777,13 +803,14 @@ About the new airlock wires panel:
return 1
/obj/machinery/door/airlock/attackby(obj/item/C, mob/user, params)
if(!issilicon(user))
if(isElectrified())
if(shock(user, 75))
return
if(shock_user(user, 75))
return
add_fingerprint(user)
if(headbutt_airlock(user))//See if the user headbutts the airlock
return
if(panel_open)
switch(security_level)
if(AIRLOCK_SECURITY_NONE)
@@ -922,23 +949,19 @@ About the new airlock wires panel:
update_icon()
else if(iswirecutter(C))
if(note)
user.visible_message("<span class='notice'>[user] cuts down [note] from [src].</span>", "<span class='notice'>You remove [note] from [src].</span>")
playsound(src, 'sound/items/Wirecutter.ogg', 50, 1)
note.forceMove(get_turf(user))
note = null
update_icon()
remove_airlock_note(user, TRUE)
else
return attack_hand(user)
return interact_with_panel(user)
else if(ismultitool(C))
return attack_hand(user)
return interact_with_panel(user)
else if(istype(C, /obj/item/assembly/signaler))
return attack_hand(user)
return interact_with_panel(user)
else if(istype(C, /obj/item/pai_cable)) // -- TLE
var/obj/item/pai_cable/cable = C
cable.plugin(src, user)
else if(istype(C, /obj/item/paper) || istype(C, /obj/item/photo))
if(note)
to_chat(user, "<span class='warning'>There's already something pinned to this airlock! Use wirecutters to remove it.</span>")
to_chat(user, "<span class='warning'>There's already something pinned to this airlock! Use wirecutters or your hands to remove it.</span>")
return
if(!user.unEquip(C))
to_chat(user, "<span class='warning'>For some reason, you can't attach [C]!</span>")
@@ -1294,6 +1317,23 @@ About the new airlock wires panel:
else if(istype(note, /obj/item/photo))
return "photo"
//Removes the current note on the door if any. Returns if a note is removed
/obj/machinery/door/airlock/proc/remove_airlock_note(mob/user, wirecutters_used=TRUE)
if(note)
if(!wirecutters_used)
if (ishuman(user) && user.a_intent == INTENT_GRAB)//grab that note
user.visible_message("<span class='notice'>[user] removes [note] from [src].</span>", "<span class='notice'>You remove [note] from [src].</span>")
playsound(src, 'sound/items/poster_ripped.ogg', 50, 1)
else return FALSE
else
user.visible_message("<span class='notice'>[user] cuts down [note] from [src].</span>", "<span class='notice'>You remove [note] from [src].</span>")
playsound(src, 'sound/items/Wirecutter.ogg', 50, 1)
note.forceMove(get_turf(user))
note = null
update_icon()
return TRUE
return FALSE
/obj/machinery/door/airlock/narsie_act()
var/turf/T = get_turf(src)
var/runed = prob(20)
+1 -1
View File
@@ -4,7 +4,7 @@
icon_state = "barbervend"
density = 1
anchored = 1
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 40
var/dye_color = "#FFFFFF"
@@ -4,7 +4,7 @@
name = "Embedded Controller"
anchored = 1
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 10
var/on = 1
+3 -3
View File
@@ -13,7 +13,7 @@ FIRE ALARM
var/lockdownbyai = 0
anchored = 1.0
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 100)
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 2
active_power_usage = 6
power_channel = ENVIRON
@@ -70,7 +70,7 @@ FIRE ALARM
/obj/machinery/firealarm/attackby(obj/item/I, mob/user, params)
add_fingerprint(user)
if(iswirecutter(I) && buildstage == 2)
if(isscrewdriver(I) && buildstage == 2)
wiresexposed = !wiresexposed
update_icon()
return
@@ -281,7 +281,7 @@ Just a object used in constructing fire alarms
var/timing = 0.0
var/lockdownbyai = 0
anchored = 1.0
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 2
active_power_usage = 6
+1 -1
View File
@@ -121,7 +121,7 @@
var/id = null
var/active = 0
anchored = 1.0
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 2
active_power_usage = 4
+32 -26
View File
@@ -1,23 +1,22 @@
//these are probably broken
/obj/machinery/floodlight
name = "Emergency Floodlight"
name = "emergency floodlight"
icon = 'icons/obj/machines/floodlight.dmi'
icon_state = "flood00"
anchored = 0
density = 1
var/on = 0
anchored = FALSE
density = TRUE
light_power = 20
var/on = FALSE
var/obj/item/stock_parts/cell/high/cell = null
var/use = 5
var/unlocked = 0
var/open = 0
var/unlocked = FALSE
var/open = FALSE
var/brightness_on = 14
light_power = 20
//var/brightness_on = 999 //can't remember what the maxed out value is //Lighting overhaul: No max, stop TRYING TO ILLUMINATE MORE TILES THAN THE MAP CONSISTS OF.
/obj/machinery/floodlight/New()
/obj/machinery/floodlight/Initialize()
. = ..()
src.cell = new(src)
..()
mapVarInit()
/obj/machinery/floodlight/Destroy()
QDEL_NULL(cell)
@@ -30,13 +29,12 @@
if(on)
cell.charge -= use
if(cell.charge <= 0)
on = 0
on = FALSE
updateicon()
set_light(0)
src.visible_message("<span class='warning'>[src] shuts down due to lack of power!</span>")
return
/obj/machinery/floodlight/attack_ai(mob/user as mob)
/obj/machinery/floodlight/attack_ai()
return
/obj/machinery/floodlight/attack_hand(mob/user as mob)
@@ -51,25 +49,33 @@
cell.update_icon()
src.cell = null
to_chat(user, "You remove the power cell")
to_chat(user, "You remove the power cell.")
updateicon()
return
if(on)
on = 0
to_chat(user, "<span class='notice'>You turn off the light</span>")
on = FALSE
to_chat(user, "<span class='notice'>You turn off the light.</span>")
set_light(0)
else
if(!cell)
return
if(cell.charge <= 0)
return
on = 1
to_chat(user, "<span class='notice'>You turn on the light</span>")
on = TRUE
to_chat(user, "<span class='notice'>You turn on the light.</span>")
set_light(brightness_on)
updateicon()
/obj/machinery/floodlight/proc/mapVarInit()
if(on)
if(!cell)
return
if(cell.charge <= 0)
return
set_light(brightness_on)
updateicon()
/obj/machinery/floodlight/attackby(obj/item/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/wrench))
@@ -79,32 +85,32 @@
"[user] tightens \the [src]'s casters.", \
"<span class='notice'> You have tightened \the [src]'s casters.</span>", \
"You hear ratchet.")
anchored = 1
anchored = TRUE
else if(anchored)
playsound(src.loc, W.usesound, 50, 1)
user.visible_message( \
"[user] loosens \the [src]'s casters.", \
"<span class='notice'> You have loosened \the [src]'s casters.</span>", \
"You hear ratchet.")
anchored = 0
anchored = FALSE
if(istype(W, /obj/item/screwdriver))
if(!open)
if(unlocked)
unlocked = 0
unlocked = FALSE
to_chat(user, "You screw the battery panel in place.")
else
unlocked = 1
unlocked = TRUE
to_chat(user, "You unscrew the battery panel.")
if(istype(W, /obj/item/crowbar))
if(unlocked)
if(open)
open = 0
open = FALSE
overlays = null
to_chat(user, "You crowbar the battery panel in place.")
else
if(unlocked)
open = 1
open = TRUE
to_chat(user, "You remove the battery panel.")
if(istype(W, /obj/item/stock_parts/cell))

Some files were not shown because too many files have changed in this diff Show More