mirror of
https://github.com/KabKebab/GS13.git
synced 2026-07-11 07:59:08 +01:00
@@ -0,0 +1,970 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/turf/open/space/basic,
|
||||
/area/template_noop)
|
||||
"b" = (
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"c" = (
|
||||
/turf/closed/wall/r_wall/rust,
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"d" = (
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"e" = (
|
||||
/obj/machinery/porta_turret/syndicate{
|
||||
desc = "A ballistic machine gun auto-turret that fires bluespace bullets.";
|
||||
lethal_projectile = /obj/item/projectile/magic/teleport;
|
||||
name = "displacement turret";
|
||||
stun_projectile = /obj/item/projectile/magic/teleport
|
||||
},
|
||||
/turf/open/floor/plasteel/grimy{
|
||||
icon_state = "engine"
|
||||
},
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"f" = (
|
||||
/turf/open/floor/plasteel/grimy{
|
||||
icon_state = "engine"
|
||||
},
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"g" = (
|
||||
/obj/structure/table/glass,
|
||||
/turf/open/floor/plasteel/grimy{
|
||||
icon_state = "engine"
|
||||
},
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"h" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/stack/sheet/bluespace_crystal{
|
||||
amount = 37
|
||||
},
|
||||
/turf/open/floor/plasteel/grimy{
|
||||
icon_state = "engine"
|
||||
},
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"i" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/bodybag/bluespace,
|
||||
/turf/open/floor/plasteel/grimy{
|
||||
icon_state = "engine"
|
||||
},
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"j" = (
|
||||
/turf/open/floor/plasteel/stairs/left,
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"k" = (
|
||||
/turf/open/floor/plasteel/stairs/medium,
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"l" = (
|
||||
/turf/open/floor/plasteel/stairs/right,
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"m" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/reagent_containers/syringe/bluespace,
|
||||
/turf/open/floor/plasteel/grimy{
|
||||
icon_state = "engine"
|
||||
},
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"n" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/stock_parts/matter_bin/bluespace,
|
||||
/turf/open/floor/plasteel/grimy{
|
||||
icon_state = "engine"
|
||||
},
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"o" = (
|
||||
/turf/open/floor/plasteel/vaporwave,
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"p" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/stack/cable_coil/blue,
|
||||
/turf/open/floor/plasteel/grimy{
|
||||
icon_state = "engine"
|
||||
},
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"q" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/storage/backpack/holding,
|
||||
/turf/open/floor/plasteel/grimy{
|
||||
icon_state = "engine"
|
||||
},
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"r" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/reagent_containers/glass/beaker/bluespace,
|
||||
/turf/open/floor/plasteel/grimy{
|
||||
icon_state = "engine"
|
||||
},
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"s" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/stock_parts/subspace/crystal,
|
||||
/obj/item/stock_parts/subspace/transmitter,
|
||||
/turf/open/floor/plasteel/grimy{
|
||||
icon_state = "engine"
|
||||
},
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"t" = (
|
||||
/obj/structure/displaycase{
|
||||
start_showpiece_type = /obj/item/hilbertshotel
|
||||
},
|
||||
/turf/open/floor/plasteel/vaporwave,
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"u" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/analyzer,
|
||||
/turf/open/floor/plasteel/grimy{
|
||||
icon_state = "engine"
|
||||
},
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"v" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/stock_parts/subspace/amplifier,
|
||||
/turf/open/floor/plasteel/grimy{
|
||||
icon_state = "engine"
|
||||
},
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"w" = (
|
||||
/obj/item/paper/crumpled/docslogs,
|
||||
/obj/item/pen,
|
||||
/turf/open/floor/plasteel/vaporwave,
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"x" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/assembly/signaler,
|
||||
/turf/open/floor/plasteel/grimy{
|
||||
icon_state = "engine"
|
||||
},
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"y" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/slimecross/industrial/bluespace,
|
||||
/turf/open/floor/plasteel/grimy{
|
||||
icon_state = "engine"
|
||||
},
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"z" = (
|
||||
/obj/machinery/door/airlock/vault{
|
||||
name = "secured door";
|
||||
req_access = 207
|
||||
},
|
||||
/obj/effect/mapping_helpers/airlock/locked,
|
||||
/turf/open/floor/plasteel/grimy{
|
||||
icon_state = "engine"
|
||||
},
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"A" = (
|
||||
/obj/structure/filingcabinet,
|
||||
/turf/open/floor/plasteel/grimy,
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"B" = (
|
||||
/turf/open/floor/plasteel/grimy,
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"C" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/turf/open/floor/plasteel/grimy,
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"D" = (
|
||||
/obj/item/twohanded/required/kirbyplants/random,
|
||||
/turf/open/floor/plasteel/grimy,
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"E" = (
|
||||
/obj/structure/chair/office,
|
||||
/turf/open/floor/plasteel/grimy,
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"F" = (
|
||||
/obj/machinery/door/window/eastleft,
|
||||
/turf/open/floor/plasteel/grimy,
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"G" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/pen,
|
||||
/turf/open/floor/plasteel/grimy,
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"H" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/paper/crumpled/robertsworkjournal,
|
||||
/turf/open/floor/plasteel/grimy,
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"I" = (
|
||||
/obj/machinery/door/airlock/highsecurity{
|
||||
req_access = 207
|
||||
},
|
||||
/obj/effect/mapping_helpers/airlock/locked,
|
||||
/turf/open/floor/plasteel/grimy,
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"J" = (
|
||||
/turf/closed/mineral/random,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"K" = (
|
||||
/turf/open/floor/plasteel/stairs/right{
|
||||
initial_gas_mix = "TEMP=2.7"
|
||||
},
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"U" = (
|
||||
/turf/open/floor/plasteel/stairs/medium{
|
||||
initial_gas_mix = "TEMP=2.7"
|
||||
},
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"X" = (
|
||||
/turf/open/floor/plasteel/stairs/left{
|
||||
initial_gas_mix = "TEMP=2.7"
|
||||
},
|
||||
/area/ruin/unpowered/no_grav)
|
||||
|
||||
(1,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
J
|
||||
J
|
||||
J
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
J
|
||||
b
|
||||
J
|
||||
b
|
||||
b
|
||||
a
|
||||
b
|
||||
J
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
a
|
||||
a
|
||||
b
|
||||
J
|
||||
J
|
||||
J
|
||||
b
|
||||
J
|
||||
b
|
||||
J
|
||||
b
|
||||
b
|
||||
J
|
||||
J
|
||||
J
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
a
|
||||
a
|
||||
b
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
d
|
||||
d
|
||||
c
|
||||
d
|
||||
d
|
||||
c
|
||||
d
|
||||
d
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
a
|
||||
a
|
||||
b
|
||||
d
|
||||
e
|
||||
f
|
||||
f
|
||||
m
|
||||
r
|
||||
g
|
||||
g
|
||||
f
|
||||
f
|
||||
f
|
||||
e
|
||||
c
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
a
|
||||
a
|
||||
b
|
||||
d
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
d
|
||||
J
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
a
|
||||
a
|
||||
J
|
||||
d
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
c
|
||||
J
|
||||
b
|
||||
b
|
||||
J
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
a
|
||||
a
|
||||
J
|
||||
c
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
c
|
||||
J
|
||||
b
|
||||
J
|
||||
b
|
||||
b
|
||||
J
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
a
|
||||
a
|
||||
J
|
||||
c
|
||||
g
|
||||
f
|
||||
f
|
||||
n
|
||||
s
|
||||
v
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
c
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(12,1,1) = {"
|
||||
a
|
||||
a
|
||||
J
|
||||
c
|
||||
g
|
||||
f
|
||||
j
|
||||
o
|
||||
o
|
||||
o
|
||||
j
|
||||
f
|
||||
f
|
||||
f
|
||||
c
|
||||
d
|
||||
d
|
||||
c
|
||||
c
|
||||
d
|
||||
c
|
||||
J
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(13,1,1) = {"
|
||||
a
|
||||
a
|
||||
J
|
||||
c
|
||||
h
|
||||
f
|
||||
k
|
||||
o
|
||||
t
|
||||
o
|
||||
k
|
||||
f
|
||||
f
|
||||
f
|
||||
c
|
||||
A
|
||||
B
|
||||
C
|
||||
B
|
||||
D
|
||||
c
|
||||
J
|
||||
J
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(14,1,1) = {"
|
||||
a
|
||||
a
|
||||
J
|
||||
c
|
||||
g
|
||||
f
|
||||
l
|
||||
o
|
||||
o
|
||||
w
|
||||
l
|
||||
f
|
||||
f
|
||||
f
|
||||
d
|
||||
B
|
||||
B
|
||||
G
|
||||
B
|
||||
B
|
||||
c
|
||||
J
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
"}
|
||||
(15,1,1) = {"
|
||||
a
|
||||
a
|
||||
J
|
||||
c
|
||||
i
|
||||
f
|
||||
f
|
||||
p
|
||||
u
|
||||
x
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
d
|
||||
B
|
||||
E
|
||||
H
|
||||
B
|
||||
B
|
||||
c
|
||||
J
|
||||
J
|
||||
J
|
||||
a
|
||||
a
|
||||
"}
|
||||
(16,1,1) = {"
|
||||
a
|
||||
b
|
||||
J
|
||||
c
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
c
|
||||
B
|
||||
B
|
||||
C
|
||||
B
|
||||
B
|
||||
c
|
||||
b
|
||||
J
|
||||
b
|
||||
a
|
||||
a
|
||||
"}
|
||||
(17,1,1) = {"
|
||||
a
|
||||
b
|
||||
J
|
||||
d
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
c
|
||||
C
|
||||
F
|
||||
C
|
||||
B
|
||||
B
|
||||
c
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
"}
|
||||
(18,1,1) = {"
|
||||
a
|
||||
b
|
||||
J
|
||||
d
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
d
|
||||
B
|
||||
B
|
||||
B
|
||||
B
|
||||
B
|
||||
d
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(19,1,1) = {"
|
||||
a
|
||||
b
|
||||
J
|
||||
d
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
z
|
||||
B
|
||||
B
|
||||
B
|
||||
B
|
||||
B
|
||||
d
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(20,1,1) = {"
|
||||
a
|
||||
a
|
||||
b
|
||||
c
|
||||
e
|
||||
f
|
||||
g
|
||||
q
|
||||
g
|
||||
y
|
||||
g
|
||||
f
|
||||
e
|
||||
f
|
||||
c
|
||||
B
|
||||
B
|
||||
B
|
||||
B
|
||||
B
|
||||
d
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(21,1,1) = {"
|
||||
a
|
||||
a
|
||||
b
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
d
|
||||
d
|
||||
c
|
||||
c
|
||||
c
|
||||
d
|
||||
B
|
||||
B
|
||||
B
|
||||
B
|
||||
B
|
||||
d
|
||||
X
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(22,1,1) = {"
|
||||
a
|
||||
a
|
||||
b
|
||||
b
|
||||
J
|
||||
J
|
||||
b
|
||||
b
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
d
|
||||
D
|
||||
B
|
||||
B
|
||||
B
|
||||
B
|
||||
I
|
||||
U
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(23,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
b
|
||||
J
|
||||
J
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
J
|
||||
b
|
||||
J
|
||||
c
|
||||
d
|
||||
d
|
||||
c
|
||||
d
|
||||
c
|
||||
d
|
||||
K
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(24,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
b
|
||||
J
|
||||
J
|
||||
J
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
J
|
||||
b
|
||||
b
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(25,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
J
|
||||
J
|
||||
J
|
||||
b
|
||||
J
|
||||
b
|
||||
a
|
||||
"}
|
||||
(26,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
a
|
||||
"}
|
||||
(27,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
@@ -0,0 +1,545 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/turf/open/space/bluespace,
|
||||
/area/hilbertshotel)
|
||||
"b" = (
|
||||
/turf/closed/indestructible/hotelwall,
|
||||
/area/hilbertshotel)
|
||||
"c" = (
|
||||
/obj/machinery/jukebox{
|
||||
req_access = null
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"d" = (
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"e" = (
|
||||
/obj/structure/table/wood,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"f" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/structure/showcase/machinery/tv,
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"g" = (
|
||||
/obj/structure/dresser,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"h" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"i" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/structure/mirror{
|
||||
pixel_y = 24
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"j" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/flashlight/lamp/green,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"k" = (
|
||||
/obj/structure/chair/comfy/brown{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"l" = (
|
||||
/obj/structure/table/wood/poker,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"m" = (
|
||||
/obj/structure/chair/comfy/brown{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"n" = (
|
||||
/obj/effect/landmark/xmastree,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"o" = (
|
||||
/obj/structure/chair/comfy/brown{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"p" = (
|
||||
/obj/structure/mineral_door/wood,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"q" = (
|
||||
/obj/structure/bed,
|
||||
/obj/item/bedsheet/random,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"r" = (
|
||||
/obj/structure/closet/cabinet{
|
||||
anchored = 1
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"s" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/reagent_containers/food/snacks/grown/poppy,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"t" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"u" = (
|
||||
/obj/structure/mineral_door/paperframe,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"v" = (
|
||||
/obj/structure/extinguisher_cabinet{
|
||||
pixel_x = 32
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"w" = (
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"x" = (
|
||||
/obj/structure/curtain,
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"y" = (
|
||||
/obj/machinery/door/window/northleft,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"z" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"A" = (
|
||||
/obj/structure/mirror{
|
||||
pixel_x = -32
|
||||
},
|
||||
/obj/structure/sink{
|
||||
dir = 8;
|
||||
pixel_x = -12;
|
||||
pixel_y = 2
|
||||
},
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"B" = (
|
||||
/obj/structure/chair/stool/bar,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"C" = (
|
||||
/obj/machinery/shower{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"D" = (
|
||||
/obj/machinery/light_switch{
|
||||
pixel_x = 32
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"E" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/soap/deluxe,
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"F" = (
|
||||
/obj/structure/window/reinforced/tinted{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/window/reinforced/tinted{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"G" = (
|
||||
/obj/machinery/light_switch{
|
||||
pixel_x = -32
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"H" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/microwave,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"I" = (
|
||||
/turf/closed/indestructible/hoteldoor,
|
||||
/area/hilbertshotel)
|
||||
"J" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"K" = (
|
||||
/obj/structure/closet/crate/bin,
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"L" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"M" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"N" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/soap/deluxe,
|
||||
/obj/machinery/light/small{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"O" = (
|
||||
/obj/item/bikehorn/rubberducky,
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"P" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"Q" = (
|
||||
/obj/machinery/smartfridge/food,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"R" = (
|
||||
/obj/structure/toilet{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/window/reinforced/tinted{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/window/reinforced/tinted{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"S" = (
|
||||
/obj/structure/window/reinforced/tinted{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"T" = (
|
||||
/obj/structure/window/reinforced/tinted{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/window/reinforced/tinted,
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"U" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/structure/sink/kitchen,
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"V" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/effect/spawner/lootdrop/three_course_meal,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
|
||||
(1,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
I
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
a
|
||||
b
|
||||
d
|
||||
d
|
||||
k
|
||||
d
|
||||
d
|
||||
t
|
||||
d
|
||||
y
|
||||
t
|
||||
H
|
||||
z
|
||||
b
|
||||
a
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
a
|
||||
b
|
||||
e
|
||||
d
|
||||
l
|
||||
o
|
||||
d
|
||||
d
|
||||
B
|
||||
z
|
||||
d
|
||||
d
|
||||
z
|
||||
b
|
||||
a
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
a
|
||||
b
|
||||
f
|
||||
d
|
||||
l
|
||||
o
|
||||
d
|
||||
d
|
||||
B
|
||||
V
|
||||
d
|
||||
d
|
||||
U
|
||||
b
|
||||
a
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
a
|
||||
b
|
||||
e
|
||||
d
|
||||
l
|
||||
o
|
||||
d
|
||||
d
|
||||
B
|
||||
z
|
||||
d
|
||||
d
|
||||
z
|
||||
b
|
||||
a
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
a
|
||||
b
|
||||
c
|
||||
d
|
||||
m
|
||||
d
|
||||
D
|
||||
K
|
||||
v
|
||||
z
|
||||
M
|
||||
Q
|
||||
z
|
||||
b
|
||||
a
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
p
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
a
|
||||
b
|
||||
g
|
||||
d
|
||||
t
|
||||
d
|
||||
G
|
||||
u
|
||||
w
|
||||
A
|
||||
N
|
||||
A
|
||||
E
|
||||
b
|
||||
a
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
a
|
||||
b
|
||||
h
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
b
|
||||
w
|
||||
w
|
||||
w
|
||||
w
|
||||
w
|
||||
b
|
||||
a
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
a
|
||||
b
|
||||
i
|
||||
d
|
||||
n
|
||||
d
|
||||
J
|
||||
b
|
||||
L
|
||||
w
|
||||
R
|
||||
w
|
||||
P
|
||||
b
|
||||
a
|
||||
"}
|
||||
(12,1,1) = {"
|
||||
a
|
||||
b
|
||||
h
|
||||
d
|
||||
d
|
||||
d
|
||||
r
|
||||
b
|
||||
x
|
||||
F
|
||||
S
|
||||
T
|
||||
x
|
||||
b
|
||||
a
|
||||
"}
|
||||
(13,1,1) = {"
|
||||
a
|
||||
b
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
b
|
||||
w
|
||||
w
|
||||
w
|
||||
w
|
||||
w
|
||||
b
|
||||
a
|
||||
"}
|
||||
(14,1,1) = {"
|
||||
a
|
||||
b
|
||||
d
|
||||
j
|
||||
q
|
||||
q
|
||||
s
|
||||
b
|
||||
w
|
||||
C
|
||||
O
|
||||
C
|
||||
w
|
||||
b
|
||||
a
|
||||
"}
|
||||
(15,1,1) = {"
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(16,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
@@ -0,0 +1,289 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/turf/open/space/bluespace,
|
||||
/area/hilbertshotel)
|
||||
"b" = (
|
||||
/turf/closed/indestructible/hotelwall,
|
||||
/area/hilbertshotel)
|
||||
"c" = (
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"d" = (
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"e" = (
|
||||
/turf/closed/indestructible/hoteldoor,
|
||||
/area/hilbertshotel)
|
||||
|
||||
(1,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
e
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
a
|
||||
b
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
b
|
||||
a
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
a
|
||||
b
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
b
|
||||
a
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
a
|
||||
b
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
b
|
||||
a
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
a
|
||||
b
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
b
|
||||
a
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
a
|
||||
b
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
b
|
||||
a
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
c
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
a
|
||||
b
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
b
|
||||
a
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
a
|
||||
b
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
b
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
b
|
||||
a
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
a
|
||||
b
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
b
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
b
|
||||
a
|
||||
"}
|
||||
(12,1,1) = {"
|
||||
a
|
||||
b
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
b
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
b
|
||||
a
|
||||
"}
|
||||
(13,1,1) = {"
|
||||
a
|
||||
b
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
b
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
b
|
||||
a
|
||||
"}
|
||||
(14,1,1) = {"
|
||||
a
|
||||
b
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
b
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
b
|
||||
a
|
||||
"}
|
||||
(15,1,1) = {"
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(16,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
@@ -0,0 +1,639 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"aa" = (
|
||||
/turf/open/space/bluespace,
|
||||
/area/hilbertshotel)
|
||||
"ab" = (
|
||||
/turf/closed/indestructible/hotelwall,
|
||||
/area/hilbertshotel)
|
||||
"ac" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/structure/mirror{
|
||||
broken = 1;
|
||||
desc = "Oh no, seven years of bad luck!";
|
||||
icon_state = "mirror_broke";
|
||||
pixel_y = 24
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"ad" = (
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"ae" = (
|
||||
/obj/structure/table/wood,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"af" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/structure/showcase/machinery/tv,
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"ag" = (
|
||||
/obj/structure/dresser,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"ah" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"ai" = (
|
||||
/obj/structure/table/wood/poker,
|
||||
/obj/item/toy/cards/deck,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"aj" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/flashlight/lamp/green,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"ak" = (
|
||||
/obj/structure/chair/comfy/brown{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"al" = (
|
||||
/obj/structure/table/wood/poker,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"am" = (
|
||||
/obj/structure/chair/comfy/brown{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"an" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"ap" = (
|
||||
/obj/structure/bed,
|
||||
/obj/item/bedsheet/random,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"aq" = (
|
||||
/obj/structure/chair/comfy/brown{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"ar" = (
|
||||
/obj/structure/mineral_door/wood,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"as" = (
|
||||
/turf/closed/indestructible/hoteldoor,
|
||||
/area/hilbertshotel)
|
||||
"at" = (
|
||||
/obj/effect/decal/cleanable/cobweb,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"au" = (
|
||||
/obj/machinery/light_switch{
|
||||
pixel_x = -32
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"av" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"aw" = (
|
||||
/obj/structure/closet/cabinet{
|
||||
anchored = 1
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"ax" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/decal/cleanable/cobweb/cobweb2,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"ay" = (
|
||||
/obj/structure/closet/crate/bin,
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"az" = (
|
||||
/obj/structure/mineral_door/paperframe,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"aA" = (
|
||||
/obj/structure/chair/stool/bar,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"aB" = (
|
||||
/obj/structure/extinguisher_cabinet{
|
||||
pixel_x = 32
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"aC" = (
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"aD" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"aE" = (
|
||||
/obj/structure/curtain,
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"aF" = (
|
||||
/obj/machinery/door/window/northleft,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"aG" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"aH" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/pen,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"aI" = (
|
||||
/obj/structure/mirror{
|
||||
pixel_x = -32
|
||||
},
|
||||
/obj/structure/sink{
|
||||
dir = 8;
|
||||
pixel_x = -12;
|
||||
pixel_y = 2
|
||||
},
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"aJ" = (
|
||||
/obj/structure/window/reinforced/tinted{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/window/reinforced/tinted{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"aK" = (
|
||||
/obj/machinery/shower{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"aL" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"aM" = (
|
||||
/obj/structure/table/wood/poker,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"aN" = (
|
||||
/obj/structure/toilet{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/window/reinforced/tinted{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/window/reinforced/tinted{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"aO" = (
|
||||
/obj/structure/window/reinforced/tinted{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"aP" = (
|
||||
/obj/item/bikehorn/rubberducky,
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"aQ" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/microwave,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"aR" = (
|
||||
/obj/machinery/smartfridge/food,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"aS" = (
|
||||
/obj/structure/window/reinforced/tinted{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/window/reinforced/tinted,
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"aT" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/structure/sink/kitchen,
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"aU" = (
|
||||
/obj/structure/bed,
|
||||
/obj/item/bedsheet/random,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"aV" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"aW" = (
|
||||
/obj/machinery/jukebox{
|
||||
req_access = null
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"aX" = (
|
||||
/obj/machinery/light_switch{
|
||||
pixel_x = 32
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"aY" = (
|
||||
/obj/structure/chair/stool/bar,
|
||||
/obj/effect/decal/cleanable/blood,
|
||||
/obj/effect/decal/cleanable/vomit,
|
||||
/obj/effect/mob_spawn/human/doctorhilbert,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"aZ" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"ba" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/decal/cleanable/cobweb/cobweb2,
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"bb" = (
|
||||
/obj/structure/mirror{
|
||||
pixel_x = -32
|
||||
},
|
||||
/obj/structure/sink{
|
||||
dir = 8;
|
||||
pixel_x = -12;
|
||||
pixel_y = 2
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"bc" = (
|
||||
/obj/effect/decal/cleanable/blood,
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"bd" = (
|
||||
/obj/machinery/shower{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"be" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"bf" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"bg" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"bh" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/light/small{
|
||||
dir = 8
|
||||
},
|
||||
/obj/item/soap/homemade{
|
||||
name = "used soap"
|
||||
},
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"bi" = (
|
||||
/obj/effect/decal/cleanable/vomit,
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"bj" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/soap/homemade{
|
||||
name = "used soap"
|
||||
},
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"bk" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/analyzer/hilbertsanalyzer,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"bl" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/paper/crumpled/bloody/docsdeathnote,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
|
||||
(1,1,1) = {"
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
aa
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
as
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
aa
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
aa
|
||||
ab
|
||||
at
|
||||
aL
|
||||
ak
|
||||
ad
|
||||
aL
|
||||
an
|
||||
ad
|
||||
aF
|
||||
be
|
||||
aQ
|
||||
aG
|
||||
ab
|
||||
aa
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
aa
|
||||
ab
|
||||
ae
|
||||
ad
|
||||
al
|
||||
aq
|
||||
ad
|
||||
ad
|
||||
aA
|
||||
aH
|
||||
ad
|
||||
aL
|
||||
aG
|
||||
ab
|
||||
aa
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
aa
|
||||
ab
|
||||
af
|
||||
ad
|
||||
ai
|
||||
aq
|
||||
aL
|
||||
ad
|
||||
aY
|
||||
bl
|
||||
ad
|
||||
aL
|
||||
aT
|
||||
ab
|
||||
aa
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
aa
|
||||
ab
|
||||
ae
|
||||
ad
|
||||
aM
|
||||
aq
|
||||
ad
|
||||
ad
|
||||
aA
|
||||
bk
|
||||
bf
|
||||
bf
|
||||
aG
|
||||
ab
|
||||
aa
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
aa
|
||||
ab
|
||||
aW
|
||||
aL
|
||||
am
|
||||
ad
|
||||
aX
|
||||
ay
|
||||
aB
|
||||
aG
|
||||
bg
|
||||
aR
|
||||
aG
|
||||
ab
|
||||
aa
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
aa
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ar
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
aa
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
aa
|
||||
ab
|
||||
ag
|
||||
ad
|
||||
an
|
||||
ad
|
||||
au
|
||||
az
|
||||
aC
|
||||
bb
|
||||
bh
|
||||
aI
|
||||
bj
|
||||
ab
|
||||
aa
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
aa
|
||||
ab
|
||||
ah
|
||||
ad
|
||||
aL
|
||||
aL
|
||||
ad
|
||||
ab
|
||||
aZ
|
||||
aZ
|
||||
aC
|
||||
aZ
|
||||
aZ
|
||||
ab
|
||||
aa
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
aa
|
||||
ab
|
||||
ac
|
||||
ad
|
||||
ad
|
||||
aL
|
||||
av
|
||||
ab
|
||||
aD
|
||||
aC
|
||||
aN
|
||||
bi
|
||||
aV
|
||||
ab
|
||||
aa
|
||||
"}
|
||||
(12,1,1) = {"
|
||||
aa
|
||||
ab
|
||||
ah
|
||||
ad
|
||||
aL
|
||||
ad
|
||||
aw
|
||||
ab
|
||||
aE
|
||||
aJ
|
||||
aO
|
||||
aS
|
||||
aE
|
||||
ab
|
||||
aa
|
||||
"}
|
||||
(13,1,1) = {"
|
||||
aa
|
||||
ab
|
||||
ad
|
||||
ad
|
||||
aL
|
||||
ad
|
||||
ad
|
||||
ab
|
||||
aC
|
||||
bc
|
||||
aZ
|
||||
aZ
|
||||
aC
|
||||
ab
|
||||
aa
|
||||
"}
|
||||
(14,1,1) = {"
|
||||
aa
|
||||
ab
|
||||
ax
|
||||
aj
|
||||
ap
|
||||
aU
|
||||
ah
|
||||
ab
|
||||
ba
|
||||
bd
|
||||
aP
|
||||
aK
|
||||
aC
|
||||
ab
|
||||
aa
|
||||
"}
|
||||
(15,1,1) = {"
|
||||
aa
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
aa
|
||||
"}
|
||||
(16,1,1) = {"
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
"}
|
||||
@@ -0,0 +1,23 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/turf/closed/indestructible/hotelwall,
|
||||
/area/hilbertshotelstorage)
|
||||
"b" = (
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotelstorage)
|
||||
|
||||
(1,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
a
|
||||
b
|
||||
a
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
@@ -0,0 +1,970 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/turf/open/space/basic,
|
||||
/area/template_noop)
|
||||
"b" = (
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"c" = (
|
||||
/turf/closed/wall/r_wall/rust,
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"d" = (
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"e" = (
|
||||
/obj/machinery/porta_turret/syndicate{
|
||||
desc = "A ballistic machine gun auto-turret that fires bluespace bullets.";
|
||||
lethal_projectile = /obj/item/projectile/magic/teleport;
|
||||
name = "displacement turret";
|
||||
stun_projectile = /obj/item/projectile/magic/teleport
|
||||
},
|
||||
/turf/open/floor/plasteel/grimy{
|
||||
icon_state = "engine"
|
||||
},
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"f" = (
|
||||
/turf/open/floor/plasteel/grimy{
|
||||
icon_state = "engine"
|
||||
},
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"g" = (
|
||||
/obj/structure/table/glass,
|
||||
/turf/open/floor/plasteel/grimy{
|
||||
icon_state = "engine"
|
||||
},
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"h" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/stack/sheet/bluespace_crystal{
|
||||
amount = 37
|
||||
},
|
||||
/turf/open/floor/plasteel/grimy{
|
||||
icon_state = "engine"
|
||||
},
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"i" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/bodybag/bluespace,
|
||||
/turf/open/floor/plasteel/grimy{
|
||||
icon_state = "engine"
|
||||
},
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"j" = (
|
||||
/turf/open/floor/plasteel/stairs/left,
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"k" = (
|
||||
/turf/open/floor/plasteel/stairs/medium,
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"l" = (
|
||||
/turf/open/floor/plasteel/stairs/right,
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"m" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/reagent_containers/syringe/bluespace,
|
||||
/turf/open/floor/plasteel/grimy{
|
||||
icon_state = "engine"
|
||||
},
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"n" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/stock_parts/matter_bin/bluespace,
|
||||
/turf/open/floor/plasteel/grimy{
|
||||
icon_state = "engine"
|
||||
},
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"o" = (
|
||||
/turf/open/floor/plasteel/vaporwave,
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"p" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/stack/cable_coil/blue,
|
||||
/turf/open/floor/plasteel/grimy{
|
||||
icon_state = "engine"
|
||||
},
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"q" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/storage/backpack/holding,
|
||||
/turf/open/floor/plasteel/grimy{
|
||||
icon_state = "engine"
|
||||
},
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"r" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/reagent_containers/glass/beaker/bluespace,
|
||||
/turf/open/floor/plasteel/grimy{
|
||||
icon_state = "engine"
|
||||
},
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"s" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/stock_parts/subspace/crystal,
|
||||
/obj/item/stock_parts/subspace/transmitter,
|
||||
/turf/open/floor/plasteel/grimy{
|
||||
icon_state = "engine"
|
||||
},
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"t" = (
|
||||
/obj/structure/displaycase{
|
||||
start_showpiece_type = /obj/item/hilbertshotel
|
||||
},
|
||||
/turf/open/floor/plasteel/vaporwave,
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"u" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/analyzer,
|
||||
/turf/open/floor/plasteel/grimy{
|
||||
icon_state = "engine"
|
||||
},
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"v" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/stock_parts/subspace/amplifier,
|
||||
/turf/open/floor/plasteel/grimy{
|
||||
icon_state = "engine"
|
||||
},
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"w" = (
|
||||
/obj/item/paper/crumpled/docslogs,
|
||||
/obj/item/pen,
|
||||
/turf/open/floor/plasteel/vaporwave,
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"x" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/assembly/signaler,
|
||||
/turf/open/floor/plasteel/grimy{
|
||||
icon_state = "engine"
|
||||
},
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"y" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/slimecross/industrial/bluespace,
|
||||
/turf/open/floor/plasteel/grimy{
|
||||
icon_state = "engine"
|
||||
},
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"z" = (
|
||||
/obj/machinery/door/airlock/vault{
|
||||
name = "secured door";
|
||||
req_access = 207
|
||||
},
|
||||
/obj/effect/mapping_helpers/airlock/locked,
|
||||
/turf/open/floor/plasteel/grimy{
|
||||
icon_state = "engine"
|
||||
},
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"A" = (
|
||||
/obj/structure/filingcabinet,
|
||||
/turf/open/floor/plasteel/grimy,
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"B" = (
|
||||
/turf/open/floor/plasteel/grimy,
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"C" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/turf/open/floor/plasteel/grimy,
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"D" = (
|
||||
/obj/item/twohanded/required/kirbyplants/random,
|
||||
/turf/open/floor/plasteel/grimy,
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"E" = (
|
||||
/obj/structure/chair/office,
|
||||
/turf/open/floor/plasteel/grimy,
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"F" = (
|
||||
/obj/machinery/door/window/eastleft,
|
||||
/turf/open/floor/plasteel/grimy,
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"G" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/pen,
|
||||
/turf/open/floor/plasteel/grimy,
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"H" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/paper/crumpled/robertsworkjournal,
|
||||
/turf/open/floor/plasteel/grimy,
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"I" = (
|
||||
/obj/machinery/door/airlock/highsecurity{
|
||||
req_access = 207
|
||||
},
|
||||
/obj/effect/mapping_helpers/airlock/locked,
|
||||
/turf/open/floor/plasteel/grimy,
|
||||
/area/ruin/space/has_grav/hilbertresearchfacility)
|
||||
"J" = (
|
||||
/turf/closed/mineral/random,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"K" = (
|
||||
/turf/open/floor/plasteel/stairs/right{
|
||||
initial_gas_mix = "TEMP=2.7"
|
||||
},
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"U" = (
|
||||
/turf/open/floor/plasteel/stairs/medium{
|
||||
initial_gas_mix = "TEMP=2.7"
|
||||
},
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"X" = (
|
||||
/turf/open/floor/plasteel/stairs/left{
|
||||
initial_gas_mix = "TEMP=2.7"
|
||||
},
|
||||
/area/ruin/unpowered/no_grav)
|
||||
|
||||
(1,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
J
|
||||
J
|
||||
J
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
J
|
||||
b
|
||||
J
|
||||
b
|
||||
b
|
||||
a
|
||||
b
|
||||
J
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
a
|
||||
a
|
||||
b
|
||||
J
|
||||
J
|
||||
J
|
||||
b
|
||||
J
|
||||
b
|
||||
J
|
||||
b
|
||||
b
|
||||
J
|
||||
J
|
||||
J
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
a
|
||||
a
|
||||
b
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
d
|
||||
d
|
||||
c
|
||||
d
|
||||
d
|
||||
c
|
||||
d
|
||||
d
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
a
|
||||
a
|
||||
b
|
||||
d
|
||||
e
|
||||
f
|
||||
f
|
||||
m
|
||||
r
|
||||
g
|
||||
g
|
||||
f
|
||||
f
|
||||
f
|
||||
e
|
||||
c
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
a
|
||||
a
|
||||
b
|
||||
d
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
d
|
||||
J
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
a
|
||||
a
|
||||
J
|
||||
d
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
c
|
||||
J
|
||||
b
|
||||
b
|
||||
J
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
a
|
||||
a
|
||||
J
|
||||
c
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
c
|
||||
J
|
||||
b
|
||||
J
|
||||
b
|
||||
b
|
||||
J
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
a
|
||||
a
|
||||
J
|
||||
c
|
||||
g
|
||||
f
|
||||
f
|
||||
n
|
||||
s
|
||||
v
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
c
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(12,1,1) = {"
|
||||
a
|
||||
a
|
||||
J
|
||||
c
|
||||
g
|
||||
f
|
||||
j
|
||||
o
|
||||
o
|
||||
o
|
||||
j
|
||||
f
|
||||
f
|
||||
f
|
||||
c
|
||||
d
|
||||
d
|
||||
c
|
||||
c
|
||||
d
|
||||
c
|
||||
J
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(13,1,1) = {"
|
||||
a
|
||||
a
|
||||
J
|
||||
c
|
||||
h
|
||||
f
|
||||
k
|
||||
o
|
||||
t
|
||||
o
|
||||
k
|
||||
f
|
||||
f
|
||||
f
|
||||
c
|
||||
A
|
||||
B
|
||||
C
|
||||
B
|
||||
D
|
||||
c
|
||||
J
|
||||
J
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(14,1,1) = {"
|
||||
a
|
||||
a
|
||||
J
|
||||
c
|
||||
g
|
||||
f
|
||||
l
|
||||
o
|
||||
o
|
||||
w
|
||||
l
|
||||
f
|
||||
f
|
||||
f
|
||||
d
|
||||
B
|
||||
B
|
||||
G
|
||||
B
|
||||
B
|
||||
c
|
||||
J
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
"}
|
||||
(15,1,1) = {"
|
||||
a
|
||||
a
|
||||
J
|
||||
c
|
||||
i
|
||||
f
|
||||
f
|
||||
p
|
||||
u
|
||||
x
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
d
|
||||
B
|
||||
E
|
||||
H
|
||||
B
|
||||
B
|
||||
c
|
||||
J
|
||||
J
|
||||
J
|
||||
a
|
||||
a
|
||||
"}
|
||||
(16,1,1) = {"
|
||||
a
|
||||
b
|
||||
J
|
||||
c
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
c
|
||||
B
|
||||
B
|
||||
C
|
||||
B
|
||||
B
|
||||
c
|
||||
b
|
||||
J
|
||||
b
|
||||
a
|
||||
a
|
||||
"}
|
||||
(17,1,1) = {"
|
||||
a
|
||||
b
|
||||
J
|
||||
d
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
c
|
||||
C
|
||||
F
|
||||
C
|
||||
B
|
||||
B
|
||||
c
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
"}
|
||||
(18,1,1) = {"
|
||||
a
|
||||
b
|
||||
J
|
||||
d
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
d
|
||||
B
|
||||
B
|
||||
B
|
||||
B
|
||||
B
|
||||
d
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(19,1,1) = {"
|
||||
a
|
||||
b
|
||||
J
|
||||
d
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
z
|
||||
B
|
||||
B
|
||||
B
|
||||
B
|
||||
B
|
||||
d
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(20,1,1) = {"
|
||||
a
|
||||
a
|
||||
b
|
||||
c
|
||||
e
|
||||
f
|
||||
g
|
||||
q
|
||||
g
|
||||
y
|
||||
g
|
||||
f
|
||||
e
|
||||
f
|
||||
c
|
||||
B
|
||||
B
|
||||
B
|
||||
B
|
||||
B
|
||||
d
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(21,1,1) = {"
|
||||
a
|
||||
a
|
||||
b
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
d
|
||||
d
|
||||
c
|
||||
c
|
||||
c
|
||||
d
|
||||
B
|
||||
B
|
||||
B
|
||||
B
|
||||
B
|
||||
d
|
||||
X
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(22,1,1) = {"
|
||||
a
|
||||
a
|
||||
b
|
||||
b
|
||||
J
|
||||
J
|
||||
b
|
||||
b
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
d
|
||||
D
|
||||
B
|
||||
B
|
||||
B
|
||||
B
|
||||
I
|
||||
U
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(23,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
b
|
||||
J
|
||||
J
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
J
|
||||
b
|
||||
J
|
||||
c
|
||||
d
|
||||
d
|
||||
c
|
||||
d
|
||||
c
|
||||
d
|
||||
K
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(24,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
b
|
||||
J
|
||||
J
|
||||
J
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
J
|
||||
b
|
||||
b
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(25,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
J
|
||||
J
|
||||
J
|
||||
b
|
||||
J
|
||||
b
|
||||
a
|
||||
"}
|
||||
(26,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
a
|
||||
"}
|
||||
(27,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
@@ -550,8 +550,8 @@
|
||||
"akD" = (/obj/structure/cable{icon_state = "0-8"},/obj/structure/cable{icon_state = "0-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/plating,/area/security/brig)
|
||||
"akE" = (/obj/machinery/door/airlock/security/glass{name = "Brig Desk"; req_access_txt = "1"},/obj/structure/cable{icon_state = "4-8"},/obj/structure/cable{icon_state = "2-8"},/turf/open/floor/plasteel/dark,/area/security/brig)
|
||||
"akF" = (/obj/structure/cable{icon_state = "0-8"},/obj/structure/cable{icon_state = "0-4"},/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/plating,/area/security/brig)
|
||||
"akG" = (/obj/effect/mapping_helpers/airlock/cyclelink_helper,/obj/machinery/door/airlock/security/glass{id_tag = "innerbrig"; name = "Brig"; req_access_txt = "63"},/obj/structure/cable{icon_state = "4-8"},/obj/effect/turf_decal/tile/red{dir = 1},/obj/effect/turf_decal/tile/red{dir = 4},/obj/effect/turf_decal/tile/red{dir = 8},/turf/open/floor/plasteel,/area/security/brig)
|
||||
"akH" = (/obj/effect/mapping_helpers/airlock/cyclelink_helper,/obj/machinery/door/airlock/security/glass{id_tag = "innerbrig"; name = "Brig"; req_access_txt = "63"},/obj/structure/cable{icon_state = "4-8"},/obj/effect/turf_decal/tile/red{dir = 1},/obj/effect/turf_decal/tile/red,/obj/effect/turf_decal/tile/red{dir = 4},/turf/open/floor/plasteel,/area/security/brig)
|
||||
"akG" = (/obj/effect/mapping_helpers/airlock/cyclelink_helper,/obj/machinery/door/airlock/security/glass{bound_width = 64; doorOpen = 'sound/machines/bigairlockopen.ogg'; icon = 'icons/obj/doors/airlocks/station/securitydouble.dmi'; id_tag = "innerbrig"; name = "Brig"; note_overlay_file = 'icons/obj/doors/airlocks/station/overlaysdouble.dmi'; overlays_file = 'icons/obj/doors/airlocks/station/overlaysdouble.dmi'; req_access_txt = "63"},/obj/structure/cable{icon_state = "4-8"},/obj/effect/turf_decal/tile/red{dir = 1},/obj/effect/turf_decal/tile/red{dir = 4},/obj/effect/turf_decal/tile/red{dir = 8},/turf/open/floor/plasteel,/area/security/brig)
|
||||
"akH" = (/obj/effect/mapping_helpers/airlock/cyclelink_helper,/obj/structure/cable{icon_state = "4-8"},/obj/effect/turf_decal/tile/red{dir = 1},/obj/effect/turf_decal/tile/red,/obj/effect/turf_decal/tile/red{dir = 4},/turf/open/floor/plasteel,/area/security/brig)
|
||||
"akI" = (/obj/structure/cable{icon_state = "4-8"},/obj/structure/cable{icon_state = "1-8"},/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/plating,/area/security/brig)
|
||||
"akJ" = (/obj/machinery/door/window/brigdoor/security/cell{id = "Cell 4"; name = "Cell 4"},/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/effect/turf_decal/tile/red,/obj/effect/turf_decal/tile/red{dir = 8},/turf/open/floor/plasteel,/area/security/brig)
|
||||
"akK" = (/obj/structure/cable{icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/plating,/area/security/brig)
|
||||
@@ -647,8 +647,8 @@
|
||||
"amw" = (/obj/structure/table/reinforced,/obj/machinery/door/poddoor/shutters/preopen{id = "briggate"; name = "security shutters"},/obj/machinery/door/window/southleft{name = "Brig Desk"; req_access_txt = "1"},/obj/structure/cable{icon_state = "4-8"},/obj/structure/cable{icon_state = "1-8"},/turf/open/floor/plasteel/dark,/area/security/brig)
|
||||
"amx" = (/obj/structure/table/reinforced,/obj/machinery/door/poddoor/shutters/preopen{id = "briggate"; name = "security shutters"},/obj/machinery/door/window/southleft{base_state = "right"; icon_state = "right"; name = "Brig Desk"; req_access_txt = "1"},/obj/structure/cable{icon_state = "4-8"},/turf/open/floor/plasteel/dark,/area/security/brig)
|
||||
"amy" = (/obj/machinery/door/poddoor/preopen{id = "briggate"; name = "security blast door"},/obj/structure/cable{icon_state = "0-8"},/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/plating,/area/security/brig)
|
||||
"amz" = (/obj/machinery/door/firedoor,/obj/effect/mapping_helpers/airlock/cyclelink_helper{dir = 1},/obj/machinery/door/airlock/security/glass{id_tag = "outerbrig"; name = "Brig"; req_access_txt = "63"},/obj/effect/turf_decal/tile/red{dir = 1},/obj/effect/turf_decal/tile/red{dir = 4},/obj/effect/turf_decal/tile/red{dir = 8},/turf/open/floor/plasteel,/area/security/brig)
|
||||
"amA" = (/obj/machinery/door/firedoor,/obj/effect/mapping_helpers/airlock/cyclelink_helper{dir = 1},/obj/machinery/door/airlock/security/glass{id_tag = "outerbrig"; name = "Brig"; req_access_txt = "63"},/obj/effect/turf_decal/tile/red{dir = 1},/obj/effect/turf_decal/tile/red,/obj/effect/turf_decal/tile/red{dir = 4},/turf/open/floor/plasteel,/area/security/brig)
|
||||
"amz" = (/obj/machinery/door/firedoor,/obj/effect/mapping_helpers/airlock/cyclelink_helper{dir = 1},/obj/machinery/door/airlock/security/glass{bound_width = 64; doorOpen = 'sound/machines/bigairlockopen.ogg'; icon = 'icons/obj/doors/airlocks/station/securitydouble.dmi'; id_tag = "outerbrig"; name = "Brig"; note_overlay_file = 'icons/obj/doors/airlocks/station/overlaysdouble.dmi'; overlays_file = 'icons/obj/doors/airlocks/station/overlaysdouble.dmi'; req_access_txt = "63"},/obj/effect/turf_decal/tile/red{dir = 1},/obj/effect/turf_decal/tile/red{dir = 4},/obj/effect/turf_decal/tile/red{dir = 8},/turf/open/floor/plasteel,/area/security/brig)
|
||||
"amA" = (/obj/machinery/door/firedoor,/obj/effect/mapping_helpers/airlock/cyclelink_helper{dir = 1},/obj/effect/turf_decal/tile/red{dir = 1},/obj/effect/turf_decal/tile/red,/obj/effect/turf_decal/tile/red{dir = 4},/turf/open/floor/plasteel,/area/security/brig)
|
||||
"amB" = (/obj/structure/chair{dir = 1},/turf/open/floor/plasteel/dark,/area/security/courtroom)
|
||||
"amC" = (/obj/structure/chair{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plasteel/dark,/area/security/courtroom)
|
||||
"amD" = (/obj/structure/chair{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plasteel/dark,/area/security/courtroom)
|
||||
@@ -908,11 +908,11 @@
|
||||
"arx" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/closed/wall,/area/crew_quarters/dorms)
|
||||
"ary" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/obj/effect/turf_decal/tile/neutral{dir = 1},/obj/effect/turf_decal/tile/neutral{dir = 4},/obj/effect/turf_decal/tile/neutral{dir = 8},/turf/open/floor/plasteel,/area/crew_quarters/dorms)
|
||||
"arz" = (/obj/machinery/airalarm{pixel_y = 23},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/effect/turf_decal/tile/neutral{dir = 1},/obj/effect/turf_decal/tile/neutral,/obj/effect/turf_decal/tile/neutral{dir = 4},/turf/open/floor/plasteel,/area/crew_quarters/dorms)
|
||||
"arA" = (/obj/structure/chair/stool{pixel_y = 8},/obj/effect/decal/cleanable/semen,/turf/open/floor/wood,/area/crew_quarters/dorms)
|
||||
"arB" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/components/unary/vent_pump/on,/turf/open/floor/wood,/area/crew_quarters/dorms)
|
||||
"arC" = (/obj/machinery/airalarm{pixel_y = 23},/obj/structure/closet/secure_closet/personal/cabinet,/obj/effect/decal/cleanable/cobweb/cobweb2,/turf/open/floor/wood,/area/crew_quarters/dorms)
|
||||
"arD" = (/obj/structure/dresser,/turf/open/floor/wood,/area/crew_quarters/dorms)
|
||||
"arE" = (/obj/machinery/airalarm{pixel_y = 23},/obj/structure/closet/secure_closet/personal/cabinet,/turf/open/floor/wood,/area/crew_quarters/dorms)
|
||||
"arA" = (/obj/structure/chair/stool{pixel_y = 8},/obj/effect/decal/cleanable/semen,/turf/open/floor/carpet,/area/crew_quarters/dorms)
|
||||
"arB" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/components/unary/vent_pump/on,/turf/open/floor/carpet,/area/crew_quarters/dorms)
|
||||
"arC" = (/obj/machinery/airalarm{pixel_y = 23},/obj/structure/closet/secure_closet/personal/cabinet,/obj/effect/decal/cleanable/cobweb/cobweb2,/turf/open/floor/carpet,/area/crew_quarters/dorms)
|
||||
"arD" = (/obj/structure/dresser,/turf/open/floor/carpet,/area/crew_quarters/dorms)
|
||||
"arE" = (/obj/machinery/airalarm{pixel_y = 23},/obj/structure/closet/secure_closet/personal/cabinet,/turf/open/floor/carpet,/area/crew_quarters/dorms)
|
||||
"arF" = (/obj/structure/disposalpipe/junction/flip{dir = 2},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{icon_state = "1-2"},/obj/effect/turf_decal/tile/neutral{dir = 1},/obj/effect/turf_decal/tile/neutral{dir = 4},/obj/effect/turf_decal/tile/neutral{dir = 8},/turf/open/floor/plasteel,/area/crew_quarters/fitness)
|
||||
"arG" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/disposal/bin,/obj/effect/turf_decal/tile/neutral{dir = 1},/obj/effect/turf_decal/tile/neutral{dir = 4},/turf/open/floor/plasteel,/area/crew_quarters/fitness)
|
||||
"arH" = (/obj/structure/closet/athletic_mixed,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/effect/turf_decal/tile/neutral{dir = 1},/obj/effect/turf_decal/tile/neutral{dir = 4},/turf/open/floor/plasteel,/area/crew_quarters/fitness)
|
||||
@@ -959,12 +959,12 @@
|
||||
"asw" = (/obj/machinery/door/airlock{dir = 4; id_tag = "Dorm4"; name = "Dorm 4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plasteel,/area/crew_quarters/dorms)
|
||||
"asx" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/effect/turf_decal/tile/neutral{dir = 1},/obj/effect/turf_decal/tile/neutral{dir = 8},/turf/open/floor/plasteel,/area/crew_quarters/dorms)
|
||||
"asy" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4},/obj/effect/turf_decal/tile/neutral,/obj/effect/turf_decal/tile/neutral{dir = 4},/turf/open/floor/plasteel,/area/crew_quarters/dorms)
|
||||
"asz" = (/obj/structure/table/wood,/turf/open/floor/wood,/area/crew_quarters/dorms)
|
||||
"asA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/wood,/area/crew_quarters/dorms)
|
||||
"asB" = (/obj/structure/bed,/obj/machinery/button/door{id = "Dorm5"; name = "Cabin Bolt Control"; normaldoorcontrol = 1; pixel_y = -25; specialfunctions = 4},/obj/machinery/atmospherics/components/unary/vent_scrubber/on,/obj/effect/spawner/lootdrop/bedsheet,/turf/open/floor/wood,/area/crew_quarters/dorms)
|
||||
"asC" = (/turf/open/floor/wood,/area/crew_quarters/dorms)
|
||||
"asD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/effect/landmark/event_spawn,/turf/open/floor/wood,/area/crew_quarters/dorms)
|
||||
"asE" = (/obj/structure/bed,/obj/machinery/button/door{id = "Dorm6"; name = "Cabin Bolt Control"; normaldoorcontrol = 1; pixel_y = -25; specialfunctions = 4},/obj/machinery/atmospherics/components/unary/vent_scrubber/on,/obj/effect/spawner/lootdrop/bedsheet,/turf/open/floor/wood,/area/crew_quarters/dorms)
|
||||
"asz" = (/obj/structure/table/wood,/turf/open/floor/carpet,/area/crew_quarters/dorms)
|
||||
"asA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/carpet,/area/crew_quarters/dorms)
|
||||
"asB" = (/obj/structure/bed,/obj/machinery/button/door{id = "Dorm5"; name = "Cabin Bolt Control"; normaldoorcontrol = 1; pixel_y = -25; specialfunctions = 4},/obj/machinery/atmospherics/components/unary/vent_scrubber/on,/obj/effect/spawner/lootdrop/bedsheet,/turf/open/floor/carpet,/area/crew_quarters/dorms)
|
||||
"asC" = (/turf/open/floor/carpet,/area/crew_quarters/dorms)
|
||||
"asD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/effect/landmark/event_spawn,/turf/open/floor/carpet,/area/crew_quarters/dorms)
|
||||
"asE" = (/obj/structure/bed,/obj/machinery/button/door{id = "Dorm6"; name = "Cabin Bolt Control"; normaldoorcontrol = 1; pixel_y = -25; specialfunctions = 4},/obj/machinery/atmospherics/components/unary/vent_scrubber/on,/obj/effect/spawner/lootdrop/bedsheet,/turf/open/floor/carpet,/area/crew_quarters/dorms)
|
||||
"asF" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8},/obj/structure/cable{icon_state = "1-4"},/obj/effect/turf_decal/tile/neutral{dir = 1},/obj/effect/turf_decal/tile/neutral{dir = 8},/turf/open/floor/plasteel,/area/crew_quarters/fitness)
|
||||
"asG" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 1},/obj/structure/cable{icon_state = "2-8"},/turf/open/floor/plasteel,/area/crew_quarters/fitness)
|
||||
"asH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plasteel,/area/crew_quarters/fitness)
|
||||
@@ -1883,7 +1883,7 @@
|
||||
"aKk" = (/obj/effect/turf_decal/tile/red,/obj/effect/turf_decal/tile/blue{dir = 8},/obj/structure/cable{icon_state = "1-2"},/obj/machinery/vending/autodrobe,/turf/open/floor/plasteel,/area/crew_quarters/theatre)
|
||||
"aKl" = (/obj/effect/turf_decal/loading_area{name = "steel pannel"; icon_state = "steel_panel"; dir = 10},/turf/open/floor/plasteel,/area/hallway/primary/central)
|
||||
"aKm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/effect/turf_decal/bot{dir = 2},/obj/structure/cable{icon_state = "1-2"},/turf/closed/wall,/area/maintenance/starboard/fore)
|
||||
"aKn" = (/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/carpet,/area/crew_quarters/bar)
|
||||
"aKn" = (/obj/structure/table/reinforced,/obj/item/storage/secure/briefcase,/obj/item/storage/box/PDAs{pixel_x = 4; pixel_y = 4},/obj/item/storage/box/ids,/turf/open/floor/plasteel,/area/bridge)
|
||||
"aKo" = (/obj/machinery/light{dir = 1; pixel_y = 16},/turf/open/floor/wood,/area/crew_quarters/bar)
|
||||
"aKp" = (/obj/machinery/light/small{dir = 8},/obj/structure/dresser,/obj/effect/turf_decal/tile/red,/obj/effect/turf_decal/tile/blue{dir = 8},/obj/machinery/airalarm{dir = 4; pixel_x = -22},/turf/open/floor/plasteel,/area/crew_quarters/theatre)
|
||||
"aKq" = (/obj/machinery/atmospherics/components/unary/vent_scrubber/on{dir = 1},/turf/open/floor/wood,/area/crew_quarters/bar)
|
||||
@@ -2229,17 +2229,17 @@
|
||||
"aQS" = (/obj/structure/cable{icon_state = "1-2"},/obj/effect/spawner/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plating,/area/storage/tools)
|
||||
"aQT" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/public/glass{name = "Auxiliary Tool Storage"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plasteel,/area/storage/tools)
|
||||
"aQU" = (/obj/machinery/light{dir = 8},/obj/effect/turf_decal/loading_area{dir = 8; icon_state = "drain"; name = "drain"},/turf/open/floor/plasteel,/area/hallway/primary/central)
|
||||
"aQV" = (/obj/structure/table/reinforced,/obj/item/storage/secure/briefcase,/obj/item/storage/box/PDAs{pixel_x = 4; pixel_y = 4},/obj/item/storage/box/ids,/turf/open/floor/plasteel,/area/bridge)
|
||||
"aQW" = (/obj/machinery/computer/atmos_alert,/obj/effect/turf_decal/tile/yellow{dir = 1},/obj/effect/turf_decal/tile/yellow,/obj/effect/turf_decal/tile/yellow{dir = 8},/turf/open/floor/plasteel,/area/bridge)
|
||||
"aQX" = (/obj/machinery/computer/station_alert,/obj/effect/turf_decal/tile/yellow,/obj/effect/turf_decal/tile/yellow{dir = 8},/turf/open/floor/plasteel,/area/bridge)
|
||||
"aQY" = (/obj/machinery/computer/monitor{name = "bridge power monitoring console"},/obj/structure/cable{icon_state = "0-2"},/obj/effect/turf_decal/tile/yellow,/obj/effect/turf_decal/tile/yellow{dir = 4},/obj/effect/turf_decal/tile/yellow{dir = 8},/turf/open/floor/plasteel,/area/bridge)
|
||||
"aQZ" = (/obj/machinery/computer/shuttle/labor,/obj/effect/turf_decal/tile/blue{dir = 1},/obj/effect/turf_decal/tile/blue,/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel,/area/bridge)
|
||||
"aRa" = (/obj/machinery/computer/communications,/obj/effect/turf_decal/tile/blue,/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel,/area/bridge)
|
||||
"aRb" = (/obj/structure/cable{icon_state = "1-2"},/obj/machinery/computer/shuttle/mining,/obj/effect/turf_decal/tile/blue,/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel,/area/bridge)
|
||||
"aRc" = (/obj/machinery/modular_computer/console/preset/command,/obj/effect/turf_decal/tile/green{dir = 1},/obj/effect/turf_decal/tile/green,/obj/effect/turf_decal/tile/green{dir = 8},/turf/open/floor/plasteel,/area/bridge)
|
||||
"aRd" = (/obj/machinery/computer/crew,/obj/effect/turf_decal/tile/green,/obj/effect/turf_decal/tile/green{dir = 8},/turf/open/floor/plasteel,/area/bridge)
|
||||
"aRe" = (/obj/machinery/computer/med_data,/obj/effect/turf_decal/tile/green,/obj/effect/turf_decal/tile/green{dir = 4},/obj/effect/turf_decal/tile/green{dir = 8},/turf/open/floor/plasteel,/area/bridge)
|
||||
"aRf" = (/obj/structure/table/reinforced,/obj/item/storage/toolbox/emergency,/obj/item/wrench,/obj/item/assembly/timer,/obj/item/assembly/signaler,/obj/item/assembly/signaler,/turf/open/floor/plasteel,/area/bridge)
|
||||
"aQV" = (/obj/machinery/computer/atmos_alert,/obj/effect/turf_decal/tile/yellow{dir = 1},/obj/effect/turf_decal/tile/yellow,/obj/effect/turf_decal/tile/yellow{dir = 8},/turf/open/floor/plasteel,/area/bridge)
|
||||
"aQW" = (/obj/machinery/computer/station_alert,/obj/effect/turf_decal/tile/yellow,/obj/effect/turf_decal/tile/yellow{dir = 8},/turf/open/floor/plasteel,/area/bridge)
|
||||
"aQX" = (/obj/machinery/computer/monitor{name = "bridge power monitoring console"},/obj/structure/cable{icon_state = "0-2"},/obj/effect/turf_decal/tile/yellow,/obj/effect/turf_decal/tile/yellow{dir = 4},/obj/effect/turf_decal/tile/yellow{dir = 8},/turf/open/floor/plasteel,/area/bridge)
|
||||
"aQY" = (/obj/machinery/computer/shuttle/labor,/obj/effect/turf_decal/tile/blue{dir = 1},/obj/effect/turf_decal/tile/blue,/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel,/area/bridge)
|
||||
"aQZ" = (/obj/machinery/computer/communications,/obj/effect/turf_decal/tile/blue,/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel,/area/bridge)
|
||||
"aRa" = (/obj/structure/cable{icon_state = "1-2"},/obj/machinery/computer/shuttle/mining,/obj/effect/turf_decal/tile/blue,/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel,/area/bridge)
|
||||
"aRb" = (/obj/machinery/modular_computer/console/preset/command,/obj/effect/turf_decal/tile/green{dir = 1},/obj/effect/turf_decal/tile/green,/obj/effect/turf_decal/tile/green{dir = 8},/turf/open/floor/plasteel,/area/bridge)
|
||||
"aRc" = (/obj/machinery/computer/crew,/obj/effect/turf_decal/tile/green,/obj/effect/turf_decal/tile/green{dir = 8},/turf/open/floor/plasteel,/area/bridge)
|
||||
"aRd" = (/obj/machinery/computer/med_data,/obj/effect/turf_decal/tile/green,/obj/effect/turf_decal/tile/green{dir = 4},/obj/effect/turf_decal/tile/green{dir = 8},/turf/open/floor/plasteel,/area/bridge)
|
||||
"aRe" = (/obj/structure/table/reinforced,/obj/item/storage/toolbox/emergency,/obj/item/wrench,/obj/item/assembly/timer,/obj/item/assembly/signaler,/obj/item/assembly/signaler,/turf/open/floor/plasteel,/area/bridge)
|
||||
"aRf" = (/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/carpet,/area/crew_quarters/bar)
|
||||
"aRg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plasteel/stairs/medium,/area/hallway/primary/central)
|
||||
"aRh" = (/obj/structure/table,/obj/item/stack/sheet/plasteel{amount = 10},/obj/item/stack/cable_coil,/obj/item/assembly/flash/handheld,/obj/item/assembly/flash/handheld,/obj/item/assembly/flash/handheld,/obj/item/assembly/flash/handheld,/obj/item/assembly/flash/handheld,/obj/item/assembly/flash/handheld,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/open/floor/plasteel,/area/science/robotics/lab)
|
||||
"aRi" = (/obj/structure/chair/stool,/turf/open/floor/wood,/area/crew_quarters/bar)
|
||||
@@ -2291,28 +2291,28 @@
|
||||
"aSc" = (/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/camera{c_tag = "Auxiliary Tool Storage"; dir = 2},/obj/structure/table,/obj/item/stack/sheet/metal/fifty,/obj/item/stack/sheet/metal/fifty,/obj/item/storage/box/lights/mixed,/turf/open/floor/plasteel,/area/storage/tools)
|
||||
"aSd" = (/obj/structure/table,/obj/item/storage/toolbox/emergency,/turf/open/floor/plasteel,/area/storage/tools)
|
||||
"aSe" = (/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/plating,/area/storage/tools)
|
||||
"aSf" = (/obj/structure/table/reinforced,/obj/item/assembly/flash/handheld,/obj/item/assembly/flash/handheld,/turf/open/floor/plasteel,/area/bridge)
|
||||
"aSg" = (/obj/effect/turf_decal/tile/yellow{dir = 1},/turf/open/floor/plasteel,/area/bridge)
|
||||
"aSh" = (/obj/structure/chair{dir = 1; name = "Engineering Station"},/turf/open/floor/plasteel,/area/bridge)
|
||||
"aSi" = (/obj/structure/cable{icon_state = "1-2"},/obj/effect/turf_decal/tile/yellow{dir = 4},/turf/open/floor/plasteel,/area/bridge)
|
||||
"aSj" = (/obj/structure/table/reinforced,/obj/item/aicard,/obj/item/multitool,/obj/effect/turf_decal/tile/blue{dir = 1},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel,/area/bridge)
|
||||
"aSk" = (/obj/structure/chair{dir = 1; name = "Command Station"},/obj/machinery/button/door{id = "bridge blast"; name = "Bridge Blast Door Control"; pixel_x = 28; pixel_y = -2; req_access_txt = "19"},/obj/machinery/keycard_auth{pixel_x = 29; pixel_y = 8},/turf/open/floor/plasteel,/area/bridge)
|
||||
"aSl" = (/obj/structure/table/reinforced,/obj/structure/cable{icon_state = "1-2"},/obj/effect/turf_decal/tile/blue,/obj/effect/turf_decal/tile/blue{dir = 4},/turf/open/floor/plasteel,/area/bridge)
|
||||
"aSm" = (/obj/effect/turf_decal/tile/green{dir = 1},/turf/open/floor/plasteel,/area/bridge)
|
||||
"aSn" = (/obj/structure/chair{dir = 1; name = "Crew Station"},/turf/open/floor/plasteel,/area/bridge)
|
||||
"aSo" = (/obj/effect/turf_decal/tile/green{dir = 4},/turf/open/floor/plasteel,/area/bridge)
|
||||
"aSp" = (/obj/structure/table/reinforced,/obj/item/storage/fancy/donut_box,/turf/open/floor/plasteel,/area/bridge)
|
||||
"aSf" = (/obj/machinery/holopad,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/carpet,/area/crew_quarters/bar)
|
||||
"aSg" = (/obj/structure/table/reinforced,/obj/item/assembly/flash/handheld,/obj/item/assembly/flash/handheld,/turf/open/floor/plasteel,/area/bridge)
|
||||
"aSh" = (/obj/effect/turf_decal/tile/yellow{dir = 1},/turf/open/floor/plasteel,/area/bridge)
|
||||
"aSi" = (/obj/structure/chair{dir = 1; name = "Engineering Station"},/turf/open/floor/plasteel,/area/bridge)
|
||||
"aSj" = (/obj/structure/cable{icon_state = "1-2"},/obj/effect/turf_decal/tile/yellow{dir = 4},/turf/open/floor/plasteel,/area/bridge)
|
||||
"aSk" = (/obj/structure/table/reinforced,/obj/item/aicard,/obj/item/multitool,/obj/effect/turf_decal/tile/blue{dir = 1},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel,/area/bridge)
|
||||
"aSl" = (/obj/structure/chair{dir = 1; name = "Command Station"},/obj/machinery/button/door{id = "bridge blast"; name = "Bridge Blast Door Control"; pixel_x = 28; pixel_y = -2; req_access_txt = "19"},/obj/machinery/keycard_auth{pixel_x = 29; pixel_y = 8},/turf/open/floor/plasteel,/area/bridge)
|
||||
"aSm" = (/obj/structure/table/reinforced,/obj/structure/cable{icon_state = "1-2"},/obj/effect/turf_decal/tile/blue,/obj/effect/turf_decal/tile/blue{dir = 4},/turf/open/floor/plasteel,/area/bridge)
|
||||
"aSn" = (/obj/effect/turf_decal/tile/green{dir = 1},/turf/open/floor/plasteel,/area/bridge)
|
||||
"aSo" = (/obj/structure/chair{dir = 1; name = "Crew Station"},/turf/open/floor/plasteel,/area/bridge)
|
||||
"aSp" = (/obj/effect/turf_decal/tile/green{dir = 4},/turf/open/floor/plasteel,/area/bridge)
|
||||
"aSq" = (/obj/effect/spawner/structure/window,/obj/machinery/door/poddoor/preopen{id = "barShutters"; name = "privacy shutters"},/turf/open/floor/plating,/area/crew_quarters/bar)
|
||||
"aSr" = (/obj/structure/chair/wood,/turf/open/floor/wood,/area/crew_quarters/bar)
|
||||
"aSs" = (/obj/structure/chair/wood{dir = 4},/turf/open/floor/wood,/area/crew_quarters/bar)
|
||||
"aSt" = (/obj/structure/table/wood,/turf/open/floor/wood,/area/crew_quarters/bar)
|
||||
"aSu" = (/obj/structure/closet/secure_closet/freezer/kitchen,/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/kitchen)
|
||||
"aSv" = (/obj/structure/table/glass,/obj/item/stock_parts/manipulator,/obj/item/stock_parts/capacitor,/obj/item/stock_parts/capacitor,/obj/item/stock_parts/manipulator,/obj/item/stock_parts/micro_laser,/obj/item/stock_parts/micro_laser,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = 3},/obj/item/stack/cable_coil,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"aSv" = (/obj/structure/table/reinforced,/obj/item/storage/fancy/donut_box,/turf/open/floor/plasteel,/area/bridge)
|
||||
"aSw" = (/obj/structure/chair/wood{dir = 8},/turf/open/floor/wood,/area/crew_quarters/bar)
|
||||
"aSx" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plasteel/white/corner{dir = 8},/area/science/research)
|
||||
"aSy" = (/obj/structure/table/wood,/obj/item/instrument/guitar{pixel_x = -7},/obj/item/instrument/eguitar{pixel_x = 5},/turf/open/floor/wood,/area/crew_quarters/bar)
|
||||
"aSz" = (/obj/machinery/holopad,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/carpet,/area/crew_quarters/bar)
|
||||
"aSA" = (/obj/structure/cable,/turf/open/floor/carpet,/area/crew_quarters/bar)
|
||||
"aSz" = (/obj/structure/cable,/turf/open/floor/carpet,/area/crew_quarters/bar)
|
||||
"aSA" = (/obj/effect/landmark/xmastree,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/carpet,/area/crew_quarters/bar)
|
||||
"aSB" = (/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/kitchen)
|
||||
"aSC" = (/obj/machinery/atmospherics/components/unary/vent_pump/on{dir = 4},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/kitchen)
|
||||
"aSD" = (/obj/effect/landmark/start/cook,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/kitchen)
|
||||
@@ -2385,7 +2385,7 @@
|
||||
"aTS" = (/turf/open/floor/plasteel/stairs/medium,/area/hallway/primary/central)
|
||||
"aTT" = (/obj/structure/table/wood,/obj/item/reagent_containers/food/condiment/peppermill{pixel_x = 5; pixel_y = -2},/turf/open/floor/wood,/area/crew_quarters/bar)
|
||||
"aTU" = (/obj/machinery/light{dir = 4},/obj/machinery/camera{c_tag = "Bar East"; dir = 8},/turf/open/floor/wood,/area/crew_quarters/bar)
|
||||
"aTV" = (/obj/effect/landmark/xmastree,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/carpet,/area/crew_quarters/bar)
|
||||
"aTV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/open/floor/carpet,/area/crew_quarters/bar)
|
||||
"aTW" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/effect/turf_decal/tile/yellow{dir = 2},/turf/open/floor/plasteel,/area/hallway/primary/aft)
|
||||
"aTX" = (/obj/structure/table,/obj/item/reagent_containers/food/condiment/enzyme{layer = 5},/obj/item/stack/packageWrap,/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/kitchen)
|
||||
"aTY" = (/obj/structure/table,/obj/item/kitchen/rollingpin,/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/kitchen)
|
||||
@@ -2682,7 +2682,7 @@
|
||||
"aZD" = (/turf/closed/wall/r_wall,/area/crew_quarters/heads/captain)
|
||||
"aZE" = (/obj/machinery/door/airlock/command{name = "Captain's Office"; req_access_txt = "20"},/obj/structure/cable{icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/wood,/area/crew_quarters/heads/captain)
|
||||
"aZF" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/closed/wall/r_wall,/area/crew_quarters/heads/captain)
|
||||
"aZG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/open/floor/carpet,/area/crew_quarters/bar)
|
||||
"aZG" = (/obj/structure/chair/comfy/brown,/obj/effect/landmark/start/detective,/turf/open/floor/carpet,/area/security/detectives_office)
|
||||
"aZH" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/closet/radiation,/obj/effect/turf_decal/tile/yellow,/obj/effect/turf_decal/tile/yellow{dir = 4},/turf/open/floor/plasteel,/area/engine/engineering)
|
||||
"aZI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/effect/turf_decal/stripes/line{dir = 4},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/open/floor/engine,/area/engine/engineering)
|
||||
"aZJ" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/open/floor/plasteel/dark,/area/engine/engineering)
|
||||
@@ -2729,8 +2729,8 @@
|
||||
"bay" = (/obj/structure/rack,/obj/item/electronics/apc,/obj/item/stock_parts/cell{maxcharge = 2000},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plasteel,/area/quartermaster/warehouse)
|
||||
"baz" = (/obj/effect/landmark/event_spawn,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plasteel,/area/quartermaster/warehouse)
|
||||
"baA" = (/obj/item/storage/secure/safe{pixel_x = -23},/turf/open/floor/plasteel/grimy,/area/security/detectives_office)
|
||||
"baB" = (/obj/structure/chair/comfy/brown,/obj/effect/landmark/start/detective,/turf/open/floor/carpet,/area/security/detectives_office)
|
||||
"baC" = (/obj/structure/table/wood,/obj/item/camera/detective,/turf/open/floor/carpet,/area/security/detectives_office)
|
||||
"baB" = (/obj/structure/table/wood,/obj/item/camera/detective,/turf/open/floor/carpet,/area/security/detectives_office)
|
||||
"baC" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 4},/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"baD" = (/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel/grimy,/area/security/detectives_office)
|
||||
"baE" = (/obj/machinery/door/airlock{dir = 4; name = "Kitchen"; req_access_txt = "28"},/obj/machinery/door/firedoor,/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/kitchen)
|
||||
"baF" = (/obj/machinery/photocopier,/turf/open/floor/wood,/area/bridge/meeting_room)
|
||||
@@ -2747,14 +2747,14 @@
|
||||
"baQ" = (/obj/structure/table,/obj/item/folder/blue,/obj/structure/cable{icon_state = "1-2"},/obj/effect/landmark/event_spawn,/turf/open/floor/plasteel/dark,/area/ai_monitored/turret_protected/ai_upload)
|
||||
"baR" = (/obj/structure/table,/obj/machinery/light{dir = 4},/turf/open/floor/plasteel/dark,/area/ai_monitored/turret_protected/ai_upload)
|
||||
"baS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/closed/wall/r_wall,/area/ai_monitored/turret_protected/ai_upload)
|
||||
"baT" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 4},/turf/open/floor/wood,/area/crew_quarters/heads/captain)
|
||||
"baU" = (/obj/structure/disposalpipe/segment{dir = 9},/obj/structure/cable{icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 8},/turf/open/floor/wood,/area/crew_quarters/heads/captain)
|
||||
"baV" = (/obj/machinery/light_switch{pixel_y = 28},/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/wood,/area/crew_quarters/heads/captain)
|
||||
"baW" = (/obj/machinery/status_display/ai{pixel_y = 32},/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/carpet,/area/crew_quarters/heads/captain)
|
||||
"baX" = (/obj/structure/cable{icon_state = "4-8"},/obj/machinery/computer/security/telescreen/entertainment{pixel_y = 32},/obj/machinery/atmospherics/components/unary/vent_pump/on{dir = 8},/turf/open/floor/carpet,/area/crew_quarters/heads/captain)
|
||||
"baY" = (/obj/machinery/status_display{pixel_y = 32},/obj/structure/cable{icon_state = "2-8"},/obj/structure/cable{icon_state = "2-4"},/turf/open/floor/carpet,/area/crew_quarters/heads/captain)
|
||||
"baZ" = (/obj/machinery/power/apc{dir = 1; name = "Captain's Office APC"; areastring = "/area/crew_quarters/heads/captain"; pixel_y = 24},/obj/structure/cable{icon_state = "0-8"},/turf/open/floor/wood,/area/crew_quarters/heads/captain)
|
||||
"bba" = (/turf/open/floor/wood,/area/crew_quarters/heads/captain)
|
||||
"baT" = (/obj/structure/disposalpipe/segment{dir = 9},/obj/structure/cable{icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 8},/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"baU" = (/obj/machinery/light_switch{pixel_y = 28},/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"baV" = (/obj/machinery/power/apc{dir = 1; name = "Captain's Office APC"; areastring = "/area/crew_quarters/heads/captain"; pixel_y = 24},/obj/structure/cable{icon_state = "0-8"},/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"baW" = (/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"baX" = (/obj/machinery/status_display/ai{pixel_y = 32},/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"baY" = (/obj/structure/cable{icon_state = "4-8"},/obj/machinery/computer/security/telescreen/entertainment{pixel_y = 32},/obj/machinery/atmospherics/components/unary/vent_pump/on{dir = 8},/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"baZ" = (/obj/structure/table/wood,/obj/machinery/computer/security/wooden_tv,/turf/open/floor/carpet,/area/security/detectives_office)
|
||||
"bba" = (/obj/structure/table/wood,/obj/item/storage/fancy/cigarettes,/obj/item/clothing/glasses/sunglasses,/turf/open/floor/carpet,/area/security/detectives_office)
|
||||
"bbb" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/public/glass{name = "Diner"},/turf/open/floor/plasteel,/area/crew_quarters/bar)
|
||||
"bbc" = (/obj/structure/sign/barsign,/turf/closed/wall,/area/crew_quarters/bar)
|
||||
"bbd" = (/turf/open/floor/plasteel/white/corner{dir = 1},/area/hallway/primary/starboard)
|
||||
@@ -2779,9 +2779,9 @@
|
||||
"bbw" = (/obj/structure/closet/crate,/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4},/turf/open/floor/plasteel,/area/quartermaster/warehouse)
|
||||
"bbx" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{dir = 4; name = "Detective's Office"; req_access_txt = "4"},/turf/open/floor/plasteel/grimy,/area/security/detectives_office)
|
||||
"bby" = (/obj/structure/table/wood,/obj/item/reagent_containers/food/drinks/bottle/whiskey{pixel_x = 3},/obj/item/lighter,/turf/open/floor/carpet,/area/security/detectives_office)
|
||||
"bbz" = (/obj/structure/table/wood,/obj/machinery/computer/security/wooden_tv,/turf/open/floor/carpet,/area/security/detectives_office)
|
||||
"bbA" = (/obj/structure/table/wood,/obj/item/storage/fancy/cigarettes,/obj/item/clothing/glasses/sunglasses,/turf/open/floor/carpet,/area/security/detectives_office)
|
||||
"bbB" = (/obj/structure/table/wood,/obj/item/flashlight/lamp/green,/turf/open/floor/carpet,/area/security/detectives_office)
|
||||
"bbz" = (/obj/machinery/status_display{pixel_y = 32},/obj/structure/cable{icon_state = "2-8"},/obj/structure/cable{icon_state = "2-4"},/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bbA" = (/obj/structure/table/wood,/obj/item/flashlight/lamp/green,/turf/open/floor/carpet,/area/security/detectives_office)
|
||||
"bbB" = (/obj/machinery/vending/cigarette,/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bbC" = (/obj/effect/spawner/structure/window/reinforced,/obj/machinery/door/poddoor/shutters/preopen{id = "kanyewest"; name = "privacy shutters"},/turf/open/floor/plating,/area/security/detectives_office)
|
||||
"bbD" = (/obj/machinery/door/poddoor/preopen{id = "heads_meeting"; name = "privacy shutters"},/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/plating,/area/bridge/meeting_room)
|
||||
"bbE" = (/obj/machinery/recharger{pixel_y = 4},/obj/structure/table,/turf/open/floor/wood,/area/bridge/meeting_room)
|
||||
@@ -2793,13 +2793,13 @@
|
||||
"bbK" = (/obj/structure/table,/obj/item/aiModule/supplied/quarantine,/obj/machinery/camera/motion{dir = 4; network = list("aiupload")},/turf/open/floor/plasteel/dark,/area/ai_monitored/turret_protected/ai_upload)
|
||||
"bbL" = (/obj/machinery/holopad,/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/plasteel/dark,/area/ai_monitored/turret_protected/ai_upload)
|
||||
"bbM" = (/obj/structure/table,/obj/item/aiModule/supplied/freeform,/obj/structure/sign/plaques/kiddie{pixel_x = 32},/obj/machinery/camera/motion{dir = 8; network = list("aiupload")},/turf/open/floor/plasteel/dark,/area/ai_monitored/turret_protected/ai_upload)
|
||||
"bbN" = (/obj/machinery/vending/cigarette,/turf/open/floor/wood,/area/crew_quarters/heads/captain)
|
||||
"bbO" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/wood,/area/crew_quarters/heads/captain)
|
||||
"bbP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/wood,/area/crew_quarters/heads/captain)
|
||||
"bbQ" = (/obj/structure/chair/comfy/brown{dir = 4},/turf/open/floor/carpet,/area/crew_quarters/heads/captain)
|
||||
"bbR" = (/obj/structure/table/wood,/obj/item/storage/fancy/donut_box,/turf/open/floor/carpet,/area/crew_quarters/heads/captain)
|
||||
"bbS" = (/obj/structure/chair/comfy/brown{dir = 8},/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/carpet,/area/crew_quarters/heads/captain)
|
||||
"bbT" = (/obj/structure/displaycase/captain,/turf/open/floor/wood,/area/crew_quarters/heads/captain)
|
||||
"bbN" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bbO" = (/obj/structure/displaycase/captain,/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bbP" = (/obj/machinery/computer/arcade,/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bbQ" = (/obj/machinery/light{dir = 8},/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bbR" = (/obj/structure/chair/comfy/brown{dir = 4},/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bbS" = (/obj/structure/table/wood,/obj/item/storage/fancy/donut_box,/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bbT" = (/obj/structure/chair,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bbU" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=Dorm"; location = "HOP2"},/turf/open/floor/plasteel,/area/hallway/primary/central)
|
||||
"bbV" = (/obj/effect/turf_decal/loading_area{dir = 8; icon_state = "drain"; name = "drain"},/turf/open/floor/plasteel,/area/hallway/primary/central)
|
||||
"bbW" = (/obj/machinery/door/firedoor,/turf/open/floor/plasteel,/area/hallway/primary/starboard)
|
||||
@@ -2853,8 +2853,8 @@
|
||||
"bcS" = (/obj/machinery/airalarm{dir = 4; pixel_x = -23},/obj/machinery/porta_turret/ai{dir = 4},/turf/open/floor/plasteel/dark,/area/ai_monitored/turret_protected/ai_upload)
|
||||
"bcT" = (/obj/effect/turf_decal/bot_white,/obj/effect/turf_decal/tile/neutral{dir = 1},/obj/effect/turf_decal/tile/neutral,/obj/effect/turf_decal/tile/neutral{dir = 4},/obj/effect/turf_decal/tile/neutral{dir = 8},/turf/open/floor/plasteel/dark,/area/ai_monitored/turret_protected/ai_upload)
|
||||
"bcU" = (/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/circuit,/area/ai_monitored/turret_protected/ai_upload)
|
||||
"bcV" = (/obj/machinery/computer/arcade,/turf/open/floor/wood,/area/crew_quarters/heads/captain)
|
||||
"bcW" = (/obj/structure/table/wood,/turf/open/floor/carpet,/area/crew_quarters/heads/captain)
|
||||
"bcV" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8},/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bcW" = (/obj/structure/chair/comfy/brown{dir = 8},/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bcX" = (/obj/machinery/atmospherics/components/unary/vent_scrubber/on{dir = 8},/obj/effect/turf_decal/loading_area{dir = 1; icon_state = "drain"; name = "drain"},/turf/open/floor/plasteel,/area/hallway/primary/central)
|
||||
"bcY" = (/obj/machinery/atmospherics/components/unary/vent_scrubber/on,/turf/open/floor/plasteel,/area/hallway/primary/starboard)
|
||||
"bcZ" = (/obj/machinery/atmospherics/components/unary/vent_pump/on{dir = 4},/turf/open/floor/plasteel,/area/hallway/primary/starboard)
|
||||
@@ -2902,13 +2902,13 @@
|
||||
"bdP" = (/obj/machinery/computer/upload/borg{dir = 1},/obj/item/radio/intercom{broadcasting = 1; frequency = 1447; listening = 0; name = "Station Intercom (AI Private)"; pixel_y = -29},/turf/open/floor/circuit,/area/ai_monitored/turret_protected/ai_upload)
|
||||
"bdQ" = (/obj/machinery/light,/obj/machinery/atmospherics/components/unary/vent_pump/on,/turf/open/floor/plasteel/dark,/area/ai_monitored/turret_protected/ai_upload)
|
||||
"bdR" = (/obj/structure/table,/obj/item/aiModule/supplied/oxygen,/obj/item/aiModule/zeroth/oneHuman,/obj/machinery/door/window{base_state = "left"; dir = 8; icon_state = "left"; name = "High-Risk Modules"; req_access_txt = "20"},/obj/item/aiModule/reset/purge,/obj/structure/window/reinforced,/obj/effect/spawner/lootdrop/aimodule_harmful,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/item/aiModule/supplied/protectStation,/turf/open/floor/plasteel/dark,/area/ai_monitored/turret_protected/ai_upload)
|
||||
"bdS" = (/obj/machinery/light{dir = 8},/turf/open/floor/wood,/area/crew_quarters/heads/captain)
|
||||
"bdT" = (/obj/structure/chair,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/wood,/area/crew_quarters/heads/captain)
|
||||
"bdU" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8},/turf/open/floor/wood,/area/crew_quarters/heads/captain)
|
||||
"bdV" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/carpet,/area/crew_quarters/heads/captain)
|
||||
"bdW" = (/obj/machinery/atmospherics/components/unary/vent_scrubber/on{dir = 8},/turf/open/floor/carpet,/area/crew_quarters/heads/captain)
|
||||
"bdX" = (/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/carpet,/area/crew_quarters/heads/captain)
|
||||
"bdY" = (/obj/structure/table/wood,/obj/machinery/camera{c_tag = "Captain's Office"; dir = 8},/obj/item/storage/lockbox/medal,/turf/open/floor/wood,/area/crew_quarters/heads/captain)
|
||||
"bdS" = (/obj/structure/table/wood,/obj/machinery/camera{c_tag = "Captain's Office"; dir = 8},/obj/item/storage/lockbox/medal,/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bdT" = (/obj/structure/table/wood,/obj/item/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/pen,/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bdU" = (/obj/structure/table/wood,/obj/item/folder/blue,/obj/item/stamp/captain,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bdV" = (/obj/structure/table/wood,/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bdW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bdX" = (/obj/machinery/atmospherics/components/unary/vent_scrubber/on{dir = 8},/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bdY" = (/obj/structure/table/wood,/obj/item/hand_tele,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bdZ" = (/obj/machinery/light{dir = 1; pixel_y = 16},/obj/effect/turf_decal/loading_area{dir = 1; icon_state = "drain"; name = "drain"},/turf/open/floor/plasteel/white/corner{dir = 1},/area/hallway/primary/starboard)
|
||||
"bea" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=Stbd"; location = "HOP"},/turf/open/floor/plasteel,/area/hallway/primary/central)
|
||||
"beb" = (/obj/item/twohanded/required/kirbyplants{icon_state = "plant-21"; pixel_x = -3; pixel_y = 3},/turf/open/floor/plasteel,/area/crew_quarters/bar)
|
||||
@@ -2976,13 +2976,13 @@
|
||||
"bfl" = (/obj/machinery/status_display,/turf/closed/wall/r_wall,/area/ai_monitored/turret_protected/ai_upload)
|
||||
"bfm" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 8},/turf/closed/wall/r_wall,/area/ai_monitored/turret_protected/ai_upload)
|
||||
"bfn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/closed/wall/r_wall,/area/ai_monitored/turret_protected/ai_upload)
|
||||
"bfo" = (/obj/structure/table/wood,/obj/item/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/pen,/turf/open/floor/wood,/area/crew_quarters/heads/captain)
|
||||
"bfp" = (/obj/structure/table/wood,/obj/item/folder/blue,/obj/item/stamp/captain,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/wood,/area/crew_quarters/heads/captain)
|
||||
"bfq" = (/obj/structure/table/wood,/obj/item/hand_tele,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/wood,/area/crew_quarters/heads/captain)
|
||||
"bfr" = (/obj/structure/table/wood,/obj/item/flashlight/lamp/green,/turf/open/floor/wood,/area/crew_quarters/heads/captain)
|
||||
"bfs" = (/obj/effect/landmark/event_spawn,/turf/open/floor/wood,/area/crew_quarters/heads/captain)
|
||||
"bft" = (/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/wood,/area/crew_quarters/heads/captain)
|
||||
"bfu" = (/obj/structure/table/wood,/obj/item/pinpointer/nuke,/obj/item/disk/nuclear,/obj/item/storage/secure/safe{pixel_x = 35; pixel_y = 5},/obj/machinery/light{dir = 4},/turf/open/floor/wood,/area/crew_quarters/heads/captain)
|
||||
"bfo" = (/obj/effect/landmark/event_spawn,/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bfp" = (/obj/structure/table/wood,/obj/item/pinpointer/nuke,/obj/item/disk/nuclear,/obj/item/storage/secure/safe{pixel_x = 35; pixel_y = 5},/obj/machinery/light{dir = 4},/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bfq" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Captain's Desk"; departmentType = 5; name = "Captain RC"; pixel_x = -30},/obj/structure/filingcabinet,/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bfr" = (/obj/structure/chair/comfy/brown{dir = 4},/obj/effect/landmark/start/captain,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bfs" = (/obj/machinery/computer/communications{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bft" = (/obj/structure/table/wood,/obj/item/book/manual/wiki/security_space_law,/obj/item/coin/plasma,/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bfu" = (/obj/structure/cable{icon_state = "1-2"},/obj/machinery/holopad,/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bfv" = (/turf/closed/wall,/area/medical/chemistry)
|
||||
"bfw" = (/obj/structure/sign/departments/medbay/alt,/turf/closed/wall,/area/medical/medbay/central)
|
||||
"bfx" = (/obj/effect/spawner/structure/window,/turf/open/floor/plating,/area/medical/medbay/central)
|
||||
@@ -3053,12 +3053,12 @@
|
||||
"bgK" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/closed/wall/r_wall,/area/engine/gravity_generator)
|
||||
"bgL" = (/turf/open/floor/plasteel/dark,/area/engine/gravity_generator)
|
||||
"bgM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/closed/wall/r_wall,/area/engine/gravity_generator)
|
||||
"bgN" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Captain's Desk"; departmentType = 5; name = "Captain RC"; pixel_x = -30},/obj/structure/filingcabinet,/turf/open/floor/wood,/area/crew_quarters/heads/captain)
|
||||
"bgO" = (/obj/structure/chair/comfy/brown{dir = 4},/obj/effect/landmark/start/captain,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/wood,/area/crew_quarters/heads/captain)
|
||||
"bgP" = (/obj/machinery/computer/communications{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/wood,/area/crew_quarters/heads/captain)
|
||||
"bgQ" = (/obj/structure/table/wood,/obj/item/book/manual/wiki/security_space_law,/obj/item/coin/plasma,/turf/open/floor/wood,/area/crew_quarters/heads/captain)
|
||||
"bgR" = (/obj/structure/cable{icon_state = "1-2"},/obj/machinery/holopad,/turf/open/floor/wood,/area/crew_quarters/heads/captain)
|
||||
"bgS" = (/obj/structure/table/wood,/obj/machinery/airalarm{dir = 8; pixel_x = 24},/obj/item/camera,/obj/item/storage/photo_album{pixel_y = -10},/turf/open/floor/wood,/area/crew_quarters/heads/captain)
|
||||
"bgN" = (/obj/structure/table/wood,/obj/machinery/airalarm{dir = 8; pixel_x = 24},/obj/item/camera,/obj/item/storage/photo_album{pixel_y = -10},/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bgO" = (/obj/item/radio/intercom{dir = 8; freerange = 1; name = "Station Intercom (Command)"; pixel_x = -28},/obj/machinery/suit_storage_unit/captain,/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bgP" = (/obj/machinery/computer/card{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bgQ" = (/obj/structure/table/wood,/obj/machinery/recharger,/obj/item/melee/chainofcommand,/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bgR" = (/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"bgS" = (/obj/structure/chair/stool,/obj/effect/landmark/start/scientist,/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"bgT" = (/turf/open/floor/plasteel,/area/crew_quarters/bar)
|
||||
"bgU" = (/obj/machinery/door/window/southright{base_state = "left"; dir = 4; icon_state = "left"; name = "Bar Door"; req_one_access_txt = "25;28"},/obj/structure/medkit_cabinet{pixel_y = 27},/turf/open/floor/wood,/area/crew_quarters/bar)
|
||||
"bgV" = (/obj/machinery/power/apc{dir = 1; name = "Chemistry APC"; areastring = "/area/medical/chemistry"; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"},/turf/open/floor/plasteel/white,/area/medical/chemistry)
|
||||
@@ -3132,9 +3132,9 @@
|
||||
"bil" = (/obj/effect/turf_decal/bot_white/right,/obj/effect/turf_decal/tile/neutral{dir = 1},/obj/effect/turf_decal/tile/neutral,/obj/effect/turf_decal/tile/neutral{dir = 4},/obj/effect/turf_decal/tile/neutral{dir = 8},/turf/open/floor/plasteel/dark,/area/engine/gravity_generator)
|
||||
"bim" = (/obj/effect/turf_decal/bot_white,/obj/effect/turf_decal/tile/neutral{dir = 1},/obj/effect/turf_decal/tile/neutral,/obj/effect/turf_decal/tile/neutral{dir = 4},/obj/effect/turf_decal/tile/neutral{dir = 8},/turf/open/floor/plasteel/dark,/area/engine/gravity_generator)
|
||||
"bin" = (/obj/effect/turf_decal/bot_white/left,/obj/effect/turf_decal/tile/neutral{dir = 1},/obj/effect/turf_decal/tile/neutral,/obj/effect/turf_decal/tile/neutral{dir = 4},/obj/effect/turf_decal/tile/neutral{dir = 8},/turf/open/floor/plasteel/dark,/area/engine/gravity_generator)
|
||||
"bio" = (/obj/item/radio/intercom{dir = 8; freerange = 1; name = "Station Intercom (Command)"; pixel_x = -28},/obj/machinery/suit_storage_unit/captain,/turf/open/floor/wood,/area/crew_quarters/heads/captain)
|
||||
"bip" = (/obj/machinery/computer/card{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/wood,/area/crew_quarters/heads/captain)
|
||||
"biq" = (/obj/structure/table/wood,/obj/machinery/recharger,/obj/item/melee/chainofcommand,/turf/open/floor/wood,/area/crew_quarters/heads/captain)
|
||||
"bio" = (/obj/machinery/camera{c_tag = "Research and Development"; dir = 2; network = list("ss13","rd"); pixel_x = 22},/obj/machinery/button/door{dir = 2; id = "rnd"; name = "Shutters Control Button"; pixel_x = -6; pixel_y = 24; req_access_txt = "47"},/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"bip" = (/obj/machinery/newscaster/security_unit{pixel_x = -32},/obj/machinery/keycard_auth{pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"biq" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Captain's Desk Door"; req_access_txt = "20"},/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bir" = (/obj/machinery/requests_console{department = "Chemistry"; departmentType = 2; pixel_x = -30; receive_ore_updates = 1},/obj/machinery/light{dir = 8},/obj/structure/closet/secure_closet/chemical,/turf/open/floor/plasteel/white,/area/medical/chemistry)
|
||||
"bis" = (/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/plasteel/white,/area/medical/chemistry)
|
||||
"bit" = (/turf/open/floor/plasteel/white,/area/medical/chemistry)
|
||||
@@ -3173,6 +3173,10 @@
|
||||
"bja" = (/turf/open/floor/wood/cold,/area/crew_quarters/bar)
|
||||
"bjb" = (/obj/structure/chair/wood{dir = 1},/turf/open/floor/wood,/area/crew_quarters/bar)
|
||||
"bjc" = (/obj/structure/table/glass,/obj/item/reagent_containers/glass/beaker/cryoxadone,/obj/item/reagent_containers/glass/beaker/cryoxadone,/turf/open/floor/plasteel,/area/medical/sleeper)
|
||||
"bjd" = (/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bje" = (/obj/structure/cable{icon_state = "1-4"},/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bjf" = (/obj/structure/cable{icon_state = "4-8"},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bjg" = (/obj/structure/cable{icon_state = "2-8"},/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bjh" = (/obj/structure/flora/ausbushes/leafybush,/turf/open/floor/grass,/area/hallway/secondary/exit)
|
||||
"bji" = (/obj/structure/disposalpipe/segment,/obj/effect/turf_decal/loading_area{dir = 8; icon_state = "drain"; name = "drain"},/turf/open/floor/plasteel,/area/hallway/primary/central)
|
||||
"bjj" = (/obj/machinery/vending/cigarette,/turf/open/floor/plasteel,/area/crew_quarters/bar)
|
||||
@@ -3239,10 +3243,10 @@
|
||||
"bks" = (/obj/structure/closet/emcloset,/obj/effect/turf_decal/stripes/line{dir = 9},/turf/open/floor/plasteel/white,/area/science/research)
|
||||
"bkt" = (/obj/machinery/atmospherics/components/unary/vent_pump/on,/turf/open/floor/plasteel/white,/area/science/research)
|
||||
"bku" = (/obj/machinery/camera{c_tag = "Research Division Access"; dir = 2},/obj/structure/sink{dir = 4; pixel_x = 11},/obj/effect/turf_decal/stripes/line{dir = 5},/turf/open/floor/plasteel/white,/area/science/research)
|
||||
"bkv" = (/obj/effect/turf_decal/tile/purple{dir = 1},/obj/effect/turf_decal/tile/purple{dir = 4},/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"bkw" = (/obj/structure/chair/stool,/obj/effect/landmark/start/scientist,/obj/effect/turf_decal/tile/purple{dir = 1},/obj/effect/turf_decal/tile/purple{dir = 4},/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"bkx" = (/obj/machinery/camera{c_tag = "Research and Development"; dir = 2; network = list("ss13","rd"); pixel_x = 22},/obj/machinery/button/door{dir = 2; id = "rnd"; name = "Shutters Control Button"; pixel_x = -6; pixel_y = 24; req_access_txt = "47"},/obj/effect/turf_decal/tile/purple{dir = 1},/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"bky" = (/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"bkv" = (/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = -30; receive_ore_updates = 1},/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"bkw" = (/obj/structure/disposalpipe/segment{dir = 6},/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"bkx" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"bky" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/obj/item/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"bkz" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plating,/area/maintenance/starboard)
|
||||
"bkA" = (/obj/docking_port/stationary{dir = 2; dwidth = 11; height = 22; id = "whiteship_home"; name = "SS13: Auxiliary Dock, Station-Port"; width = 35},/turf/open/space/basic,/area/space)
|
||||
"bkB" = (/obj/machinery/conveyor{id = "garbage"},/obj/structure/sign/warning/vacuum{pixel_x = -32},/turf/open/floor/plating,/area/maintenance/disposal)
|
||||
@@ -3283,11 +3287,11 @@
|
||||
"blk" = (/obj/machinery/power/apc{dir = 1; name = "Central Maintenance APC"; areastring = "/area/maintenance/central"; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"},/turf/open/floor/plating,/area/maintenance/central)
|
||||
"bll" = (/obj/structure/closet/wardrobe/black,/turf/open/floor/plating,/area/maintenance/central)
|
||||
"blm" = (/obj/machinery/airalarm{dir = 4; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/wood,/area/bridge/meeting_room)
|
||||
"bln" = (/obj/machinery/newscaster/security_unit{pixel_x = -32},/obj/machinery/keycard_auth{pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/wood,/area/crew_quarters/heads/captain)
|
||||
"blo" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Captain's Desk Door"; req_access_txt = "20"},/turf/open/floor/wood,/area/crew_quarters/heads/captain)
|
||||
"blp" = (/obj/structure/cable{icon_state = "1-4"},/turf/open/floor/wood,/area/crew_quarters/heads/captain)
|
||||
"blq" = (/obj/structure/cable{icon_state = "4-8"},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/open/floor/wood,/area/crew_quarters/heads/captain)
|
||||
"blr" = (/obj/structure/cable{icon_state = "2-8"},/turf/open/floor/wood,/area/crew_quarters/heads/captain)
|
||||
"bln" = (/obj/structure/disposalpipe/segment,/obj/effect/turf_decal/stripes/line{dir = 8},/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"blo" = (/obj/machinery/holopad,/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"blp" = (/obj/structure/table/glass,/obj/item/reagent_containers/glass/beaker/large{pixel_x = -3; pixel_y = 3},/obj/item/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/reagent_containers/dropper,/obj/machinery/airalarm{dir = 8; pixel_x = 24},/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"blq" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/components/unary/vent_pump/on,/obj/effect/turf_decal/stripes/line{dir = 8},/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"blr" = (/obj/structure/table/glass,/obj/item/stock_parts/manipulator,/obj/item/stock_parts/capacitor,/obj/item/stock_parts/capacitor,/obj/item/stock_parts/manipulator,/obj/item/stock_parts/micro_laser,/obj/item/stock_parts/micro_laser,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = 3},/obj/item/stack/cable_coil,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"bls" = (/obj/structure/table/glass,/obj/machinery/reagentgrinder,/obj/structure/extinguisher_cabinet{pixel_x = -27},/turf/open/floor/plasteel/white,/area/medical/chemistry)
|
||||
"blt" = (/obj/structure/disposalpipe/segment{dir = 6},/turf/open/floor/plasteel/white,/area/medical/chemistry)
|
||||
"blu" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/turf/open/floor/plasteel/white,/area/medical/chemistry)
|
||||
@@ -3316,10 +3320,10 @@
|
||||
"blR" = (/obj/structure/closet/firecloset,/obj/machinery/light{dir = 8},/obj/effect/turf_decal/stripes/line{dir = 8},/turf/open/floor/plasteel/white,/area/science/research)
|
||||
"blS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plasteel/white,/area/science/research)
|
||||
"blT" = (/obj/machinery/shower{dir = 8},/obj/structure/sign/warning/securearea{pixel_x = 32},/obj/effect/turf_decal/stripes/line{dir = 4},/turf/open/floor/plasteel/white,/area/science/research)
|
||||
"blU" = (/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = -30; receive_ore_updates = 1},/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"blV" = (/obj/structure/disposalpipe/segment{dir = 6},/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"blW" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"blX" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/obj/item/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"blU" = (/obj/effect/turf_decal/stripes/line{dir = 1},/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"blV" = (/obj/machinery/atmospherics/components/unary/vent_scrubber/on{dir = 4},/obj/effect/turf_decal/stripes/line{dir = 1},/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"blW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/effect/turf_decal/stripes/line{dir = 1},/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"blX" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{icon_state = "2-4"},/obj/effect/turf_decal/stripes/corner{dir = 4},/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"blY" = (/turf/closed/wall,/area/maintenance/starboard)
|
||||
"blZ" = (/obj/machinery/conveyor{id = "garbage"},/obj/machinery/door/poddoor/preopen{id = "Disposal Exit"; name = "disposal exit vent"},/turf/open/floor/plating,/area/maintenance/disposal)
|
||||
"bma" = (/obj/machinery/button/door{id = "Disposal Exit"; name = "Disposal Vent Control"; pixel_x = -25; pixel_y = 4; req_access_txt = "12"},/obj/machinery/button/massdriver{id = "trash"; pixel_x = -26; pixel_y = -6},/obj/structure/chair/stool,/turf/open/floor/plating,/area/maintenance/disposal)
|
||||
@@ -3393,9 +3397,9 @@
|
||||
"bnq" = (/obj/machinery/rnd/destructive_analyzer,/obj/effect/turf_decal/stripes/line{dir = 1},/turf/open/floor/plasteel,/area/science/lab)
|
||||
"bnr" = (/obj/effect/turf_decal/stripes/line{dir = 1},/turf/open/floor/plasteel,/area/science/lab)
|
||||
"bns" = (/obj/effect/turf_decal/stripes/line{dir = 1},/obj/machinery/rnd/production/protolathe/department/science,/turf/open/floor/plasteel,/area/science/lab)
|
||||
"bnt" = (/obj/structure/disposalpipe/segment,/obj/effect/turf_decal/stripes/line{dir = 8},/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"bnu" = (/obj/machinery/holopad,/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"bnv" = (/obj/structure/table/glass,/obj/item/reagent_containers/glass/beaker/large{pixel_x = -3; pixel_y = 3},/obj/item/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/reagent_containers/dropper,/obj/machinery/airalarm{dir = 8; pixel_x = 24},/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"bnt" = (/obj/machinery/light/small{dir = 1},/obj/structure/dresser,/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 8},/obj/item/card/id/captains_spare,/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bnu" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bnv" = (/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/atmospherics/components/unary/vent_pump/on{dir = 8},/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bnw" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plating,/area/maintenance/starboard)
|
||||
"bnx" = (/obj/machinery/light/small{dir = 1},/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plating,/area/maintenance/starboard)
|
||||
"bny" = (/obj/effect/mapping_helpers/airlock/cyclelink_helper{dir = 4},/obj/machinery/door/airlock/external{req_access_txt = "13"},/turf/open/floor/plating,/area/maintenance/starboard)
|
||||
@@ -3432,9 +3436,9 @@
|
||||
"bod" = (/obj/effect/turf_decal/loading_area{name = "trim"; icon_state = "trim"; dir = 2},/turf/open/floor/plasteel/dark,/area/engine/gravity_generator)
|
||||
"boe" = (/obj/machinery/light{dir = 4},/obj/effect/turf_decal/loading_area{name = "trim"; icon_state = "trim"; dir = 6},/turf/open/floor/plasteel/dark,/area/engine/gravity_generator)
|
||||
"bof" = (/turf/closed/wall,/area/crew_quarters/heads/captain)
|
||||
"bog" = (/obj/machinery/light/small{dir = 1},/obj/structure/dresser,/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 8},/obj/item/card/id/captains_spare,/turf/open/floor/carpet,/area/crew_quarters/heads/captain)
|
||||
"boh" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/carpet,/area/crew_quarters/heads/captain)
|
||||
"boi" = (/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/atmospherics/components/unary/vent_pump/on{dir = 8},/turf/open/floor/carpet,/area/crew_quarters/heads/captain)
|
||||
"bog" = (/obj/structure/cable{icon_state = "4-8"},/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"boh" = (/obj/item/stack/sheet/glass,/obj/structure/table/glass,/obj/item/stack/sheet/glass,/obj/item/stack/sheet/glass,/obj/item/stock_parts/matter_bin,/obj/item/stock_parts/matter_bin,/obj/machinery/light{dir = 4},/obj/item/stock_parts/scanning_module{pixel_x = 2; pixel_y = 3},/obj/item/stock_parts/scanning_module,/obj/machinery/power/apc{dir = 4; name = "Research Lab APC"; areastring = "/area/science/lab"; pixel_x = 26},/obj/structure/cable{icon_state = "0-8"},/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"boi" = (/obj/structure/bed,/obj/item/bedsheet/captain,/obj/machinery/airalarm{dir = 4; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"boj" = (/obj/machinery/door/airlock{dir = 4; name = "Private Restroom"},/turf/open/floor/plasteel/freezer,/area/crew_quarters/heads/captain)
|
||||
"bok" = (/obj/structure/sink{dir = 4; pixel_x = 11},/obj/structure/mirror{pixel_x = 28},/obj/machinery/light/small{dir = 1},/turf/open/floor/plasteel/freezer,/area/crew_quarters/heads/captain)
|
||||
"bol" = (/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/plating,/area/maintenance/central/secondary)
|
||||
@@ -3481,7 +3485,7 @@
|
||||
"bpa" = (/obj/machinery/computer/rdconsole/core{dir = 4},/turf/open/floor/plasteel,/area/science/lab)
|
||||
"bpb" = (/turf/open/floor/plasteel,/area/science/lab)
|
||||
"bpc" = (/obj/item/reagent_containers/glass/beaker/sulphuric,/obj/machinery/rnd/production/circuit_imprinter/department/science,/turf/open/floor/plasteel,/area/science/lab)
|
||||
"bpd" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/components/unary/vent_pump/on,/obj/effect/turf_decal/stripes/line{dir = 8},/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"bpd" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bpe" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment{dir = 5},/obj/structure/cable{icon_state = "1-4"},/turf/open/floor/plating,/area/maintenance/starboard)
|
||||
"bpf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{icon_state = "4-8"},/turf/open/floor/plating,/area/maintenance/starboard)
|
||||
"bpg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 10},/obj/structure/cable{icon_state = "2-8"},/turf/open/floor/plating,/area/maintenance/starboard)
|
||||
@@ -3501,7 +3505,7 @@
|
||||
"bpu" = (/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/plating,/area/quartermaster/office)
|
||||
"bpv" = (/obj/machinery/computer/cargo/request,/turf/open/floor/plasteel,/area/quartermaster/office)
|
||||
"bpw" = (/turf/open/floor/plasteel,/area/quartermaster/office)
|
||||
"bpx" = (/obj/machinery/autolathe{name = "public autolathe"},/turf/open/floor/plasteel,/area/quartermaster/office)
|
||||
"bpx" = (/obj/structure/table/wood,/obj/item/flashlight/lamp/green,/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bpy" = (/obj/machinery/firealarm{pixel_y = 27},/turf/open/floor/plasteel,/area/quartermaster/office)
|
||||
"bpz" = (/obj/effect/spawner/structure/window,/turf/open/floor/plating,/area/quartermaster/office)
|
||||
"bpA" = (/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/plasteel,/area/hallway/primary/central)
|
||||
@@ -3515,9 +3519,9 @@
|
||||
"bpI" = (/obj/structure/cable{icon_state = "0-8"},/obj/structure/cable{icon_state = "0-4"},/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/plating,/area/engine/gravity_generator)
|
||||
"bpJ" = (/obj/structure/cable{icon_state = "4-8"},/obj/machinery/door/airlock/engineering/glass{name = "Gravity Generator"; req_access_txt = "11"},/turf/open/floor/plasteel/dark,/area/engine/gravity_generator)
|
||||
"bpK" = (/obj/structure/sign/warning/radiation/rad_area{pixel_x = 32},/obj/structure/cable{icon_state = "0-2"},/obj/structure/cable{icon_state = "0-8"},/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/plating,/area/engine/gravity_generator)
|
||||
"bpL" = (/obj/structure/bed,/obj/item/bedsheet/captain,/obj/machinery/airalarm{dir = 4; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/carpet,/area/crew_quarters/heads/captain)
|
||||
"bpM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/carpet,/area/crew_quarters/heads/captain)
|
||||
"bpN" = (/obj/structure/table/wood,/obj/item/flashlight/lamp/green,/turf/open/floor/carpet,/area/crew_quarters/heads/captain)
|
||||
"bpL" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/hop)
|
||||
"bpM" = (/obj/structure/disposalpipe/segment{dir = 9},/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/hop)
|
||||
"bpN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/hop)
|
||||
"bpO" = (/obj/structure/toilet{dir = 4},/turf/open/floor/plasteel/freezer,/area/crew_quarters/heads/captain)
|
||||
"bpP" = (/obj/structure/cable{icon_state = "1-2"},/obj/machinery/power/apc{dir = 8; name = "Central Maintenance APC"; areastring = "/area/maintenance/central/secondary"; pixel_x = -24},/obj/structure/cable{icon_state = "0-2"},/turf/open/floor/plating,/area/maintenance/central/secondary)
|
||||
"bpQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/effect/turf_decal/loading_area{dir = 4; icon_state = "drain"; name = "drain"},/turf/open/floor/plasteel,/area/hallway/primary/central)
|
||||
@@ -3550,12 +3554,12 @@
|
||||
"bqr" = (/obj/machinery/door/firedoor/heavy,/obj/machinery/door/poddoor/preopen{id = "Biohazard"; name = "biohazard containment door"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/effect/turf_decal/bot,/turf/open/floor/plasteel,/area/science/research)
|
||||
"bqs" = (/obj/machinery/door/firedoor/heavy,/obj/machinery/door/poddoor/preopen{id = "Biohazard"; name = "biohazard containment door"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/effect/turf_decal/bot,/turf/open/floor/plasteel,/area/science/research)
|
||||
"bqt" = (/turf/closed/wall,/area/science/lab)
|
||||
"bqu" = (/obj/effect/turf_decal/stripes/line{dir = 1},/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"bqv" = (/obj/machinery/atmospherics/components/unary/vent_scrubber/on{dir = 4},/obj/effect/turf_decal/stripes/line{dir = 1},/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"bqw" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/effect/turf_decal/stripes/line{dir = 1},/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"bqx" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{icon_state = "2-4"},/obj/effect/turf_decal/stripes/corner{dir = 4},/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"bqy" = (/obj/structure/cable{icon_state = "4-8"},/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"bqz" = (/obj/item/stack/sheet/glass,/obj/structure/table/glass,/obj/item/stack/sheet/glass,/obj/item/stack/sheet/glass,/obj/item/stock_parts/matter_bin,/obj/item/stock_parts/matter_bin,/obj/machinery/light{dir = 4},/obj/item/stock_parts/scanning_module{pixel_x = 2; pixel_y = 3},/obj/item/stock_parts/scanning_module,/obj/machinery/power/apc{dir = 4; name = "Research Lab APC"; areastring = "/area/science/lab"; pixel_x = 26},/obj/structure/cable{icon_state = "0-8"},/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"bqu" = (/obj/item/folder/white,/obj/structure/table,/obj/item/disk/tech_disk,/obj/item/disk/tech_disk,/obj/item/disk/design_disk,/obj/item/disk/design_disk,/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"bqv" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/stock_parts/cell/high/plus,/obj/item/stock_parts/cell/high/plus,/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"bqw" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"bqx" = (/obj/structure/closet/secure_closet/captains,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/components/unary/vent_scrubber/on{dir = 4},/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bqy" = (/obj/structure/chair/comfy/brown{dir = 4},/obj/machinery/camera{c_tag = "Captain's Quarters"; dir = 1},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4},/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bqz" = (/obj/structure/table/wood,/obj/item/storage/box/matches,/obj/item/razor{pixel_x = -4; pixel_y = 2},/obj/item/clothing/mask/cigarette/cigar,/obj/item/reagent_containers/food/drinks/flask/gold,/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
|
||||
"bqA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/plasticflaps/opaque,/turf/open/floor/plating,/area/science/lab)
|
||||
"bqB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/closed/wall,/area/science/lab)
|
||||
"bqC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 5},/obj/structure/cable{icon_state = "1-4"},/turf/open/floor/plating,/area/maintenance/starboard)
|
||||
@@ -3580,16 +3584,16 @@
|
||||
"bqV" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/turf_decal/delivery,/turf/open/floor/plasteel,/area/hallway/primary/central)
|
||||
"bqW" = (/obj/structure/table/reinforced,/obj/machinery/door/window/northleft{dir = 8; icon_state = "left"; name = "Reception Window"},/obj/machinery/door/window/brigdoor{base_state = "rightsecure"; dir = 4; icon_state = "rightsecure"; name = "Head of Personnel's Desk"; req_access = null; req_access_txt = "57"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/flasher{id = "hopflash"; pixel_y = 28},/obj/machinery/door/poddoor/shutters/preopen{id = "hop"; name = "Privacy Shutters"},/turf/open/floor/plasteel,/area/crew_quarters/heads/hop)
|
||||
"bqX" = (/obj/structure/chair/office/dark{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 1},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel,/area/crew_quarters/heads/hop)
|
||||
"bqY" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/carpet,/area/crew_quarters/heads/hop)
|
||||
"bqZ" = (/obj/structure/disposalpipe/segment{dir = 9},/turf/open/floor/carpet,/area/crew_quarters/heads/hop)
|
||||
"bra" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/carpet,/area/crew_quarters/heads/hop)
|
||||
"bqY" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"bqZ" = (/obj/machinery/light_switch{pixel_y = -23},/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"bra" = (/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/hop)
|
||||
"brb" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plasteel,/area/crew_quarters/heads/hop)
|
||||
"brc" = (/obj/structure/chair/office/light,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/effect/turf_decal/stripes/line{dir = 9},/turf/open/floor/plasteel,/area/engine/gravity_generator)
|
||||
"brd" = (/obj/effect/turf_decal/stripes/line{dir = 1},/turf/open/floor/plasteel,/area/engine/gravity_generator)
|
||||
"bre" = (/obj/machinery/airalarm{dir = 8; pixel_x = 24},/obj/structure/cable{icon_state = "1-2"},/obj/effect/turf_decal/stripes/line{dir = 5},/turf/open/floor/plasteel,/area/engine/gravity_generator)
|
||||
"brf" = (/obj/structure/closet/secure_closet/captains,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/components/unary/vent_scrubber/on{dir = 4},/turf/open/floor/carpet,/area/crew_quarters/heads/captain)
|
||||
"brg" = (/obj/structure/chair/comfy/brown{dir = 4},/obj/machinery/camera{c_tag = "Captain's Quarters"; dir = 1},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4},/turf/open/floor/carpet,/area/crew_quarters/heads/captain)
|
||||
"brh" = (/obj/structure/table/wood,/obj/item/storage/box/matches,/obj/item/razor{pixel_x = -4; pixel_y = 2},/obj/item/clothing/mask/cigarette/cigar,/obj/item/reagent_containers/food/drinks/flask/gold,/turf/open/floor/carpet,/area/crew_quarters/heads/captain)
|
||||
"brf" = (/obj/machinery/holopad,/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/hop)
|
||||
"brg" = (/obj/structure/cable{icon_state = "4-8"},/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/hop)
|
||||
"brh" = (/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/hop)
|
||||
"bri" = (/obj/machinery/shower{dir = 1},/obj/item/soap/deluxe,/obj/item/bikehorn/rubberducky,/obj/structure/curtain,/turf/open/floor/plasteel/freezer,/area/crew_quarters/heads/captain)
|
||||
"brj" = (/obj/structure/closet/wardrobe/chemistry_white,/obj/machinery/light_switch{pixel_x = -23},/turf/open/floor/plasteel/white,/area/medical/chemistry)
|
||||
"brk" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/table,/obj/item/book/manual/wiki/chemistry,/obj/item/book/manual/wiki/chemistry{pixel_x = 3; pixel_y = 3},/turf/open/floor/plasteel/white,/area/medical/chemistry)
|
||||
@@ -3631,11 +3635,11 @@
|
||||
"brU" = (/obj/machinery/door/poddoor/shutters/preopen{id = "robotics2"; name = "robotics lab shutters"},/obj/effect/spawner/structure/window,/obj/machinery/door/poddoor/shutters/preopen{id = "robotics2"; name = "robotics lab shutters"},/turf/open/floor/plating,/area/science/robotics/lab)
|
||||
"brV" = (/turf/open/floor/plasteel/white/corner{dir = 2},/area/science/research)
|
||||
"brW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plasteel/white/side{dir = 2},/area/science/research)
|
||||
"brX" = (/obj/item/folder/white,/obj/structure/table,/obj/item/disk/tech_disk,/obj/item/disk/tech_disk,/obj/item/disk/design_disk,/obj/item/disk/design_disk,/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"brY" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/stock_parts/cell/high/plus,/obj/item/stock_parts/cell/high/plus,/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"brZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"bsa" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"bsb" = (/obj/machinery/light_switch{pixel_y = -23},/obj/effect/turf_decal/loading_area{dir = 8},/turf/open/floor/plasteel/white,/area/science/lab)
|
||||
"brX" = (/obj/structure/filingcabinet/chestdrawer,/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"brY" = (/obj/structure/table,/obj/machinery/computer/security/telescreen/rd,/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"brZ" = (/obj/machinery/computer/aifixer{dir = 8},/obj/machinery/requests_console{announcementConsole = 1; department = "Research Director's Desk"; departmentType = 5; name = "Research Director RC"; pixel_x = -2; pixel_y = 30; receive_ore_updates = 1},/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"bsa" = (/obj/structure/table,/obj/machinery/button/door{id = "Biohazard"; name = "Biohazard Shutter Control"; pixel_x = -5; pixel_y = 5; req_access_txt = "47"},/obj/machinery/button/door{id = "rnd2"; name = "Research Lab Shutter Control"; pixel_x = 5; pixel_y = 5; req_access_txt = "47"},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"bsb" = (/obj/structure/chair/office/light{dir = 8},/obj/effect/landmark/start/research_director,/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"bsc" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Research Division Delivery"; req_access_txt = "47"},/obj/effect/turf_decal/delivery,/turf/open/floor/plasteel,/area/science/lab)
|
||||
"bsd" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; dir = 8; freq = 1400; location = "Research Division"},/obj/effect/turf_decal/bot,/turf/open/floor/plasteel,/area/science/lab)
|
||||
"bse" = (/turf/closed/wall/r_wall,/area/science/explab)
|
||||
@@ -3660,8 +3664,8 @@
|
||||
"bsx" = (/obj/effect/turf_decal/bot,/turf/open/floor/plasteel,/area/hallway/primary/central)
|
||||
"bsy" = (/obj/structure/cable{icon_state = "0-2"},/obj/machinery/door/poddoor/shutters/preopen{id = "hop"; name = "Privacy Shutters"},/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/plating,/area/crew_quarters/heads/hop)
|
||||
"bsz" = (/obj/machinery/computer/card{dir = 1},/obj/effect/turf_decal/tile/blue{dir = 1},/obj/effect/turf_decal/tile/blue,/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel,/area/crew_quarters/heads/hop)
|
||||
"bsA" = (/turf/open/floor/carpet,/area/crew_quarters/heads/hop)
|
||||
"bsB" = (/obj/machinery/holopad,/turf/open/floor/carpet,/area/crew_quarters/heads/hop)
|
||||
"bsA" = (/obj/machinery/computer/robotics{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"bsB" = (/obj/structure/table,/obj/item/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/pen,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/folder/white,/obj/item/stamp/rd{pixel_x = 3; pixel_y = -2},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"bsC" = (/obj/machinery/airalarm{dir = 8; pixel_x = 24},/obj/structure/cable{icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plasteel,/area/crew_quarters/heads/hop)
|
||||
"bsD" = (/obj/structure/cable{icon_state = "0-4"},/obj/machinery/power/apc{dir = 8; name = "Gravity Generator APC"; areastring = "/area/engine/gravity_generator"; pixel_x = -25; pixel_y = 1},/obj/structure/table,/obj/item/paper/guides/jobs/engi/gravity_gen{layer = 3},/obj/item/pen/blue,/obj/item/radio/intercom{name = "Station Intercom (General)"; pixel_y = -35},/turf/open/floor/plasteel,/area/engine/gravity_generator)
|
||||
"bsE" = (/obj/structure/cable{icon_state = "4-8"},/turf/open/floor/plasteel,/area/engine/gravity_generator)
|
||||
@@ -3681,6 +3685,7 @@
|
||||
"bsS" = (/obj/effect/turf_decal/loading_area{dir = 1; icon_state = "drain"; name = "drain"},/turf/open/floor/plasteel/white,/area/medical/medbay/central)
|
||||
"bsT" = (/obj/effect/turf_decal/loading_area{dir = 1; icon_state = "drain"; name = "drain"},/mob/living/simple_animal/bot/cleanbot{name = "C.L.E.A.N."},/turf/open/floor/plasteel/white,/area/medical/medbay/central)
|
||||
"bsU" = (/obj/effect/turf_decal/loading_area{dir = 1; icon_state = "drain"; name = "drain"},/obj/effect/turf_decal/loading_area{dir = 1; icon_state = "drain"; name = "drain"},/obj/machinery/requests_console{announcementConsole = 0; department = "Medbay"; departmentType = 1; name = "Medbay RC"; pixel_x = 0; pixel_y = 24},/turf/open/floor/plasteel/white,/area/medical/medbay/central)
|
||||
"bsV" = (/obj/machinery/atmospherics/components/unary/vent_scrubber/on{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"bsW" = (/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel/white,/area/medical/medbay/central)
|
||||
"bsX" = (/obj/structure/table/glass,/obj/item/storage/box/rxglasses,/turf/open/floor/plasteel/white,/area/medical/genetics)
|
||||
"bsY" = (/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/plasteel/white,/area/medical/genetics)
|
||||
@@ -3726,8 +3731,8 @@
|
||||
"btM" = (/obj/effect/landmark/event_spawn,/obj/effect/turf_decal/bot,/turf/open/floor/plasteel,/area/hallway/primary/central)
|
||||
"btN" = (/obj/structure/sign/warning/electricshock{pixel_y = -32},/obj/structure/cable{icon_state = "0-4"},/obj/structure/cable,/obj/machinery/door/poddoor/shutters/preopen{id = "hop"; name = "Privacy Shutters"},/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/plating,/area/crew_quarters/heads/hop)
|
||||
"btO" = (/obj/structure/cable{icon_state = "4-8"},/obj/machinery/vending/cart,/turf/open/floor/plasteel,/area/crew_quarters/heads/hop)
|
||||
"btP" = (/obj/structure/cable{icon_state = "4-8"},/turf/open/floor/carpet,/area/crew_quarters/heads/hop)
|
||||
"btQ" = (/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/carpet,/area/crew_quarters/heads/hop)
|
||||
"btP" = (/obj/machinery/computer/mecha{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"btQ" = (/obj/structure/cable{icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"btR" = (/obj/structure/cable{icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/structure/cable{icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plasteel,/area/crew_quarters/heads/hop)
|
||||
"btS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/closed/wall/r_wall,/area/engine/gravity_generator)
|
||||
"btT" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 1},/turf/closed/wall/r_wall,/area/engine/gravity_generator)
|
||||
@@ -3969,6 +3974,7 @@
|
||||
"byv" = (/turf/open/floor/plasteel/white/side{dir = 8},/area/medical/sleeper)
|
||||
"byw" = (/obj/machinery/sleeper{dir = 8},/turf/open/floor/plasteel,/area/medical/sleeper)
|
||||
"byx" = (/obj/structure/sign/warning/nosmoking,/turf/closed/wall,/area/medical/sleeper)
|
||||
"byy" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"byz" = (/obj/machinery/atmospherics/components/unary/cryo_cell,/turf/open/floor/plasteel,/area/medical/sleeper)
|
||||
"byA" = (/obj/structure/table,/obj/machinery/cell_charger,/turf/open/floor/plasteel,/area/medical/sleeper)
|
||||
"byB" = (/obj/structure/table/glass,/obj/machinery/camera{c_tag = "Medbay Cryogenics"; network = list("ss13","medbay"); dir = 2},/obj/item/reagent_containers/glass/beaker/cryoxadone,/obj/item/reagent_containers/glass/beaker/cryoxadone,/turf/open/floor/plasteel,/area/medical/sleeper)
|
||||
@@ -3995,9 +4001,9 @@
|
||||
"byW" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plasteel/white/side{dir = 5},/area/science/research)
|
||||
"byX" = (/obj/structure/disposalpipe/segment{dir = 9},/obj/structure/cable{icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden,/turf/open/floor/plasteel/white,/area/science/research)
|
||||
"byY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/components/unary/vent_pump/on{dir = 8},/turf/open/floor/plasteel/white/side{dir = 9},/area/science/research)
|
||||
"byZ" = (/obj/structure/filingcabinet/chestdrawer,/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"bza" = (/obj/structure/table,/obj/machinery/computer/security/telescreen/rd,/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"bzb" = (/obj/machinery/computer/aifixer{dir = 8},/obj/machinery/requests_console{announcementConsole = 1; department = "Research Director's Desk"; departmentType = 5; name = "Research Director RC"; pixel_x = -2; pixel_y = 30; receive_ore_updates = 1},/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"byZ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/components/unary/vent_pump/on{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"bza" = (/obj/structure/disposalpipe/segment{dir = 10},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"bzb" = (/obj/machinery/airalarm{dir = 8; pixel_x = 24},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"bzc" = (/obj/structure/rack,/obj/item/circuitboard/aicore{pixel_x = -2; pixel_y = 4},/obj/effect/turf_decal/stripes/line{dir = 9},/turf/open/floor/plasteel/white,/area/crew_quarters/heads/hor)
|
||||
"bzd" = (/obj/machinery/status_display/ai{pixel_y = 32},/obj/effect/landmark/event_spawn,/obj/effect/turf_decal/stripes/line{dir = 1},/turf/open/floor/plasteel/white,/area/crew_quarters/heads/hor)
|
||||
"bze" = (/obj/effect/landmark/xmastree/rdrod,/obj/effect/turf_decal/stripes/line{dir = 5},/turf/open/floor/plasteel/white,/area/crew_quarters/heads/hor)
|
||||
@@ -4057,9 +4063,9 @@
|
||||
"bAg" = (/obj/effect/spawner/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plating,/area/security/checkpoint/science)
|
||||
"bAh" = (/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/plating,/area/security/checkpoint/science)
|
||||
"bAi" = (/obj/structure/cable{icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plasteel/white,/area/science/research)
|
||||
"bAj" = (/obj/structure/table,/obj/machinery/button/door{id = "Biohazard"; name = "Biohazard Shutter Control"; pixel_x = -5; pixel_y = 5; req_access_txt = "47"},/obj/machinery/button/door{id = "rnd2"; name = "Research Lab Shutter Control"; pixel_x = 5; pixel_y = 5; req_access_txt = "47"},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"bAk" = (/obj/structure/chair/office/light{dir = 8},/obj/effect/landmark/start/research_director,/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"bAl" = (/obj/machinery/computer/robotics{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"bAj" = (/obj/machinery/suit_storage_unit/cmo,/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bAk" = (/obj/machinery/computer/crew,/obj/machinery/requests_console{announcementConsole = 1; department = "Chief Medical Officer's Desk"; departmentType = 5; name = "Chief Medical Officer RC"; pixel_y = 32},/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bAl" = (/obj/machinery/computer/med_data,/obj/machinery/airalarm{pixel_y = 23},/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bAm" = (/obj/structure/rack,/obj/item/aicard,/obj/effect/turf_decal/stripes/line{dir = 8},/turf/open/floor/plasteel/white,/area/crew_quarters/heads/hor)
|
||||
"bAn" = (/obj/machinery/holopad,/turf/open/floor/plasteel/white,/area/crew_quarters/heads/hor)
|
||||
"bAo" = (/obj/structure/displaycase/labcage,/obj/machinery/light{dir = 4},/obj/effect/turf_decal/stripes/line{dir = 4},/turf/open/floor/plasteel/white,/area/crew_quarters/heads/hor)
|
||||
@@ -4131,9 +4137,9 @@
|
||||
"bBC" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/obj/effect/turf_decal/tile/red{dir = 1},/obj/effect/turf_decal/tile/red,/obj/effect/turf_decal/tile/red{dir = 4},/turf/open/floor/plasteel,/area/security/checkpoint/science)
|
||||
"bBD" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/open/floor/plasteel/white/side{dir = 9},/area/science/research)
|
||||
"bBE" = (/obj/effect/spawner/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plating,/area/crew_quarters/heads/hor)
|
||||
"bBF" = (/obj/structure/table,/obj/item/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/pen,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/folder/white,/obj/item/stamp/rd{pixel_x = 3; pixel_y = -2},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"bBG" = (/obj/machinery/atmospherics/components/unary/vent_scrubber/on{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"bBH" = (/obj/machinery/computer/mecha{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"bBF" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/obj/machinery/light{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bBG" = (/obj/machinery/power/apc{dir = 8; name = "RD Office APC"; areastring = "/area/crew_quarters/heads/hor"; pixel_x = -25},/obj/structure/cable,/obj/machinery/light_switch{pixel_y = -23},/obj/item/twohanded/required/kirbyplants/dead,/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"bBH" = (/obj/machinery/keycard_auth{pixel_y = -24},/obj/machinery/light,/obj/machinery/computer/card/minor/rd{dir = 1},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"bBI" = (/obj/structure/rack,/obj/item/taperecorder{pixel_x = -3},/obj/item/paicard{pixel_x = 4},/obj/effect/turf_decal/stripes/line{dir = 10},/turf/open/floor/plasteel/white,/area/crew_quarters/heads/hor)
|
||||
"bBJ" = (/obj/effect/turf_decal/stripes/line{dir = 2},/turf/open/floor/plasteel/white,/area/crew_quarters/heads/hor)
|
||||
"bBK" = (/obj/machinery/modular_computer/console/preset/research{dir = 8},/obj/effect/turf_decal/stripes/line{dir = 6},/turf/open/floor/plasteel/white,/area/crew_quarters/heads/hor)
|
||||
@@ -4191,11 +4197,11 @@
|
||||
"bCK" = (/obj/structure/cable{icon_state = "1-4"},/obj/structure/cable{icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 6},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/effect/landmark/event_spawn,/turf/open/floor/plasteel/white,/area/science/research)
|
||||
"bCL" = (/obj/structure/cable{icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plasteel/white/side{dir = 9},/area/science/research)
|
||||
"bCM" = (/obj/machinery/door/airlock/command/glass{dir = 4; name = "Research Director"; req_access_txt = "30"},/obj/structure/cable{icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"bCN" = (/obj/structure/cable{icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"bCO" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"bCP" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/components/unary/vent_pump/on{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"bCQ" = (/obj/structure/disposalpipe/segment{dir = 10},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"bCR" = (/obj/machinery/airalarm{dir = 8; pixel_x = 24},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"bCN" = (/obj/structure/table,/obj/item/cartridge/signal/toxins,/obj/item/cartridge/signal/toxins{pixel_x = -4; pixel_y = 2},/obj/item/cartridge/signal/toxins{pixel_x = 4; pixel_y = 6},/obj/machinery/camera{c_tag = "Research Director's Office"; dir = 1; network = list("ss13","rd")},/obj/item/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"bCO" = (/obj/structure/closet/secure_closet/RD,/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"bCP" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"bCQ" = (/obj/machinery/suit_storage_unit/rd,/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"bCR" = (/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bCS" = (/obj/machinery/rnd/experimentor,/turf/open/floor/engine,/area/science/explab)
|
||||
"bCT" = (/obj/effect/landmark/blobstart,/obj/effect/landmark/xeno_spawn,/turf/open/floor/engine,/area/science/explab)
|
||||
"bCU" = (/obj/machinery/atmospherics/pipe/manifold/general/visible{dir = 8},/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/plating,/area/maintenance/starboard)
|
||||
@@ -4248,10 +4254,10 @@
|
||||
"bDP" = (/obj/structure/table,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/pen,/obj/machinery/requests_console{announcementConsole = 0; department = "Medbay"; departmentType = 1; name = "Medbay RC"; pixel_y = 30},/turf/open/floor/plasteel/white,/area/medical/medbay/central)
|
||||
"bDQ" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/obj/machinery/light{dir = 1; pixel_y = 16},/turf/open/floor/plasteel/white,/area/medical/medbay/central)
|
||||
"bDR" = (/turf/closed/wall,/area/crew_quarters/heads/cmo)
|
||||
"bDS" = (/obj/machinery/suit_storage_unit/cmo,/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bDT" = (/obj/machinery/computer/crew,/obj/machinery/requests_console{announcementConsole = 1; department = "Chief Medical Officer's Desk"; departmentType = 5; name = "Chief Medical Officer RC"; pixel_y = 32},/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bDU" = (/obj/machinery/computer/med_data,/obj/machinery/airalarm{pixel_y = 23},/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bDV" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/obj/machinery/light{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bDS" = (/obj/structure/chair/office/light,/obj/effect/landmark/start/chief_medical_officer,/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bDT" = (/obj/machinery/keycard_auth{pixel_x = 24},/obj/structure/disposalpipe/segment,/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bDU" = (/obj/structure/table/glass,/obj/item/paper_bin{pixel_x = -2; pixel_y = 5},/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bDV" = (/obj/structure/table/glass,/obj/item/folder/white,/obj/item/stamp/cmo,/obj/item/clothing/glasses/hud/health,/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bDW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/open/floor/plating,/area/maintenance/aft)
|
||||
"bDX" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plating,/area/maintenance/aft)
|
||||
"bDY" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/open/floor/plating,/area/maintenance/aft)
|
||||
@@ -4267,12 +4273,12 @@
|
||||
"bEi" = (/obj/structure/table,/obj/item/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/pen,/obj/effect/turf_decal/tile/red,/obj/effect/turf_decal/tile/red{dir = 4},/obj/effect/turf_decal/tile/red{dir = 8},/turf/open/floor/plasteel,/area/security/checkpoint/science)
|
||||
"bEj" = (/obj/structure/cable{icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel/white,/area/science/research)
|
||||
"bEk" = (/obj/machinery/light{dir = 4},/turf/open/floor/plasteel/white/side{dir = 9},/area/science/research)
|
||||
"bEl" = (/obj/machinery/power/apc{dir = 8; name = "RD Office APC"; areastring = "/area/crew_quarters/heads/hor"; pixel_x = -25},/obj/structure/cable,/obj/machinery/light_switch{pixel_y = -23},/obj/item/twohanded/required/kirbyplants/dead,/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"bEm" = (/obj/machinery/keycard_auth{pixel_y = -24},/obj/machinery/light,/obj/machinery/computer/card/minor/rd{dir = 1},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"bEn" = (/obj/structure/table,/obj/item/cartridge/signal/toxins,/obj/item/cartridge/signal/toxins{pixel_x = -4; pixel_y = 2},/obj/item/cartridge/signal/toxins{pixel_x = 4; pixel_y = 6},/obj/machinery/camera{c_tag = "Research Director's Office"; dir = 1; network = list("ss13","rd")},/obj/item/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"bEo" = (/obj/structure/closet/secure_closet/RD,/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"bEp" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"bEq" = (/obj/machinery/suit_storage_unit/rd,/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
|
||||
"bEl" = (/obj/structure/table/glass,/obj/item/pen,/obj/item/clothing/neck/stethoscope,/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/mob/living/simple_animal/pet/cat/Runtime,/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bEm" = (/obj/structure/disposalpipe/segment,/obj/item/radio/intercom{pixel_x = 25},/obj/machinery/camera{c_tag = "Chief Medical Office"; network = list("ss13","medbay"); dir = 8; pixel_y = -22},/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bEn" = (/obj/machinery/atmospherics/components/unary/vent_pump/on,/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bEo" = (/obj/structure/chair{dir = 1},/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bEp" = (/obj/structure/disposalpipe/segment,/obj/machinery/light_switch{pixel_x = 28},/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bEq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bEr" = (/obj/machinery/camera{c_tag = "Experimentor Lab Chamber"; dir = 1; network = list("ss13","rd")},/obj/machinery/light,/obj/structure/sign/warning/nosmoking{pixel_y = -32},/turf/open/floor/engine,/area/science/explab)
|
||||
"bEs" = (/obj/structure/cable{icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/obj/structure/cable{icon_state = "2-4"},/turf/open/floor/plating,/area/maintenance/starboard)
|
||||
"bEt" = (/obj/machinery/door/airlock/maintenance/abandoned{dir = 4; req_one_access_txt = "8;12"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{icon_state = "4-8"},/turf/open/floor/plating,/area/maintenance/starboard)
|
||||
@@ -4304,9 +4310,9 @@
|
||||
"bET" = (/obj/structure/table,/obj/item/storage/box/bodybags{pixel_x = 3; pixel_y = 3},/obj/item/storage/box/rxglasses,/turf/open/floor/plasteel/white,/area/medical/sleeper)
|
||||
"bEU" = (/obj/structure/disposalpipe/trunk,/obj/machinery/disposal/bin,/turf/open/floor/plasteel/white,/area/medical/sleeper)
|
||||
"bEV" = (/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/plating,/area/crew_quarters/heads/cmo)
|
||||
"bEW" = (/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bEX" = (/obj/structure/chair/office/light,/obj/effect/landmark/start/chief_medical_officer,/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bEY" = (/obj/machinery/keycard_auth{pixel_x = 24},/obj/structure/disposalpipe/segment,/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bEW" = (/obj/machinery/holopad,/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bEX" = (/obj/structure/disposalpipe/segment{dir = 5},/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bEY" = (/obj/structure/table,/obj/item/cartridge/medical{pixel_x = -2; pixel_y = 6},/obj/item/cartridge/medical{pixel_x = 6; pixel_y = 3},/obj/item/cartridge/medical,/obj/item/cartridge/chemistry{pixel_y = 2},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bEZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plating,/area/maintenance/aft)
|
||||
"bFa" = (/turf/closed/wall/r_wall,/area/science/xenobiology)
|
||||
"bFb" = (/turf/closed/wall,/area/science/storage)
|
||||
@@ -4367,10 +4373,9 @@
|
||||
"bGe" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plasteel/white,/area/medical/medbay/central)
|
||||
"bGf" = (/obj/structure/disposalpipe/segment{dir = 10},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plasteel/white,/area/medical/medbay/central)
|
||||
"bGg" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/open/floor/plasteel/white,/area/medical/medbay/central)
|
||||
"bGh" = (/obj/structure/table/glass,/obj/item/paper_bin{pixel_x = -2; pixel_y = 5},/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bGi" = (/obj/structure/table/glass,/obj/item/folder/white,/obj/item/stamp/cmo,/obj/item/clothing/glasses/hud/health,/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bGj" = (/obj/structure/table/glass,/obj/item/pen,/obj/item/clothing/neck/stethoscope,/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/mob/living/simple_animal/pet/cat/Runtime,/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bGk" = (/obj/structure/disposalpipe/segment,/obj/item/radio/intercom{pixel_x = 25},/obj/machinery/camera{c_tag = "Chief Medical Office"; network = list("ss13","medbay"); dir = 8; pixel_y = -22},/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bGh" = (/obj/machinery/computer/card/minor/cmo{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bGi" = (/obj/machinery/atmospherics/components/unary/vent_scrubber/on{dir = 8},/obj/machinery/computer/security/telescreen/cmo{dir = 1; pixel_y = -24},/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bGj" = (/obj/structure/closet/secure_closet/CMO,/obj/machinery/light{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bGl" = (/turf/open/floor/engine,/area/science/xenobiology)
|
||||
"bGm" = (/obj/machinery/camera{c_tag = "Xenobiology Test Chamber"; dir = 2; network = list("xeno","rd")},/obj/machinery/light{dir = 1; pixel_y = 16},/turf/open/floor/engine,/area/science/xenobiology)
|
||||
"bGn" = (/obj/machinery/portable_atmospherics/canister/toxins,/obj/effect/turf_decal/delivery,/turf/open/floor/plasteel,/area/science/storage)
|
||||
@@ -4444,9 +4449,6 @@
|
||||
"bHD" = (/obj/structure/table,/obj/item/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/item/storage/box/syringes,/obj/item/reagent_containers/glass/bottle/epinephrine{pixel_x = 7; pixel_y = -3},/obj/item/reagent_containers/glass/bottle/morphine{pixel_x = 8; pixel_y = -3},/obj/item/reagent_containers/syringe{pixel_x = 6; pixel_y = -3},/obj/item/radio/intercom{freerange = 0; frequency = 1485; listening = 1; name = "Station Intercom (Medbay)"; pixel_x = 30},/turf/open/floor/plasteel/white,/area/medical/sleeper)
|
||||
"bHE" = (/obj/item/radio/intercom{broadcasting = 0; freerange = 0; frequency = 1485; listening = 1; name = "Station Intercom (Medbay)"; pixel_x = -30},/obj/machinery/camera{c_tag = "Medbay South"; network = list("ss13","medbay"); dir = 4},/turf/open/floor/plasteel/white,/area/medical/medbay/central)
|
||||
"bHF" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/components/unary/vent_scrubber/on,/turf/open/floor/plasteel/white,/area/medical/medbay/central)
|
||||
"bHG" = (/obj/machinery/atmospherics/components/unary/vent_pump/on,/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bHH" = (/obj/structure/chair{dir = 1},/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bHI" = (/obj/structure/disposalpipe/segment,/obj/machinery/light_switch{pixel_x = 28},/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bHJ" = (/obj/machinery/airalarm{dir = 4; pixel_x = -22},/obj/machinery/light/small{dir = 8},/turf/open/floor/plasteel,/area/science/storage)
|
||||
"bHK" = (/turf/open/floor/plasteel,/area/science/storage)
|
||||
"bHL" = (/obj/effect/decal/cleanable/oil,/obj/item/cigbutt,/obj/machinery/atmospherics/components/unary/vent_scrubber/on{dir = 4},/turf/open/floor/plasteel,/area/science/storage)
|
||||
@@ -4514,9 +4516,6 @@
|
||||
"bIV" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plasteel/white,/area/medical/medbay/central)
|
||||
"bIW" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden,/turf/open/floor/plasteel/white,/area/medical/medbay/central)
|
||||
"bIX" = (/obj/machinery/door/airlock/command/glass{dir = 4; name = "Chief Medical Officer"; req_access_txt = "40"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bIY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bIZ" = (/obj/machinery/holopad,/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bJa" = (/obj/structure/disposalpipe/segment{dir = 5},/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bJb" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/closed/wall,/area/crew_quarters/heads/cmo)
|
||||
"bJc" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plating,/area/maintenance/aft)
|
||||
"bJd" = (/obj/structure/cable{icon_state = "1-2"},/obj/structure/disposalpipe/sorting/mail{sortType = 10},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plating,/area/maintenance/aft)
|
||||
@@ -4591,10 +4590,6 @@
|
||||
"bKu" = (/obj/structure/disposalpipe/junction/flip{dir = 2},/obj/machinery/atmospherics/pipe/manifold4w/scrubbers,/turf/open/floor/plasteel/white,/area/medical/medbay/central)
|
||||
"bKv" = (/obj/structure/disposalpipe/segment{dir = 9},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plasteel/white,/area/medical/medbay/central)
|
||||
"bKw" = (/obj/effect/spawner/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plating,/area/crew_quarters/heads/cmo)
|
||||
"bKx" = (/obj/structure/table,/obj/item/cartridge/medical{pixel_x = -2; pixel_y = 6},/obj/item/cartridge/medical{pixel_x = 6; pixel_y = 3},/obj/item/cartridge/medical,/obj/item/cartridge/chemistry{pixel_y = 2},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bKy" = (/obj/machinery/computer/card/minor/cmo{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bKz" = (/obj/machinery/atmospherics/components/unary/vent_scrubber/on{dir = 8},/obj/machinery/computer/security/telescreen/cmo{dir = 1; pixel_y = -24},/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bKA" = (/obj/structure/closet/secure_closet/CMO,/obj/machinery/light{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
|
||||
"bKB" = (/obj/structure/sign/warning/electricshock,/turf/closed/wall/r_wall,/area/science/xenobiology)
|
||||
"bKC" = (/obj/structure/disposaloutlet{dir = 1},/obj/structure/disposalpipe/trunk,/turf/open/floor/engine,/area/science/xenobiology)
|
||||
"bKD" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/obj/effect/turf_decal/bot,/turf/open/floor/plasteel,/area/science/storage)
|
||||
@@ -7070,39 +7065,39 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayUayVayUayUayUayUayUayUayVayUaaaauSaBdaMAaKUaMBaMCaMDaMEaMFaweaMGaLbaMHaIkaLdaMIaMJaMKaMLaMLaMMaLeaLeaLeaLeaLeaLeaLeaLiaLeaLdaMNaLeaLeaMOaMPaMQaMQaMQaMRaMSaMQaMTaMQaMUaMQaMVaMWaMXaMYaMZaIPaKlaIPaIPaIPaIPaIPaIPaLzaIPaIPaNaaNbaNcaNdaNeaNfaNgaIPaIPaLzaIPaNhaIPaIPaIPaIPaIPaIPaIPaNiaIPaOCaNoaNpaNqaNraStaNsbiJaOwaOxaOyaBTaNuaOuaOuaHBaOzaJiaNvaKuaNwaNxaNyaJiaHSaHSaNzaHSaHSaHSaNAaNBaNAaHTaHUaFbaNCaMpaMpaNDaMpaNEaFcaFcaFcaFcaFcaFcaFcaNFaFcaFfaFfaFgaDYaNGaNHaCwaNIaNJaRkaNLaNMaMzaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauSaAaauSayUaxyayUaNNaNOaNPaNQayUaxyayUayUauSayWaxBaKUaNRaNSaMDaMEaMFaweaNTaLbaxBaIkaLdaLeaNUaNVaNVaNVaNWaNXaNYaNVaNZaNVaNVaNVaOaaNVaObaNVaNVaNVaOcaOdaOeaOfaOfaOfaOgaOhaOiaOjaOkaOlaOmaOnaOoaOpaIPaOqaOqaOqaOraOqaOqaOqaOqaOsaOqaOqaOqaOqaOqaOqaOtaOqaOqaOqaOqaPPaOqaOqaOqaOqaOqaOqaOtaOqaIPaIPaIPaJdaPLaStaStaStaStaRiaMcaLQaPOaNnaBTaBTaPKaBTaBTaBTaJiaOAaOBaODaWFaOEaJiaHSaOFaOGaOHaOIaOHaOHaOJaOKaHTaHUaFbaOLaOLaOMaONaOOaOOaOPaFbaOQaORaOSaCwaFfaGNaOTaFfaFfaOUaOVaCwaOWaCwaOXaOYaOZaPaaPbaMzaMzaMzaMzaMzaMzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaweawfaweayUaBcayUayWaxBaxBayXayUaBcayUaPcaPdaPeaxBaKUaPfaPgaKXaPhaKZaweaPiaLbaxBaPjaPjaPjaPkaPlaPlaPlaPlaPlaPlaPmaPnaPlaPoaPlaPlaPlaPpaPqaPraPqaPsaPtaPuaLeaLeaPvaPwaPxaLeaPyaPzaLeaPAaPAaPMaRgaRmaILaILaILaILaILaILaILaILaPCaPDaPEaPFaPEaPEaPEaPGaPEaPHaPEaPIaPCaILaILaILaILaILaILaILaILaPMaTSaUTaJdaVjaRiaRiaRiaRiaKsaMcaLQaRjaKsaRsaKsaKsaVnaJiaRnaJiaJiaPRaJkaJiaJiaJiaJiaOHaPSaPTaPTaPTaPTaPUaOHaHTaHUaFbaPVaMpaOMaONaMpaMpaPWaFbaPXaPYaPZaCwaFfaIiaQaaQbaQbaQcaQdaQeaQfaCwaQgaQhaQiaQjaQjaQkaQlaQlaQmaQlaQnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQoaaaaaaaaaaxwaXfaxyaxzaQpaxBaQqaPeaxBaxBaQraQqaxBaQpaPeaxBaxBaxBaQsaQtaQuaQvaQwaQxaQxaQyaQzaxBaPjaQAaPjaQBaPlaQCbiKaQEaQFaQGaQDaQHaQIaQJaQKaQLaQMaPpaQNaQOaQPaPsaQQaPuaPuaQRaPuaPuaPAaPAaQSaQTaPAaPAaPAaQUbiLbbeaILaaaaaaaaaaaaaaaaaaaaaaPCaQVaQWaQXaQYaQZaRaaRbaRcaRdaReaRfaPCaaaaaaaaaaaaaaaaaaaaaaILaIOaIPaIPbiMaKsaKsaKsaRlaKsaKsaKnaSzaRjaKsaSraKsaKsaKsbaEaSBaRoaRpaRqaRraRtaRuaSuaJiaOHaRvaVsbiNbiNbiOaRxaOHaHTaRyaFbaRzaRzaOMaONaRAaRAaRBaFbaFbaRCaFbaCwaRDaGNaOTaREaRFaOUaOVaCwaCwaCwaMzaRGaRHaMzaMzaMzaMzaMzaMzaMzaRIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaweaRJawgaRKaRLaRLaRLaRLaRLaRLaRLaRLaRKaRLaRMaxBaxBaIkaxBaRNaROaxBaRPaxBaRQaRRaRSaPjaRTaPjaQBaPlaRUaQDaQDaQDaQDaQDaQHaQDaQDaQDaQDaQMaPpaRVaQOaQOaPsaQQaPuaRWaRXaRXaRYaPAaRZaSaaSbaScaSdaSeaIPbiLbbeaILaaaaaaaaaaaaaPCaPCaPCaPCaSfaSgaShaSiaSjaSkaSlaSmaSnaSoaSpaPCaPCaPCaPCaaaaaaaaaaaaaILaIOaIPaIPaSqaKsaKsaSsaStaSwbiPaSAaTVaRjaSsaTTaSwaKsaTUaJiaWKaSCaSDaSEaSFaSGaSHaSBaSIaSJaSKbiQaSLaSMbiRaSNaOHaHTaHUaFbaMpaMpaOMaONaRAaRAaMpaSOaSPaMpaSQaCwaKSaSRaSSaREaREaSTaSUaSVaCwaSWaSXaQhaQiaQjaQjaSYaQlaQlaQlaQlaSZaTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauSauSauSauSayUayUayUayUayUayUayUayUauSauSaweaIkaTbaTcaTcaTdaTcaTcaTcaTcaTeaTcaTcaPjaRTaTfaTgaPlaThaQDaTiaTjaTkaTlaTmaTnaToaQDaQDaTpaPpaTqaTraTsaPsaQQaPuaTtaTuaTvaTwaPAaTxaTyaSbaTzaTAaSeaIPaPBbbeaILaILaTBaPCaPCaPCaTCaTDaTEaTFaTGaTHaTIaTJaTHaTKaTHaTLaTMaTNaTOaTPaTQaPCaPCaPCaTBaILaILaLzaLzbbfaJdaKsaKsaSsaVmaSwbiSaWIaZGaKqaSsbiTaSwaKsaKsaVoaSBaSBaWJaTXaTYaTZaUaaSBaUbaUcaUdbiQaUeaUfbiRaUgaUhaHTaHUaFbaUiaUiaOMaONaUjaMpaMpaUkaMpaUlaUmaCwaUnaUoaUpaREaREaUqaUraFfaCwaUsaQjaQhaQiaQjaPbaMzaMzaMzaMzaMzaMzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQoaaaaaaaaaaxwaXfaxyaxzaQpaxBaQqaPeaxBaxBaQraQqaxBaQpaPeaxBaxBaxBaQsaQtaQuaQvaQwaQxaQxaQyaQzaxBaPjaQAaPjaQBaPlaQCbiKaQEaQFaQGaQDaQHaQIaQJaQKaQLaQMaPpaQNaQOaQPaPsaQQaPuaPuaQRaPuaPuaPAaPAaQSaQTaPAaPAaPAaQUbiLbbeaILaaaaaaaaaaaaaaaaaaaaaaPCaKnaQVaQWaQXaQYaQZaRaaRbaRcaRdaReaPCaaaaaaaaaaaaaaaaaaaaaaILaIOaIPaIPbiMaKsaKsaKsaRlaKsaKsaRfaSfaRjaKsaSraKsaKsaKsbaEaSBaRoaRpaRqaRraRtaRuaSuaJiaOHaRvaVsbiNbiNbiOaRxaOHaHTaRyaFbaRzaRzaOMaONaRAaRAaRBaFbaFbaRCaFbaCwaRDaGNaOTaREaRFaOUaOVaCwaCwaCwaMzaRGaRHaMzaMzaMzaMzaMzaMzaMzaRIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaweaRJawgaRKaRLaRLaRLaRLaRLaRLaRLaRLaRKaRLaRMaxBaxBaIkaxBaRNaROaxBaRPaxBaRQaRRaRSaPjaRTaPjaQBaPlaRUaQDaQDaQDaQDaQDaQHaQDaQDaQDaQDaQMaPpaRVaQOaQOaPsaQQaPuaRWaRXaRXaRYaPAaRZaSaaSbaScaSdaSeaIPbiLbbeaILaaaaaaaaaaaaaPCaPCaPCaPCaSgaShaSiaSjaSkaSlaSmaSnaSoaSpaSvaPCaPCaPCaPCaaaaaaaaaaaaaILaIOaIPaIPaSqaKsaKsaSsaStaSwbiPaSzaSAaRjaSsaTTaSwaKsaTUaJiaWKaSCaSDaSEaSFaSGaSHaSBaSIaSJaSKbiQaSLaSMbiRaSNaOHaHTaHUaFbaMpaMpaOMaONaRAaRAaMpaSOaSPaMpaSQaCwaKSaSRaSSaREaREaSTaSUaSVaCwaSWaSXaQhaQiaQjaQjaSYaQlaQlaQlaQlaSZaTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauSauSauSauSayUayUayUayUayUayUayUayUauSauSaweaIkaTbaTcaTcaTdaTcaTcaTcaTcaTeaTcaTcaPjaRTaTfaTgaPlaThaQDaTiaTjaTkaTlaTmaTnaToaQDaQDaTpaPpaTqaTraTsaPsaQQaPuaTtaTuaTvaTwaPAaTxaTyaSbaTzaTAaSeaIPaPBbbeaILaILaTBaPCaPCaPCaTCaTDaTEaTFaTGaTHaTIaTJaTHaTKaTHaTLaTMaTNaTOaTPaTQaPCaPCaPCaTBaILaILaLzaLzbbfaJdaKsaKsaSsaVmaSwbiSaWIaTVaKqaSsbiTaSwaKsaKsaVoaSBaSBaWJaTXaTYaTZaUaaSBaUbaUcaUdbiQaUeaUfbiRaUgaUhaHTaHUaFbaUiaUiaOMaONaUjaMpaMpaUkaMpaUlaUmaCwaUnaUoaUpaREaREaUqaUraFfaCwaUsaQjaQhaQiaQjaPbaMzaMzaMzaMzaMzaMzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayUaAcazaaUtaTcaUuaUvaUwaUxaUwaUyaUzaUwaTcaRTaRTaUAaUBaPlaUCaUDaUEaUFaUGaUHaUIaUJaUKaULaUMaQMaPpaPpaPpaPpaPsaQQaPuaPuaPuaPuaPuaPAaUNaUOaUPaTzaUQaSeaIPaIPaLyaIRaIRaURaUSaZQaPCaUUaUVaUWaUXaUYaUXaUZaVaaVbaVcaVdaVeaVfaVdaVgaVhaViaPCaZRaUSaVkaVlaIRaIOaIPaxxaJdaSyaKsaSsbiUaSwaKsaZMaZMaKsaSsaStaSwaKsaKsaVoaSBaSBbgZbiVaVpaVpaUaaWLaJiaVraUdbiWbiXbiXbiYaUgaVtaHTaVuaFbaFbaFbaOMaONaVvaVwaMpaVxaVyaKJaVzaCwaFfaSRaSSaREaREaVAaSUaVBaCwaVCaQjaQhaQiaQjaPbaMzaZNaZOaZPaMzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVDayUayUayWaxBaTcaVEaVFaVGaUuaVHaVIaUzaUwaTcaVJaVKaVLaPjaPlaVMaVNaVOaVPaVQaVQaVRaVQaVQaVQaVSaVTaPlaVUaVVaVWaVXaVYaVZaWaaWbaWcaWdaWdaWdaWdaWdaWdaWdaWdbbVaIPaIPaIPaIPaWeaWfaWgaWhaWiaWjaWkaWlaWmaWnaWoaWpaWqaWraWsaWtaWuaWvaWkaWwaWxaWyaWzaWAaWBaWCaWDaWEaIPaIPbbXbiZaKsaKsaKsaKsbjaaZMaZMaKsaSsaStaSwaKsaKsaVoaSBaSBaSBaSBaSBaSBaUaaYoaJiaOHaUdaRwaRwaRwaRwaUgaOHaHTaWMaWNaWOaWPaWQaWRaWSaWSaWTaOMaOMaOMaOMaWUaREaREaREaREaREaWVaWWaWXaWYaWZaXaaXbaXcaPaaXdaMzaZPaZOaZOaMzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXeaXgaxybhaaxBaxBaTcaXhaXiaXjaXkaXkaXlaXmaXnaTcaXoaRTaVLaXpaXpaXpaXqaXraXpaXsaXtaXuaXvaXwaXwaXxaXyaPlaXzaXAaXBaXCaXDaXEaXBaXFaXGaXGaXHaXIaXJaXKaXLaXMaWdbbVaIPaXNaXOaXPaXQaXRaXSaPCaXTaXUaXVaXWaXXaXYaXYaXZaYaaYbaYcaYdaYeaYfaXVaYgaXTaPCaXSaXRaYhaYiaXOaYjaIPaIPbebbbXbiZaKsaKsaKsaKsaKsaKsaKsaRlbjbaKsaKsaKsaJiaYpaYqaSBaSBaYraSBaYXbhyaJiaYsaYtaRwaYuaYuaYvaYtaYwaYxaYyaYzaYzaYAaYBaYCaOMaOMaYDaOMaOMaOMaOMaWUaYEaYFaYFaYFaYFaYFaYGaYHaYIaYJaYKaYLaYMaQjaYNaMzbjhaZOaZNaMzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayUayUayUayWaYOaYPaYQaYRaYSaYSaYSaYSaYTaUuaTcaYUaYVaVLaXpaYWbaKaYYaYZaXpaZaaZbaZcaPlaZdaZeaZfaZgaPlaZhaZiaZjaZkaZjaZlaZmaZnaWdaZoaZpaZpaZqaZraZsaZtaWdbbYaLzaZuaZvaZvaZvaZvaZvaZvaZwaZxaZyaXXaXZaZzaZAaZAaZBaZAaZAaZCaYbaYeaZDaZEaZFaZDaZDaZDaZDaZDaZDbjiaIPaIPbgTbjjbbXbiZbjkaSwbjlaKsaKsaKsaWGaKsaKsbjmaYkaJibjnaJiaZSaYlaZTaZTaJiaJiaJiaZUaRwaRwaZVaZWaZXaZYaZWaHTaZZbaababaFbbacbadbaeaVwaMpbafaUkaVwbagaCwbahaFfbaiaREaREbaiaFfbajaCwbakbalbamaQiaQjaPbaMzaMzaMzaMzaMzaMzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayUbanaPebaoaTcaUwaVFaUwaUubapaUwbaqaUwaTcbarbasbataXpaXpaXpbaubavaXpaZbbawaZbaPlaZdaZeaZfaZgaPlaZhaZibaxbayaZjbazaZmaZnaWdbaAaZpaZpbaBbaCaZpbaDbbxaIPaIPbbZaZvbaFbaGbaHbaIbaJbcebaLbaMbaNbaOaZAaZAbaPbaQbaPaZAaZAbaRbaSbaTbaUbaVbaWbaXbaYbaZbbaaZDbjoaIPaIPbgTbgTbjpbbXaJdaJdaJdbbbaSqbbbaJdbbcaJdaJdaJdaJibcbbdZbbdbbdbbdbbdbcfbdHaJiaZWbbgbbgaZWbaabaabaabaaaHTaZZbaababaFbaFbaFbbbhaFbbbhaFbbbhaFbaFbaCwaCwbbibbibbibbibbibbiaCwaCwbbjaQjbbkaQiaQjaQjbblaQlaQlaQlaQlaSZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadauSauSayUayUayUayUayUayUayUayUauSauSaweaxBaxBaTcaTcaTdaTcaTcaTcaTcaTeaTcaTcbbmbbnbboaXpaYWbbpbaubbqaXpbbrbbsbbraPlaZdaZeaZfaZgaPlbbtaZiaZjbbubbvbbwaZmaZnbjqaZsbbybbzbbAbbBaZpbaDbbCaIPaIPaXNbbDbbEbaJbbFbbGbbGbbHbbIbbJbaNbbKaZAaZAbaPbbLbaPaZAaZAbbMbaSbbNbbObbPbbQbbRbbSbbabbTaZDbjobbUaIPaIPbaabaabaabecbegbehbaabaabaabeibembembembembeobaabaabaabaabaabaabaabaabehbaabaabaabaabaabaabaabcabepbccbcdbaabesbembembaabembaabembaabembekbeobfObaabaabaabaabaabaabbWbcgaSXaQjbchbcibcjbckaMzaMzaMzaMzaMzaRIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayUawhawiawiawiawiawiawiawiawiawhawibclaxDaxDbcmbcnbcobcpbcpbcpbcqbcrbcsaPjbctbcubcvaXpaXpaXpbcwbcxaXpaPlaPlaPlaPlaZdaZebcybczaPlaZhaZiaZjbcAbcBbcCbcDbcEbcFbcGbcGbcGbcHbcIaZsbcJaWdaQUaNhaXNbcKbcLbaJbcMbcNbcObcPbcQbcRbaNbcSbaPaZAbcTbcUbcTaZAbaPaZCbaSbcVbbObbPbbQbcWbbSbbabbaaZDbjraIPaIPaIPbaabaabaabaabjsbbWbaabaabaabaabcYbaabaabaabaabaabcZaYzaYzaYzaYzbdabaabbWbaabaabaabaabaabaabdbbdcbddbdebdfbdfbdfbdgbdfbdfbdfbdfbdfbdfbdfbdfbdfbdfbdfbdfbdfbdfbdfbdhbdibdjbdkbdkbdlaQibdmaQjbdnaQlaQlbdoaQlbdpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadayUaxAaxBaxAazaaxBaxBbdqaxAaxBaxAazaaxBaxBaxBbdrbdsbdrbdrbdrbdrbdtbduaPjaPjaPjbdvaVLaXpaYWbdwbdxbbqaXpbdybdzbdyaPlaPlaPlbdAbdBaPlaZhaZibdCbdDbdEbdFaZmaPjaWdaWdaWdaWdaWdaWdaWdbdGaWdbfPaIPaXNbcKbdIbaJbcMbdJbdKbcPbcQbaJbaNbdLbdMaZAbdNbdObdPaZAbdQbdRbaSbdSbdTbdUbdVbdWbdXbbabdYaZDbjobeaaIPbedbgBbgBbgBbiibjsbjtbeebeebeebfAbefbeebeebjubgBbgBbgBbgBbgBbjvbjwbejbjxbjtbgBbgBbaabaabaabelbjybenbjzbjAbeqbeqbeqbaabgBbgDbjBbgBbgBbaabaabaabaabaabaabaabaabaabaabaabbWbetbeubevbewaQiaQjaPbaMzaMzaMzaMzaMzaMzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaweayUbexayUayWaxBaxBayXayUbeyayUayYbezbeAbeAbdrbeBbeCbeDbeEbeFbdtbeGbeHbeIbeIbeJbeKaXpaXpaXpbeLbeMaXpaPjaPjaPjaPjbeNbeObePbeQbeObeRaZibeSbeTaZjaZlaZmbeUbeVbeWbeXbeXbeXbeXbeYbeZbeVbjCaIPbbZaZvbaJbfbbfcbfdbfebffbcQbfgbfhaXYbfibfjbfkbfkbfkbflbfmaYdbfnbfobfpbfqbfrbfsbftbbabfuaZDbjoaIPbjDbfvbfvbfvbfvbfvbfvbfvbfwbfxbfxbfxbfybfzbfzbfwbjEbjEbjEberberberberberbfBbfBbfBbfCbfBbfBbfBbfBbfBbfGbfHbfIbfJbfJbfJbfKbfLbfLbfLbfLbfLbfMbfNbfNbjFbjGbfNbjHbjIbfNbfNbfRbfSbfSbfSbfSbfTbfUbfVbfWaMzaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaAaauSaAbaxyayUaAcaAdbfXbfYayUaxyaAbayUauSaAaawebdrbfZbgabgabgabgbbgcbgdbgebeObeObgfbggaXpaYWbghbeLbgiaXpbgjbgjaRTbgkbglbgmbgnbgmbgmbgobgpbgqaZkbgrbgsaZmaRTbgtbgubeVbgvbgwbgxbgyaPNbgAbjJbgCbjKaZvbgEaZybgFbgGbgHbgIbcQbgJaZvaadbgKbjLbjMbjMbjMbjNbgMaadaZDbgNbgObgPbgQbbabgRbbabgSaZDbjoaIPbjObfvbjPbgVbgWbgXbgYbfvbhfbjQbjQbjQbhbbhcbhcbhdbhebjRbhgbfDbfEbfFbhhberbhlbhibhjbhkbhibhmbhnbfBbfBbhobhpbhqbhrbhsbhtbhubhvbhwbhxbjSbfLbhzbhAbhzbfLbhBbhCbhBbfSbhDbhEbhDbfSbhFbhGbfSbhHbhIaMzaMzaMzaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaadaadaadaadayUbhJayUayUayUayUayUayUbhKayUaadaadaadaaabdrbhLbdrbhMbgabhNbhObdraRTaTfbhPbhQbhRbhSbhSbhSbhSbhSbhSbhTbhUbhVbhWbhXbhYbhYbhYbhYbhYbhYaZmbhZaZiaZmbhYbhYbiabibbicbidbiebifbiebigbihbfaaIPbjTaZvbijaZyaZyaZyaZybgIbcQbikaZvaadbgKbjUbilbimbinbjVbgMaadaZDbiobbObipbiqbbabftbbabbaaZDbjoaIPbjDbfvbirbisbitbitbiubivbhcbiwbhcbhcbhbbjWbhcbhcbhcbhcbixbfDbjXbjYbjZberbkabhibhibkbbkabkcbhibfBbkdbkebfHbkfbkgbkhbkibkjbkkbklbkmbknbkobkpbkqbkrbfLbksbktbkubfSbkvbkwbkvbkxbkybkybfSbkzbhIaaaaadaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoBaaabdrbkBbkCbkDbkEbkEbkFbkGbkHbkIaPjbkJbkKbkLbkLbkLbkMbkMbkMbkMbkMbkMbkNbkObhYbkPbkQbkRbkSbkTbkUbkVbkWbhYbkXbkYbkZbeVbeVblablbblcblbbldbleblfblgbbZblhblibljblkbllaZyblmbcQaZvaZvaadbgKbjUbimbgLbimbjVbgMaadaZDaZDblnbbPblobbablpblqblraZDbjoaIPbjDbfvblsbisbltblublvblwbhcblxblyblzblAblBblCblCblDbhcbixbfDblEblFblGberbkabhibhibkbbkabkcblHbfBblIblJbfHblKblLblMblNblKbkkblOblPbkmbkmbkmbkmblQbfLblRblSblTbfSblUbkybkyblVblWblXbfSbkzbhIblYblYblYblYaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdrblZbdrbmabmbbmbbmcbdrbmdbmdaPjbmebmfbmebmebmebmfbmeaPjaPjbhYbhYbmgbmhbhYbmibmibmibmibmibmibmjbmkbmlbmmbmnbmobmpbmqbmrbmqbmsbmtbmubihbfabmvbmwbmxbmybmzbmAbmBaZybgIbcQaZvaadaadbmCbmDbinbmEbilbmFbmGaadaadaZDbmHbmIaZDaZDaZDaZDbmJaZDbmKaIPbmLbfvbmMbmNbmObitbiubmPbhcblxbmQbmRbmSbmTbmUbmVbmWbmXbixberbmYbmZbnaberbkabhibhibkbbkabnbbncbfBbndblJbfHbnebkgbnfbkibngbkkbnhbnibnjbnkbnlbnmbnnbfLbnoblSbnpbfSbnqbnrbnsbntbnubnvbfSbkzbnwbnxbnybnzbnAaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdrbnBbkCbnCbmbbnDbnEbdraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnFbnGbnHbnIbnJbnKbmibmibmibnLbmibmibnMbnNbnObnPbnQbnRbnSbnTbihbnUbeVbeVbeVbnVbnWaLzblhbnXbnYbnYbnYbnYbnZboabobaadaaabgKbocbodbodbodboebgMaaaaadbofbogbohboibojbokaZDbolaZDbjiaIPbombfvbonboobopboqborbfvbosblxbmQbotboubhcbovbotbmWbowboxberboybozboAboBboCboCboDboEboFboGboHboIboJboKbfHboLboMboNboOboPboQboRboSboTboUboVboWaRhbfLboXboYboZbfSbpabpbbpcbpdbkyaSvbfSbpebpfbpgbphbphbphbphbphbphbpiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdrbpjbkCbkCbkCbdrbdrbdraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnFbpkbplbpmbpnbpnbpnbpnbpnbpnbpnbpnbpnbpobppbpqbprbpsbptbpubpvbpwbpxbpybpzbfabpAbpBblhblhbobbpCbpDbpEbpFbpGbobaaaaaabgKbpHbpIbpJbpIbpKbgMaaaaaabofbpLbpMbpNbofbpOaZDbpPaZDbjiaIPbpQbpRbpSboobpTbitbpUbfvbjEbpVbpWbpXbpYbhcbpZbpXbqabqbbjEberberbqcberbqdbqebqfbqfbqfbqgbqhbqibqibqibqjbqkbfIbfIbfIbfIbfIbqlbqmbkmbqnboWboWbqobqpbqlbqqbqrbqsbqtbqubqvbqwbqxbqybqzbfSbqAbqBbqCbqDbqDbqDbqDbqDbqEbhIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqFbnFbnFbqGbplbkVbmibqHbqHbqHbqHbmibmibmibmibqIbqJbqKbqLbqMbqNbqObqPbqQbpwbpwbpzbqRbqSbqTbqUbqVbqWbqXbqYbqZbrabrbbobaadaaabgKbrcbrdbrdbrdbrebgMaaaaadbofbrfbrgbrhbofbriaZDbolaZDbjiaIPbpQbfvbrjboobrkbrlbrmbfvbrnblxbrobpXbjEbrpbjEbpXbrqbrrbrsbrtbrubrvbrwbrxbrybrzbrAbrBbrCbrDbrEbrFbrGblJbrHbrIbrJbrKbrLbrMbrNbrObrPbrQbrRbrSboWbrTbrUbrVbrWaSxbqtbrXbrYbrZbsabkybsbbscbsdbfSbsebsebsebsebsebsebkzbhIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsfbsgbsfbshbsibsjbskbslbmibmibmibmibmibsmbhYbhYbsnbpwbsobspbsqbpubsrbpwbssbpwbstbsubpAbsvbswbsxbsybszbsAbsBbrabsCbobaaaaaabgKbsDbsEbsFbsEbsGbgMaaaaaabsHbsIbsJbsHbsHbsHbsHbsKbsHbsLaLzbsMbfvbfvbsNbsObsPbfvbfvbhcbsQbsRbsSbsTbsSbsUbsSbsWbqbbhcbhcbhcbqbbhcbhbbrybrzbsXbsYbsZbtabtbbtcbrGbtdbtebtfbtgbtgbtgbthbtibtjbtkbtlbtmbtnbtobtpbtqbtrblSbtsbqtbqtbttbtubtvbttbqtbfSbfSbfSbtwbtxbtybtzbtAbsebtBbhIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtCbtDbtEbtFbmibkVbmibqHbqHbtGbqHbmibmibtHbtIbhYbtJbpwbsobspbpwbtKbpwbpwbtLbpwbstbsubpAaIPbswbtMbtNbtObtPbtPbtQbtRbobaadaadbtSbtTbtUbtVbtWbtXbtYaadaadbtZbuabubbucbudbuebufbugbsHbuhaIPbuibujbukbulbumbunbuobupbuqburbusbutbutbutbutbutbuubuvbutbutbutbuwblCbuxbuybrzbuzbuAbuBbuBbuCbuDbrGblJbrHbuEbuFbuGbuHbuIbuJbuKbkmbuLbkmbkmbkmbuMbqlbuNbuObuPbuQbuRbuSbuTbuUbuVbuWbuXbuYbuZbvabvbbvbbvbbvcbvdbvebhIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayUbanaPebaoaTcaUwaVFaUwaUubapaUwbaqaUwaTcbarbasbataXpaXpaXpbaubavaXpaZbbawaZbaPlaZdaZeaZfaZgaPlaZhaZibaxbayaZjbazaZmaZnaWdbaAaZpaZpaZGbaBaZpbaDbbxaIPaIPbbZaZvbaFbaGbaHbaIbaJbcebaLbaMbaNbaOaZAaZAbaPbaQbaPaZAaZAbaRbaSbaCbaTbaUbaXbaYbbzbaVbaWaZDbjoaIPaIPbgTbgTbjpbbXaJdaJdaJdbbbaSqbbbaJdbbcaJdaJdaJdaJibcbbdZbbdbbdbbdbbdbcfbdHaJiaZWbbgbbgaZWbaabaabaabaaaHTaZZbaababaFbaFbaFbbbhaFbbbhaFbbbhaFbaFbaCwaCwbbibbibbibbibbibbiaCwaCwbbjaQjbbkaQiaQjaQjbblaQlaQlaQlaQlaSZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadauSauSayUayUayUayUayUayUayUayUauSauSaweaxBaxBaTcaTcaTdaTcaTcaTcaTcaTeaTcaTcbbmbbnbboaXpaYWbbpbaubbqaXpbbrbbsbbraPlaZdaZeaZfaZgaPlbbtaZiaZjbbubbvbbwaZmaZnbjqaZsbbybaZbbabbAaZpbaDbbCaIPaIPaXNbbDbbEbaJbbFbbGbbGbbHbbIbbJbaNbbKaZAaZAbaPbbLbaPaZAaZAbbMbaSbbBbbNbpdbbRbbSbcWbaWbbOaZDbjobbUaIPaIPbaabaabaabecbegbehbaabaabaabeibembembembembeobaabaabaabaabaabaabaabaabehbaabaabaabaabaabaabaabcabepbccbcdbaabesbembembaabembaabembaabembekbeobfObaabaabaabaabaabaabbWbcgaSXaQjbchbcibcjbckaMzaMzaMzaMzaMzaRIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayUawhawiawiawiawiawiawiawiawiawhawibclaxDaxDbcmbcnbcobcpbcpbcpbcqbcrbcsaPjbctbcubcvaXpaXpaXpbcwbcxaXpaPlaPlaPlaPlaZdaZebcybczaPlaZhaZiaZjbcAbcBbcCbcDbcEbcFbcGbcGbcGbcHbcIaZsbcJaWdaQUaNhaXNbcKbcLbaJbcMbcNbcObcPbcQbcRbaNbcSbaPaZAbcTbcUbcTaZAbaPaZCbaSbbPbbNbpdbbRbdVbcWbaWbaWaZDbjraIPaIPaIPbaabaabaabaabjsbbWbaabaabaabaabcYbaabaabaabaabaabcZaYzaYzaYzaYzbdabaabbWbaabaabaabaabaabaabdbbdcbddbdebdfbdfbdfbdgbdfbdfbdfbdfbdfbdfbdfbdfbdfbdfbdfbdfbdfbdfbdfbdhbdibdjbdkbdkbdlaQibdmaQjbdnaQlaQlbdoaQlbdpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadayUaxAaxBaxAazaaxBaxBbdqaxAaxBaxAazaaxBaxBaxBbdrbdsbdrbdrbdrbdrbdtbduaPjaPjaPjbdvaVLaXpaYWbdwbdxbbqaXpbdybdzbdyaPlaPlaPlbdAbdBaPlaZhaZibdCbdDbdEbdFaZmaPjaWdaWdaWdaWdaWdaWdaWdbdGaWdbfPaIPaXNbcKbdIbaJbcMbdJbdKbcPbcQbaJbaNbdLbdMaZAbdNbdObdPaZAbdQbdRbaSbbQbbTbcVbdWbdXbjdbaWbdSaZDbjobeaaIPbedbgBbgBbgBbiibjsbjtbeebeebeebfAbefbeebeebjubgBbgBbgBbgBbgBbjvbjwbejbjxbjtbgBbgBbaabaabaabelbjybenbjzbjAbeqbeqbeqbaabgBbgDbjBbgBbgBbaabaabaabaabaabaabaabaabaabaabaabbWbetbeubevbewaQiaQjaPbaMzaMzaMzaMzaMzaMzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaweayUbexayUayWaxBaxBayXayUbeyayUayYbezbeAbeAbdrbeBbeCbeDbeEbeFbdtbeGbeHbeIbeIbeJbeKaXpaXpaXpbeLbeMaXpaPjaPjaPjaPjbeNbeObePbeQbeObeRaZibeSbeTaZjaZlaZmbeUbeVbeWbeXbeXbeXbeXbeYbeZbeVbjCaIPbbZaZvbaJbfbbfcbfdbfebffbcQbfgbfhaXYbfibfjbfkbfkbfkbflbfmaYdbfnbdTbdUbdYbpxbfobjdbaWbfpaZDbjoaIPbjDbfvbfvbfvbfvbfvbfvbfvbfwbfxbfxbfxbfybfzbfzbfwbjEbjEbjEberberberberberbfBbfBbfBbfCbfBbfBbfBbfBbfBbfGbfHbfIbfJbfJbfJbfKbfLbfLbfLbfLbfLbfMbfNbfNbjFbjGbfNbjHbjIbfNbfNbfRbfSbfSbfSbfSbfTbfUbfVbfWaMzaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaAaauSaAbaxyayUaAcaAdbfXbfYayUaxyaAbayUauSaAaawebdrbfZbgabgabgabgbbgcbgdbgebeObeObgfbggaXpaYWbghbeLbgiaXpbgjbgjaRTbgkbglbgmbgnbgmbgmbgobgpbgqaZkbgrbgsaZmaRTbgtbgubeVbgvbgwbgxbgyaPNbgAbjJbgCbjKaZvbgEaZybgFbgGbgHbgIbcQbgJaZvaadbgKbjLbjMbjMbjMbjNbgMaadaZDbfqbfrbfsbftbaWbfubaWbgNaZDbjoaIPbjObfvbjPbgVbgWbgXbgYbfvbhfbjQbjQbjQbhbbhcbhcbhdbhebjRbhgbfDbfEbfFbhhberbhlbhibhjbhkbhibhmbhnbfBbfBbhobhpbhqbhrbhsbhtbhubhvbhwbhxbjSbfLbhzbhAbhzbfLbhBbhCbhBbfSbhDbhEbhDbfSbhFbhGbfSbhHbhIaMzaMzaMzaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaadaadaadaadayUbhJayUayUayUayUayUayUbhKayUaadaadaadaaabdrbhLbdrbhMbgabhNbhObdraRTaTfbhPbhQbhRbhSbhSbhSbhSbhSbhSbhTbhUbhVbhWbhXbhYbhYbhYbhYbhYbhYaZmbhZaZiaZmbhYbhYbiabibbicbidbiebifbiebigbihbfaaIPbjTaZvbijaZyaZyaZyaZybgIbcQbikaZvaadbgKbjUbilbimbinbjVbgMaadaZDbgObbNbgPbgQbaWbjdbaWbaWaZDbjoaIPbjDbfvbirbisbitbitbiubivbhcbiwbhcbhcbhbbjWbhcbhcbhcbhcbixbfDbjXbjYbjZberbkabhibhibkbbkabkcbhibfBbkdbkebfHbkfbkgbkhbkibkjbkkbklbkmbknbkobkpbkqbkrbfLbksbktbkubfSbgRbgSbgRbiobgRbgRbfSbkzbhIaaaaadaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoBaaabdrbkBbkCbkDbkEbkEbkFbkGbkHbkIaPjbkJbkKbkLbkLbkLbkMbkMbkMbkMbkMbkMbkNbkObhYbkPbkQbkRbkSbkTbkUbkVbkWbhYbkXbkYbkZbeVbeVblablbblcblbbldbleblfblgbbZblhblibljblkbllaZyblmbcQaZvaZvaadbgKbjUbimbgLbimbjVbgMaadaZDaZDbipbpdbiqbaWbjebjfbjgaZDbjoaIPbjDbfvblsbisbltblublvblwbhcblxblyblzblAblBblCblCblDbhcbixbfDblEblFblGberbkabhibhibkbbkabkcblHbfBblIblJbfHblKblLblMblNblKbkkblOblPbkmbkmbkmbkmblQbfLblRblSblTbfSbkvbgRbgRbkwbkxbkybfSbkzbhIblYblYblYblYaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdrblZbdrbmabmbbmbbmcbdrbmdbmdaPjbmebmfbmebmebmebmfbmeaPjaPjbhYbhYbmgbmhbhYbmibmibmibmibmibmibmjbmkbmlbmmbmnbmobmpbmqbmrbmqbmsbmtbmubihbfabmvbmwbmxbmybmzbmAbmBaZybgIbcQaZvaadaadbmCbmDbinbmEbilbmFbmGaadaadaZDbmHbmIaZDaZDaZDaZDbmJaZDbmKaIPbmLbfvbmMbmNbmObitbiubmPbhcblxbmQbmRbmSbmTbmUbmVbmWbmXbixberbmYbmZbnaberbkabhibhibkbbkabnbbncbfBbndblJbfHbnebkgbnfbkibngbkkbnhbnibnjbnkbnlbnmbnnbfLbnoblSbnpbfSbnqbnrbnsblnbloblpbfSbkzbnwbnxbnybnzbnAaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdrbnBbkCbnCbmbbnDbnEbdraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnFbnGbnHbnIbnJbnKbmibmibmibnLbmibmibnMbnNbnObnPbnQbnRbnSbnTbihbnUbeVbeVbeVbnVbnWaLzblhbnXbnYbnYbnYbnYbnZboabobaadaaabgKbocbodbodbodboebgMaaaaadbofbntbnubnvbojbokaZDbolaZDbjiaIPbombfvbonboobopboqborbfvbosblxbmQbotboubhcbovbotbmWbowboxberboybozboAboBboCboCboDboEboFboGboHboIboJboKbfHboLboMboNboOboPboQboRboSboTboUboVboWaRhbfLboXboYboZbfSbpabpbbpcblqbgRblrbfSbpebpfbpgbphbphbphbphbphbphbpiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdrbpjbkCbkCbkCbdrbdrbdraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnFbpkbplbpmbpnbpnbpnbpnbpnbpnbpnbpnbpnbpobppbpqbprbpsbptbpubpvbpwbpwbpybpzbfabpAbpBblhblhbobbpCbpDbpEbpFbpGbobaaaaaabgKbpHbpIbpJbpIbpKbgMaaaaaabofboibpdbpxbofbpOaZDbpPaZDbjiaIPbpQbpRbpSboobpTbitbpUbfvbjEbpVbpWbpXbpYbhcbpZbpXbqabqbbjEberberbqcberbqdbqebqfbqfbqfbqgbqhbqibqibqibqjbqkbfIbfIbfIbfIbfIbqlbqmbkmbqnboWboWbqobqpbqlbqqbqrbqsbqtblUblVblWblXbogbohbfSbqAbqBbqCbqDbqDbqDbqDbqDbqEbhIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqFbnFbnFbqGbplbkVbmibqHbqHbqHbqHbmibmibmibmibqIbqJbqKbqLbqMbqNbqObqPbqQbpwbpwbpzbqRbqSbqTbqUbqVbqWbqXbpLbpMbpNbrbbobaadaaabgKbrcbrdbrdbrdbrebgMaaaaadbofbqxbqybqzbofbriaZDbolaZDbjiaIPbpQbfvbrjboobrkbrlbrmbfvbrnblxbrobpXbjEbrpbjEbpXbrqbrrbrsbrtbrubrvbrwbrxbrybrzbrAbrBbrCbrDbrEbrFbrGblJbrHbrIbrJbrKbrLbrMbrNbrObrPbrQbrRbrSboWbrTbrUbrVbrWaSxbqtbqubqvbqwbqYbgRbqZbscbsdbfSbsebsebsebsebsebsebkzbhIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsfbsgbsfbshbsibsjbskbslbmibmibmibmibmibsmbhYbhYbsnbpwbsobspbsqbpubsrbpwbssbpwbstbsubpAbsvbswbsxbsybszbrabrfbpNbsCbobaaaaaabgKbsDbsEbsFbsEbsGbgMaaaaaabsHbsIbsJbsHbsHbsHbsHbsKbsHbsLaLzbsMbfvbfvbsNbsObsPbfvbfvbhcbsQbsRbsSbsTbsSbsUbsSbsWbqbbhcbhcbhcbqbbhcbhbbrybrzbsXbsYbsZbtabtbbtcbrGbtdbtebtfbtgbtgbtgbthbtibtjbtkbtlbtmbtnbtobtpbtqbtrblSbtsbqtbqtbttbtubtvbttbqtbfSbfSbfSbtwbtxbtybtzbtAbsebtBbhIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtCbtDbtEbtFbmibkVbmibqHbqHbtGbqHbmibmibtHbtIbhYbtJbpwbsobspbpwbtKbpwbpwbtLbpwbstbsubpAaIPbswbtMbtNbtObrgbrgbrhbtRbobaadaadbtSbtTbtUbtVbtWbtXbtYaadaadbtZbuabubbucbudbuebufbugbsHbuhaIPbuibujbukbulbumbunbuobupbuqburbusbutbutbutbutbutbuubuvbutbutbutbuwblCbuxbuybrzbuzbuAbuBbuBbuCbuDbrGblJbrHbuEbuFbuGbuHbuIbuJbuKbkmbuLbkmbkmbkmbuMbqlbuNbuObuPbuQbuRbuSbuTbuUbuVbuWbuXbuYbuZbvabvbbvbbvbbvcbvdbvebhIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqFbnFbnFbvfbmibkVbmibmibmibmibmibmibmibtHbvgbhYbvhbvibvjbvkbvlbvmbvnbvobpwbvpbpzbvqbpAaIPbswbsxbobbvrbvsbvtbvubvvbobaaaaaaaadbgKbvwbvxbvwbgMaadaaaaaabtZbvybvzbvAbvBbvCbvCbvDbvEbvFbvGaMXbvHbvIbvJbvKbvLbvMbvNbvMbvMbvObvPbvQbvRbvRbvRbvSbvTbhcbhcbvUbvVbvVbvWbrzbrzbrzbvXbvYbvZbtbbuDbrGbwabrHbfLbqlbqlbqlbqlbqlbqlbqlbqlbqlbwbbwcbwbbqlbwdbwebwfbwgbwgbwgbwhbwibwjbwkbwlbwmbwnbwobwpbwqbwrbwsbwtbwubwvblYbwwbwwblYaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwxbtCbtDbtEbpkbwybmjbwzbnKbmibwybmibmibmibtHbwAbhYbwBbpwbsobwCbwDbwEbpwbpwbpwbwFbpzbvqbpAaXNbswbwGbobbwHbwIbwJbwKbpGbobaaaaaaaadbwLbwMbrdbwNbwOaadaaaaaabtZbwPbwQbwRbwSbwTbwUbwVbsHbwWaIPbjDbjEbjEbwXbwYbsWbwZbxabxbbxcbxcbxbbxabxbbxabxbbxabxbbxabfzbfzbvVbxdbuBbxebxfbrzbvXbxgbxhbxibxjbrGbxkbxlbxmbxnbxobwgbwgbxpbwgbwgbxqbxrbxsbxtbxubwgbxvbxwbxxbxybxybxybxzbxzbxzbxzbxzbxAbxBbxCbxDbxCbxEbxCbsebxFbxGbxHbxIbxJblYaadaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxKbxLbxKbxMbxNbxMbxMbxMbxMbxMbxObxPbmibtHbxQbhYbxRbxSbxTbxUbxVbxWbxXbxXbxXbxWbxWbxYbpAaKebxZbsxbobbyabybbycbydbyebobaaaaaaaadbyfbygbtVbyhbyiaadaaaaaabtZbyjbykbylbymbwTbwUbwVbsHbynaIPbjDbyobypbyqbwYbyrbysbxabytbyubyvbywbyxbjcbyzbyAbyzbyBbxabhcbyCbvVbyDbuBbyEbyFbyGbyHbyIbyJbyJbyKbyLbyMbyNbyObyPbyQbyRbySbyRbyRbyTbyRbyRbyUbyVbyRbyRbyWbyXbyYbxybyZbzabzbbzcbzdbzebxzbzfbzgbzhbzibzjbzgbzkbsebxFbhIbzlbzmbznblYaaaaaaaaaaaaaaaaaaaaaaadbzoaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqFbnFbnFbnFbhYbnFbnFbnFbzpbzpbzpbzpbzqbzrbzrbzpbzpbzsbztbzubzvbxWbzwbzxbzybzzbxWbzAbpAbbeaTBaTBbobbobbobbobbobbzBbobaILaILaILbtSbzCbzDbzEbtYaILaILaILbsHbsHbsHbsHbsHbsHbsHbsHbsHbzFaIPbzGbxabxabzHbzIbxabxabxabzJbyubzKbyubzLbzMbzNbzObzPbzQbzLbhcbyCbvVbzRbzSbzTbzUbzVbzWbzXbzUbzUbzYbzZbAabAbbAcbAcbAcbAcbAdbAcbAcbAcbAebAebAfbAgbAhbAhbtrbAibtsbxybAjbAkbAlbAmbAnbAobApbsebsebAqbAqbAqbsebArbsebxFbhIbAsbzmbAtblYaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaabzpbAubAvbAwbAxbAybAzbzrbAAbABbACbADbxXbAEbAFbAGbAHbxWbzAbpAaIPaLPbAIbAJbAKaLPbiFbALbAMbANaWDaWDaWDbAObAPbAQbARbASaIPaIPaIPaIPaLOaIPaLzbATaIPaIPbAUaIPbAVaIPbAWbxabAXbAYbAZbBabBbbxabBcbyubBdbyubzLbzMbzMbBebBfbBgbzLbhcbBhbvVbuBbBibBjbBkbBlbBmbBnbBobBpbrGbrGbBqbBrbAcbBsbBtbBubBvbBwbBxbAcbBybBzbBAbBBbBCbAhbtrbAibBDbBEbBFbBGbBHbBIbBJbBKbApbBLbBLbBLbBLbBLbBLbBLbsebxFbhIbBMbBNbBOblYaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoBaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaabzrbBPbBQbBRbBSbBTbBUbBVbBWbBXbBYbBZbCabCbbAGbCcbCdbxWbzAbCeaIPaIPaIPaIPaIPaIPbCfaIPbpAaIPaIPaIPaIPaIPbCgbChbCiaIPaIPaIPaIPaIPaIPaIPaLzaIPaIPaIPaIPaNhbAVbCjbjDbxabCkbClbCmbCnbCobxabCpbyubyvbCqbxabCrbCsbCtbCubCvbxabhcbyCbvVbvVbvVbvVbvVbrGbrGbrGbrGbrGbrGbCwbCxbCybAcbCzbCAbCBbCCbCDbCEbAcbCFbCGbCHbCIbCJbAhbtrbCKbCLbCMbCNbCObCObCPbCQbCRbApbBLbBLbCSbCTbBLbBLbBLbsebxFbhIbCUbzmbCVblYaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabzpbCWbCXbCYbCZbDabDbbDcbDdbDebDfbDdbDgbDhbDibDjbDkbxWbDlbDmbDnbfQbDnbDobDnbDnbDpbDnbDqbfQbDrbDsbfQbDtbDubDvbDwbDxbDybDzbDAbDAbDBbDAbDCbDDbDAbDEbDFbDGbDHbfQbDIbxabDJbDKbDLbxbbxbbxabxbbDMbxbbxabxabxabxabxabxabxabxabhcbhcbDNbDObDPbwZbDQbDRbDSbDTbDUbDVbDRbDWbDXbDYbAcbBsbDZbEabEbbEcbEdbAcbEebEfbEgbEhbEibAhbtrbEjbEkbxzbElbEmbEnbEobEpbEqbApbBLbBLbBLbErbBLbBLbBLbsebEsbEtbEubzmbznblYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabzpbzpbzrbzrbzrbzrbzpbzpbEvbEwbACaTRbxWbxWbxWbxWbxWbxWbExbEyaITaITaITaITbEzbEzbEzbEzbEzbEzbEzbEzbEzbEzbEAaHpbEBbECbECbECbECbECbEDbECbECbECbECbEEbEFbEEaIUaKfbEGbxabEHbEIbEJbEKbELbxabEMbyubENbEObEPbEQbERbESbETbEUbEOblDbhcbhcbhcbhcbhcbsWbEVbEWbEXbEWbEYbDRbEZbCxbFabFabFabFabFabFabFabFabFabFbbFbbFbbFbbFbbFbbFcbFdbFebxzbxzbxzbxzbxzbxzbxzbApbsebsebsebsebsebsebsebsebxFbhIbFfbFgblYblYaadaadaadaaeaaeaaeaaeaaeaaeaaeaaeaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFhaaaaaaaaaaadaaaaaabzsbFibFjbFkbFlbFlbFmbFnbFobFpbFqbFrbEyaaaaaaaadaaabEzbFsbFtbFubFvbFwbFxbFybFzbEzbFAbFBbFCbECbFDbFEbFFbFGbFHbFIbFJbFKbFLbFMbFNbEEbEEbEEbEEbxabFObFPbFQbFRbFSbFTbFUbFVbFWbFXbFVbFVbFVbFYbyubFZbGabGbbGcbGcbGdbGebGfbGgbEVbGhbGibGjbGkbDRbEZbCxbFabGlbGlbGlbGmbGlbGlbGlbFabGnbGnbGobGnbGnbFbbGpbGqbGrbGsbGtbGubGvbGwbGxbGybGzbGAbGBbGCbGDbGEbGFbGGbGGbGHbGIbGtbGtblYaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabzsbzsbGJbGKbGLbDdbGMbGNbGObGObGPbGQbGRbGSaadbGTbGUbGVbGWbGXbFzbGYbFzbGZbFzbFzbFzbEzbHabHbbHcbECbHdbHebHfbHgbHhbHibHjbECbECbHkbHlbHmbHnbHobHpbHqbHrbHsbHtbHubHvbHwbHxbHybHzbHAbHBbHCbyubyubyubHDbjEbjEbjEbjEbjEbHEbHFbwYbEVbHGbHHbEWbHIbDRbEZbCxbFabGlbGlbGlbGlbGlbGlbGlbFabHJbHKbHLbHMbHNbHObHPbHQbGrbHRbHSbHTbHTbHTbHTbHTbHTbHUbHVbHWbGDblYbHXbHYbHZbHZbIabIbbIcbGtatJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbIdbIebIdaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabIfbIfbIfbzsbIgbIhbEwbIibIhbIjbzsbEybIkbEybEybIlbImaaabInbIobIpbIqbFzbFzbIrbFzbIsbItbIubFzbEzbHabHbaTWbECbIvbIwbIxbIybIzbIAbIBbECbCwbICbIDbIEbIDbIFbIGbHAbIHbIIbIJbyubIKbxabILbIMbINbxabIObyubyubyubyubIPbjEbIQbIRbISbITbIUbIVbIWbIXbIYbEWbIZbJabJbbJcbJdbFabGlbGlbJebGlbGlbGlbGlbFabJfbJgbJgbJhbJibJjbJkbJlbGrbJmbJnbHTbHTbHTbJobJpbJqbJqbJqbJqbJrbJsbJtbJubJvbJwbJxbJybJzbHSatJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbIebIdbJAbIdbIeaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabIfbJBbJCbzsbJDbIhbJEbIhbJFbIjbzsbJGbJHbJIbEybIlbImaadbInbJJbJKbJLbJMbJNbJMbJMbJObJPbJQbJQbJRbJSbJTbJUbECbECbECbECbECbJVbJWbECbECbJXbJYbJZbKabJZbKbbKcbxabKdbKebKfbKgbKhbxabKibKjbKkbxabKlbKmbKnbKobKpbKqbjEbgzbKrbKsbKtbKsbKubKvbKwbKxbKybKzbKAbDRbEZbCxbFabFabKBbGlbGlbKCbKBbFabFabKDbKEbKFbKFbKGbFbbKHbKIbGrbKJbHSbHTbHTbKKbKLbKMbHTbKNbKObKPbKQbKRbKSbKTbKUbKVbKWbKXbKYbHSatJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbKZbIebLabLbbLcbIebKZaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxKbxLbxKbxMbxNbxMbxMbxMbxMbxMbxObxPbmibtHbxQbhYbxRbxSbxTbxUbxVbxWbxXbxXbxXbxWbxWbxYbpAaKebxZbsxbobbyabybbycbydbyebobaaaaaaaadbyfbygbtVbyhbyiaadaaaaaabtZbyjbykbylbymbwTbwUbwVbsHbynaIPbjDbyobypbyqbwYbyrbysbxabytbyubyvbywbyxbjcbyzbyAbyzbyBbxabhcbyCbvVbyDbuBbyEbyFbyGbyHbyIbyJbyJbyKbyLbyMbyNbyObyPbyQbyRbySbyRbyRbyTbyRbyRbyUbyVbyRbyRbyWbyXbyYbxybrXbrYbrZbzcbzdbzebxzbzfbzgbzhbzibzjbzgbzkbsebxFbhIbzlbzmbznblYaaaaaaaaaaaaaaaaaaaaaaadbzoaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqFbnFbnFbnFbhYbnFbnFbnFbzpbzpbzpbzpbzqbzrbzrbzpbzpbzsbztbzubzvbxWbzwbzxbzybzzbxWbzAbpAbbeaTBaTBbobbobbobbobbobbzBbobaILaILaILbtSbzCbzDbzEbtYaILaILaILbsHbsHbsHbsHbsHbsHbsHbsHbsHbzFaIPbzGbxabxabzHbzIbxabxabxabzJbyubzKbyubzLbzMbzNbzObzPbzQbzLbhcbyCbvVbzRbzSbzTbzUbzVbzWbzXbzUbzUbzYbzZbAabAbbAcbAcbAcbAcbAdbAcbAcbAcbAebAebAfbAgbAhbAhbtrbAibtsbxybsabsbbsAbAmbAnbAobApbsebsebAqbAqbAqbsebArbsebxFbhIbAsbzmbAtblYaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaabzpbAubAvbAwbAxbAybAzbzrbAAbABbACbADbxXbAEbAFbAGbAHbxWbzAbpAaIPaLPbAIbAJbAKaLPbiFbALbAMbANaWDaWDaWDbAObAPbAQbARbASaIPaIPaIPaIPaLOaIPaLzbATaIPaIPbAUaIPbAVaIPbAWbxabAXbAYbAZbBabBbbxabBcbyubBdbyubzLbzMbzMbBebBfbBgbzLbhcbBhbvVbuBbBibBjbBkbBlbBmbBnbBobBpbrGbrGbBqbBrbAcbBsbBtbBubBvbBwbBxbAcbBybBzbBAbBBbBCbAhbtrbAibBDbBEbsBbsVbtPbBIbBJbBKbApbBLbBLbBLbBLbBLbBLbBLbsebxFbhIbBMbBNbBOblYaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoBaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaabzrbBPbBQbBRbBSbBTbBUbBVbBWbBXbBYbBZbCabCbbAGbCcbCdbxWbzAbCeaIPaIPaIPaIPaIPaIPbCfaIPbpAaIPaIPaIPaIPaIPbCgbChbCiaIPaIPaIPaIPaIPaIPaIPaLzaIPaIPaIPaIPaNhbAVbCjbjDbxabCkbClbCmbCnbCobxabCpbyubyvbCqbxabCrbCsbCtbCubCvbxabhcbyCbvVbvVbvVbvVbvVbrGbrGbrGbrGbrGbrGbCwbCxbCybAcbCzbCAbCBbCCbCDbCEbAcbCFbCGbCHbCIbCJbAhbtrbCKbCLbCMbtQbyybyybyZbzabzbbApbBLbBLbCSbCTbBLbBLbBLbsebxFbhIbCUbzmbCVblYaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabzpbCWbCXbCYbCZbDabDbbDcbDdbDebDfbDdbDgbDhbDibDjbDkbxWbDlbDmbDnbfQbDnbDobDnbDnbDpbDnbDqbfQbDrbDsbfQbDtbDubDvbDwbDxbDybDzbDAbDAbDBbDAbDCbDDbDAbDEbDFbDGbDHbfQbDIbxabDJbDKbDLbxbbxbbxabxbbDMbxbbxabxabxabxabxabxabxabxabhcbhcbDNbDObDPbwZbDQbDRbAjbAkbAlbBFbDRbDWbDXbDYbAcbBsbDZbEabEbbEcbEdbAcbEebEfbEgbEhbEibAhbtrbEjbEkbxzbBGbBHbCNbCObCPbCQbApbBLbBLbBLbErbBLbBLbBLbsebEsbEtbEubzmbznblYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabzpbzpbzrbzrbzrbzrbzpbzpbEvbEwbACaTRbxWbxWbxWbxWbxWbxWbExbEyaITaITaITaITbEzbEzbEzbEzbEzbEzbEzbEzbEzbEzbEAaHpbEBbECbECbECbECbECbEDbECbECbECbECbEEbEFbEEaIUaKfbEGbxabEHbEIbEJbEKbELbxabEMbyubENbEObEPbEQbERbESbETbEUbEOblDbhcbhcbhcbhcbhcbsWbEVbCRbDSbCRbDTbDRbEZbCxbFabFabFabFabFabFabFabFabFabFbbFbbFbbFbbFbbFbbFcbFdbFebxzbxzbxzbxzbxzbxzbxzbApbsebsebsebsebsebsebsebsebxFbhIbFfbFgblYblYaadaadaadaaeaaeaaeaaeaaeaaeaaeaaeaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFhaaaaaaaaaaadaaaaaabzsbFibFjbFkbFlbFlbFmbFnbFobFpbFqbFrbEyaaaaaaaadaaabEzbFsbFtbFubFvbFwbFxbFybFzbEzbFAbFBbFCbECbFDbFEbFFbFGbFHbFIbFJbFKbFLbFMbFNbEEbEEbEEbEEbxabFObFPbFQbFRbFSbFTbFUbFVbFWbFXbFVbFVbFVbFYbyubFZbGabGbbGcbGcbGdbGebGfbGgbEVbDUbDVbElbEmbDRbEZbCxbFabGlbGlbGlbGmbGlbGlbGlbFabGnbGnbGobGnbGnbFbbGpbGqbGrbGsbGtbGubGvbGwbGxbGybGzbGAbGBbGCbGDbGEbGFbGGbGGbGHbGIbGtbGtblYaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabzsbzsbGJbGKbGLbDdbGMbGNbGObGObGPbGQbGRbGSaadbGTbGUbGVbGWbGXbFzbGYbFzbGZbFzbFzbFzbEzbHabHbbHcbECbHdbHebHfbHgbHhbHibHjbECbECbHkbHlbHmbHnbHobHpbHqbHrbHsbHtbHubHvbHwbHxbHybHzbHAbHBbHCbyubyubyubHDbjEbjEbjEbjEbjEbHEbHFbwYbEVbEnbEobCRbEpbDRbEZbCxbFabGlbGlbGlbGlbGlbGlbGlbFabHJbHKbHLbHMbHNbHObHPbHQbGrbHRbHSbHTbHTbHTbHTbHTbHTbHUbHVbHWbGDblYbHXbHYbHZbHZbIabIbbIcbGtatJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbIdbIebIdaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabIfbIfbIfbzsbIgbIhbEwbIibIhbIjbzsbEybIkbEybEybIlbImaaabInbIobIpbIqbFzbFzbIrbFzbIsbItbIubFzbEzbHabHbaTWbECbIvbIwbIxbIybIzbIAbIBbECbCwbICbIDbIEbIDbIFbIGbHAbIHbIIbIJbyubIKbxabILbIMbINbxabIObyubyubyubyubIPbjEbIQbIRbISbITbIUbIVbIWbIXbEqbCRbEWbEXbJbbJcbJdbFabGlbGlbJebGlbGlbGlbGlbFabJfbJgbJgbJhbJibJjbJkbJlbGrbJmbJnbHTbHTbHTbJobJpbJqbJqbJqbJqbJrbJsbJtbJubJvbJwbJxbJybJzbHSatJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbIebIdbJAbIdbIeaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabIfbJBbJCbzsbJDbIhbJEbIhbJFbIjbzsbJGbJHbJIbEybIlbImaadbInbJJbJKbJLbJMbJNbJMbJMbJObJPbJQbJQbJRbJSbJTbJUbECbECbECbECbECbJVbJWbECbECbJXbJYbJZbKabJZbKbbKcbxabKdbKebKfbKgbKhbxabKibKjbKkbxabKlbKmbKnbKobKpbKqbjEbgzbKrbKsbKtbKsbKubKvbKwbEYbGhbGibGjbDRbEZbCxbFabFabKBbGlbGlbKCbKBbFabFabKDbKEbKFbKFbKGbFbbKHbKIbGrbKJbHSbHTbHTbKKbKLbKMbHTbKNbKObKPbKQbKRbKSbKTbKUbKVbKWbKXbKYbHSatJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbKZbIebLabLbbLcbIebKZaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLdbLebIhbIhbLfbJDbIhbLgbIhbIhbIjbzsbLhbJIbLibEybIlbImaaabInbLjbLkbLlbFzbFzbLmbFzbLnbLobLpbLqbEzbLrbLsbLtbLubLvbLvbLvbLvbLwbLxbLvbLvbLybLzbLAbLBbLCbLDbLEbFTbFTbFTbFTbFTbFTbFTbFTbFTbFTbLFbLFbLFbLFbLFbLFbLGbLHbjEbjEbjEbjEbLIbLJblxbDRbDRbDRbDRbDRbDRbEZbCxbFabLKbLLbLMbLNbLObLPbLQbLRbKDbKEbKFbKFbKGbFbbLSbLTbGrbLUbGtbLVbLWbLXbLYbLZbMabHTbHTbMbbGDbMcbMdbMebGtbMfbMgbMgbGtbGtaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadatJaadaadbIebIebMhbMibMibMibMjbIebIeaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabIfbMkbMlbMmbMnbIhbMobMpbMqbMrbzsbEybEybEybEybIlbMsaadbMtbGUbMubGWbMvbFzbMwbFzbFzbFzbMxbMybMzbMAbMBbMCbMDbMEbMEbMEbMEbMFbMEbMGbMHbMIbMJbMKbMLbMMbMNbMObMPbMQbMPbMPbMPbMPbMPbMPbMPbMPbMPbMPbMPbMPbMPbMRbMSbLHbMTbMUbMVbMWbIUbIVbMXbMYbMZbMZbNabNbbMJbMKbNcbFabNdbNebNfbNgbNhbNibNjbLRbLRbLRbLRbLRbLRbNkbNlbNmbNnbNobGtbGDbGDbGDbGDbNpbGDbNqbHTbHTbGDbNrbNsbNtbGtbNubNvbNwbNxbNyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNzbNAbNzbMibNBbMibNCbNDbIdaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabIfbIfbIfbzsbzsbIfbIfbIfbzsbzsbzsbNEbEyaaabNFbNGbImaaaaaaaadaaabEzbNHbNIbNJbFzbNKbNLbNMbNNbEzbNObNPbNQbNRbNSbNTbNUbNVbNWbNSbNSbNSbNSbNSbNXbNYbNSbNSbNZbNSbOabNSbNSbNSbNSbNSbEEbEEbEEbEEbEEbEEbEEbEEbCxbEZbLHbObbOcbOdbOebKsbOfbOgbOhbOibOibOjbOibOibOkbOlbFabOmbOnbOobOnbOnbOnbOpbOqbOrbOsbOtbOubOvbOwbOxbKIbGrbOyaadbOzbOAbOBbOCbODbOCbOEbOFbOGbGDbOHbOIbOJbGtbGtbGtbGtbGtbGtaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadatJaadaadbIebIebOKbMibMibMibOLbIebIeaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
|
||||
@@ -0,0 +1,545 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/turf/open/space/bluespace,
|
||||
/area/hilbertshotel)
|
||||
"b" = (
|
||||
/turf/closed/indestructible/hotelwall,
|
||||
/area/hilbertshotel)
|
||||
"c" = (
|
||||
/obj/machinery/jukebox{
|
||||
req_access = null
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"d" = (
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"e" = (
|
||||
/obj/structure/table/wood,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"f" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/structure/showcase/machinery/tv,
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"g" = (
|
||||
/obj/structure/dresser,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"h" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"i" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/structure/mirror{
|
||||
pixel_y = 24
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"j" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/flashlight/lamp/green,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"k" = (
|
||||
/obj/structure/chair/comfy/brown{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"l" = (
|
||||
/obj/structure/table/wood/poker,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"m" = (
|
||||
/obj/structure/chair/comfy/brown{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"n" = (
|
||||
/obj/effect/landmark/xmastree,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"o" = (
|
||||
/obj/structure/chair/comfy/brown{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"p" = (
|
||||
/obj/structure/mineral_door/wood,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"q" = (
|
||||
/obj/structure/bed,
|
||||
/obj/item/bedsheet/random,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"r" = (
|
||||
/obj/structure/closet/cabinet{
|
||||
anchored = 1
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"s" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/reagent_containers/food/snacks/grown/poppy,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"t" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"u" = (
|
||||
/obj/structure/mineral_door/paperframe,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"v" = (
|
||||
/obj/structure/extinguisher_cabinet{
|
||||
pixel_x = 32
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"w" = (
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"x" = (
|
||||
/obj/structure/curtain,
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"y" = (
|
||||
/obj/machinery/door/window/northleft,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"z" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"A" = (
|
||||
/obj/structure/mirror{
|
||||
pixel_x = -32
|
||||
},
|
||||
/obj/structure/sink{
|
||||
dir = 8;
|
||||
pixel_x = -12;
|
||||
pixel_y = 2
|
||||
},
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"B" = (
|
||||
/obj/structure/chair/stool/bar,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"C" = (
|
||||
/obj/machinery/shower{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"D" = (
|
||||
/obj/machinery/light_switch{
|
||||
pixel_x = 32
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"E" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/soap/deluxe,
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"F" = (
|
||||
/obj/structure/window/reinforced/tinted{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/window/reinforced/tinted{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"G" = (
|
||||
/obj/machinery/light_switch{
|
||||
pixel_x = -32
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"H" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/microwave,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"I" = (
|
||||
/turf/closed/indestructible/hoteldoor,
|
||||
/area/hilbertshotel)
|
||||
"J" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"K" = (
|
||||
/obj/structure/closet/crate/bin,
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"L" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"M" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"N" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/soap/deluxe,
|
||||
/obj/machinery/light/small{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"O" = (
|
||||
/obj/item/bikehorn/rubberducky,
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"P" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"Q" = (
|
||||
/obj/machinery/smartfridge/food,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"R" = (
|
||||
/obj/structure/toilet{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/window/reinforced/tinted{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/window/reinforced/tinted{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"S" = (
|
||||
/obj/structure/window/reinforced/tinted{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"T" = (
|
||||
/obj/structure/window/reinforced/tinted{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/window/reinforced/tinted,
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"U" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/structure/sink/kitchen,
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"V" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/effect/spawner/lootdrop/three_course_meal,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
|
||||
(1,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
I
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
a
|
||||
b
|
||||
d
|
||||
d
|
||||
k
|
||||
d
|
||||
d
|
||||
t
|
||||
d
|
||||
y
|
||||
t
|
||||
H
|
||||
z
|
||||
b
|
||||
a
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
a
|
||||
b
|
||||
e
|
||||
d
|
||||
l
|
||||
o
|
||||
d
|
||||
d
|
||||
B
|
||||
z
|
||||
d
|
||||
d
|
||||
z
|
||||
b
|
||||
a
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
a
|
||||
b
|
||||
f
|
||||
d
|
||||
l
|
||||
o
|
||||
d
|
||||
d
|
||||
B
|
||||
V
|
||||
d
|
||||
d
|
||||
U
|
||||
b
|
||||
a
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
a
|
||||
b
|
||||
e
|
||||
d
|
||||
l
|
||||
o
|
||||
d
|
||||
d
|
||||
B
|
||||
z
|
||||
d
|
||||
d
|
||||
z
|
||||
b
|
||||
a
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
a
|
||||
b
|
||||
c
|
||||
d
|
||||
m
|
||||
d
|
||||
D
|
||||
K
|
||||
v
|
||||
z
|
||||
M
|
||||
Q
|
||||
z
|
||||
b
|
||||
a
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
p
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
a
|
||||
b
|
||||
g
|
||||
d
|
||||
t
|
||||
d
|
||||
G
|
||||
u
|
||||
w
|
||||
A
|
||||
N
|
||||
A
|
||||
E
|
||||
b
|
||||
a
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
a
|
||||
b
|
||||
h
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
b
|
||||
w
|
||||
w
|
||||
w
|
||||
w
|
||||
w
|
||||
b
|
||||
a
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
a
|
||||
b
|
||||
i
|
||||
d
|
||||
n
|
||||
d
|
||||
J
|
||||
b
|
||||
L
|
||||
w
|
||||
R
|
||||
w
|
||||
P
|
||||
b
|
||||
a
|
||||
"}
|
||||
(12,1,1) = {"
|
||||
a
|
||||
b
|
||||
h
|
||||
d
|
||||
d
|
||||
d
|
||||
r
|
||||
b
|
||||
x
|
||||
F
|
||||
S
|
||||
T
|
||||
x
|
||||
b
|
||||
a
|
||||
"}
|
||||
(13,1,1) = {"
|
||||
a
|
||||
b
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
b
|
||||
w
|
||||
w
|
||||
w
|
||||
w
|
||||
w
|
||||
b
|
||||
a
|
||||
"}
|
||||
(14,1,1) = {"
|
||||
a
|
||||
b
|
||||
d
|
||||
j
|
||||
q
|
||||
q
|
||||
s
|
||||
b
|
||||
w
|
||||
C
|
||||
O
|
||||
C
|
||||
w
|
||||
b
|
||||
a
|
||||
"}
|
||||
(15,1,1) = {"
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(16,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
@@ -0,0 +1,289 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/turf/open/space/bluespace,
|
||||
/area/hilbertshotel)
|
||||
"b" = (
|
||||
/turf/closed/indestructible/hotelwall,
|
||||
/area/hilbertshotel)
|
||||
"c" = (
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"d" = (
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"e" = (
|
||||
/turf/closed/indestructible/hoteldoor,
|
||||
/area/hilbertshotel)
|
||||
|
||||
(1,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
e
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
a
|
||||
b
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
b
|
||||
a
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
a
|
||||
b
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
b
|
||||
a
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
a
|
||||
b
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
b
|
||||
a
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
a
|
||||
b
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
b
|
||||
a
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
a
|
||||
b
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
b
|
||||
a
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
c
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
a
|
||||
b
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
b
|
||||
a
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
a
|
||||
b
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
b
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
b
|
||||
a
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
a
|
||||
b
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
b
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
b
|
||||
a
|
||||
"}
|
||||
(12,1,1) = {"
|
||||
a
|
||||
b
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
b
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
b
|
||||
a
|
||||
"}
|
||||
(13,1,1) = {"
|
||||
a
|
||||
b
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
b
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
b
|
||||
a
|
||||
"}
|
||||
(14,1,1) = {"
|
||||
a
|
||||
b
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
b
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
b
|
||||
a
|
||||
"}
|
||||
(15,1,1) = {"
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(16,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
@@ -0,0 +1,639 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"aa" = (
|
||||
/turf/open/space/bluespace,
|
||||
/area/hilbertshotel)
|
||||
"ab" = (
|
||||
/turf/closed/indestructible/hotelwall,
|
||||
/area/hilbertshotel)
|
||||
"ac" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/structure/mirror{
|
||||
broken = 1;
|
||||
desc = "Oh no, seven years of bad luck!";
|
||||
icon_state = "mirror_broke";
|
||||
pixel_y = 24
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"ad" = (
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"ae" = (
|
||||
/obj/structure/table/wood,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"af" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/structure/showcase/machinery/tv,
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"ag" = (
|
||||
/obj/structure/dresser,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"ah" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"ai" = (
|
||||
/obj/structure/table/wood/poker,
|
||||
/obj/item/toy/cards/deck,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"aj" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/flashlight/lamp/green,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"ak" = (
|
||||
/obj/structure/chair/comfy/brown{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"al" = (
|
||||
/obj/structure/table/wood/poker,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"am" = (
|
||||
/obj/structure/chair/comfy/brown{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"an" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"ap" = (
|
||||
/obj/structure/bed,
|
||||
/obj/item/bedsheet/random,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"aq" = (
|
||||
/obj/structure/chair/comfy/brown{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"ar" = (
|
||||
/obj/structure/mineral_door/wood,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"as" = (
|
||||
/turf/closed/indestructible/hoteldoor,
|
||||
/area/hilbertshotel)
|
||||
"at" = (
|
||||
/obj/effect/decal/cleanable/cobweb,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"au" = (
|
||||
/obj/machinery/light_switch{
|
||||
pixel_x = -32
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"av" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"aw" = (
|
||||
/obj/structure/closet/cabinet{
|
||||
anchored = 1
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"ax" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/decal/cleanable/cobweb/cobweb2,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"ay" = (
|
||||
/obj/structure/closet/crate/bin,
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"az" = (
|
||||
/obj/structure/mineral_door/paperframe,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"aA" = (
|
||||
/obj/structure/chair/stool/bar,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"aB" = (
|
||||
/obj/structure/extinguisher_cabinet{
|
||||
pixel_x = 32
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"aC" = (
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"aD" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"aE" = (
|
||||
/obj/structure/curtain,
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"aF" = (
|
||||
/obj/machinery/door/window/northleft,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"aG" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"aH" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/pen,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"aI" = (
|
||||
/obj/structure/mirror{
|
||||
pixel_x = -32
|
||||
},
|
||||
/obj/structure/sink{
|
||||
dir = 8;
|
||||
pixel_x = -12;
|
||||
pixel_y = 2
|
||||
},
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"aJ" = (
|
||||
/obj/structure/window/reinforced/tinted{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/window/reinforced/tinted{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"aK" = (
|
||||
/obj/machinery/shower{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"aL" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"aM" = (
|
||||
/obj/structure/table/wood/poker,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"aN" = (
|
||||
/obj/structure/toilet{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/window/reinforced/tinted{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/window/reinforced/tinted{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"aO" = (
|
||||
/obj/structure/window/reinforced/tinted{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"aP" = (
|
||||
/obj/item/bikehorn/rubberducky,
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"aQ" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/microwave,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"aR" = (
|
||||
/obj/machinery/smartfridge/food,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"aS" = (
|
||||
/obj/structure/window/reinforced/tinted{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/window/reinforced/tinted,
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"aT" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/structure/sink/kitchen,
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"aU" = (
|
||||
/obj/structure/bed,
|
||||
/obj/item/bedsheet/random,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"aV" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"aW" = (
|
||||
/obj/machinery/jukebox{
|
||||
req_access = null
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"aX" = (
|
||||
/obj/machinery/light_switch{
|
||||
pixel_x = 32
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"aY" = (
|
||||
/obj/structure/chair/stool/bar,
|
||||
/obj/effect/decal/cleanable/blood,
|
||||
/obj/effect/decal/cleanable/vomit,
|
||||
/obj/effect/mob_spawn/human/doctorhilbert,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"aZ" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"ba" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/decal/cleanable/cobweb/cobweb2,
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"bb" = (
|
||||
/obj/structure/mirror{
|
||||
pixel_x = -32
|
||||
},
|
||||
/obj/structure/sink{
|
||||
dir = 8;
|
||||
pixel_x = -12;
|
||||
pixel_y = 2
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"bc" = (
|
||||
/obj/effect/decal/cleanable/blood,
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"bd" = (
|
||||
/obj/machinery/shower{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"be" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"bf" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"bg" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"bh" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/light/small{
|
||||
dir = 8
|
||||
},
|
||||
/obj/item/soap/homemade{
|
||||
name = "used soap"
|
||||
},
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"bi" = (
|
||||
/obj/effect/decal/cleanable/vomit,
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"bj" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/soap/homemade{
|
||||
name = "used soap"
|
||||
},
|
||||
/turf/open/indestructible/hoteltile,
|
||||
/area/hilbertshotel)
|
||||
"bk" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/analyzer/hilbertsanalyzer,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
"bl" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/paper/crumpled/bloody/docsdeathnote,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotel)
|
||||
|
||||
(1,1,1) = {"
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
aa
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
as
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
aa
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
aa
|
||||
ab
|
||||
at
|
||||
aL
|
||||
ak
|
||||
ad
|
||||
aL
|
||||
an
|
||||
ad
|
||||
aF
|
||||
be
|
||||
aQ
|
||||
aG
|
||||
ab
|
||||
aa
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
aa
|
||||
ab
|
||||
ae
|
||||
ad
|
||||
al
|
||||
aq
|
||||
ad
|
||||
ad
|
||||
aA
|
||||
aH
|
||||
ad
|
||||
aL
|
||||
aG
|
||||
ab
|
||||
aa
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
aa
|
||||
ab
|
||||
af
|
||||
ad
|
||||
ai
|
||||
aq
|
||||
aL
|
||||
ad
|
||||
aY
|
||||
bl
|
||||
ad
|
||||
aL
|
||||
aT
|
||||
ab
|
||||
aa
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
aa
|
||||
ab
|
||||
ae
|
||||
ad
|
||||
aM
|
||||
aq
|
||||
ad
|
||||
ad
|
||||
aA
|
||||
bk
|
||||
bf
|
||||
bf
|
||||
aG
|
||||
ab
|
||||
aa
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
aa
|
||||
ab
|
||||
aW
|
||||
aL
|
||||
am
|
||||
ad
|
||||
aX
|
||||
ay
|
||||
aB
|
||||
aG
|
||||
bg
|
||||
aR
|
||||
aG
|
||||
ab
|
||||
aa
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
aa
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ar
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
aa
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
aa
|
||||
ab
|
||||
ag
|
||||
ad
|
||||
an
|
||||
ad
|
||||
au
|
||||
az
|
||||
aC
|
||||
bb
|
||||
bh
|
||||
aI
|
||||
bj
|
||||
ab
|
||||
aa
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
aa
|
||||
ab
|
||||
ah
|
||||
ad
|
||||
aL
|
||||
aL
|
||||
ad
|
||||
ab
|
||||
aZ
|
||||
aZ
|
||||
aC
|
||||
aZ
|
||||
aZ
|
||||
ab
|
||||
aa
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
aa
|
||||
ab
|
||||
ac
|
||||
ad
|
||||
ad
|
||||
aL
|
||||
av
|
||||
ab
|
||||
aD
|
||||
aC
|
||||
aN
|
||||
bi
|
||||
aV
|
||||
ab
|
||||
aa
|
||||
"}
|
||||
(12,1,1) = {"
|
||||
aa
|
||||
ab
|
||||
ah
|
||||
ad
|
||||
aL
|
||||
ad
|
||||
aw
|
||||
ab
|
||||
aE
|
||||
aJ
|
||||
aO
|
||||
aS
|
||||
aE
|
||||
ab
|
||||
aa
|
||||
"}
|
||||
(13,1,1) = {"
|
||||
aa
|
||||
ab
|
||||
ad
|
||||
ad
|
||||
aL
|
||||
ad
|
||||
ad
|
||||
ab
|
||||
aC
|
||||
bc
|
||||
aZ
|
||||
aZ
|
||||
aC
|
||||
ab
|
||||
aa
|
||||
"}
|
||||
(14,1,1) = {"
|
||||
aa
|
||||
ab
|
||||
ax
|
||||
aj
|
||||
ap
|
||||
aU
|
||||
ah
|
||||
ab
|
||||
ba
|
||||
bd
|
||||
aP
|
||||
aK
|
||||
aC
|
||||
ab
|
||||
aa
|
||||
"}
|
||||
(15,1,1) = {"
|
||||
aa
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
aa
|
||||
"}
|
||||
(16,1,1) = {"
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
"}
|
||||
@@ -0,0 +1,23 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/turf/closed/indestructible/hotelwall,
|
||||
/area/hilbertshotelstorage)
|
||||
"b" = (
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/hilbertshotelstorage)
|
||||
|
||||
(1,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
a
|
||||
b
|
||||
a
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
+55
-31
@@ -2,32 +2,45 @@
|
||||
|
||||
#define CHECK_DNA_AND_SPECIES(C) if((!(C.dna)) || (!(C.dna.species))) return
|
||||
|
||||
//Defines copying names of mutations in all cases, make sure to change this if you change mutation's name
|
||||
#define HULK "Hulk"
|
||||
#define XRAY "X Ray Vision"
|
||||
#define COLDRES "Cold Resistance"
|
||||
#define TK "Telekinesis"
|
||||
#define NERVOUS "Nervousness"
|
||||
#define EPILEPSY "Epilepsy"
|
||||
#define MUTATE "Unstable DNA"
|
||||
#define COUGH "Cough"
|
||||
#define DWARFISM "Dwarfism"
|
||||
#define CLOWNMUT "Clumsiness"
|
||||
#define TOURETTES "Tourettes Syndrome"
|
||||
#define DEAFMUT "Deafness"
|
||||
#define BLINDMUT "Blindness"
|
||||
#define RACEMUT "Monkified"
|
||||
#define BADSIGHT "Near Sightness"
|
||||
#define LASEREYES "Laser Eyes"
|
||||
#define CHAMELEON "Chameleon"
|
||||
#define WACKY "Wacky"
|
||||
#define MUT_MUTE "Mute"
|
||||
#define SMILE "Smile"
|
||||
#define STONER "Stoner"
|
||||
#define UNINTELLIGIBLE "Unintelligible"
|
||||
#define SWEDISH "Swedish"
|
||||
#define CHAV "Chav"
|
||||
#define ELVIS "Elvis"
|
||||
//Defines copying names of mutations in all cases, make sure to change this if you change mutation's type
|
||||
#define HULK /datum/mutation/human/hulk
|
||||
#define XRAY /datum/mutation/human/thermal/x_ray
|
||||
#define SPACEMUT /datum/mutation/human/space_adaptation
|
||||
#define TK /datum/mutation/human/telekinesis
|
||||
#define NERVOUS /datum/mutation/human/nervousness
|
||||
#define EPILEPSY /datum/mutation/human/epilepsy
|
||||
#define MUTATE /datum/mutation/human/bad_dna
|
||||
#define COUGH /datum/mutation/human/cough
|
||||
#define DWARFISM /datum/mutation/human/dwarfism
|
||||
#define CLOWNMUT /datum/mutation/human/clumsy
|
||||
#define TOURETTES /datum/mutation/human/tourettes
|
||||
#define DEAFMUT /datum/mutation/human/deaf
|
||||
#define BLINDMUT /datum/mutation/human/blind
|
||||
#define RACEMUT /datum/mutation/human/race
|
||||
#define BADSIGHT /datum/mutation/human/nearsight
|
||||
#define LASEREYES /datum/mutation/human/laser_eyes
|
||||
#define CHAMELEON /datum/mutation/human/chameleon
|
||||
#define WACKY /datum/mutation/human/wacky
|
||||
#define MUT_MUTE /datum/mutation/human/mute
|
||||
#define SMILE /datum/mutation/human/smile
|
||||
#define STONER /datum/mutation/human/stoner
|
||||
#define UNINTELLIGIBLE /datum/mutation/human/unintelligible
|
||||
#define SWEDISH /datum/mutation/human/swedish
|
||||
#define CHAV /datum/mutation/human/chav
|
||||
#define ELVIS /datum/mutation/human/elvis
|
||||
#define RADIOACTIVE /datum/mutation/human/radioactive
|
||||
#define GLOWY /datum/mutation/human/glow
|
||||
#define TELEPATHY /datum/mutation/human/telepathy
|
||||
#define FIREBREATH /datum/mutation/human/firebreath
|
||||
#define VOID /datum/mutation/human/void
|
||||
#define STRONG /datum/mutation/human/strong
|
||||
#define FIRESWEAT /datum/mutation/human/fire
|
||||
#define THERMAL /datum/mutation/human/thermal
|
||||
#define INSULATED /datum/mutation/human/insulated
|
||||
#define SHOCKTOUCH /datum/mutation/human/shock
|
||||
#define ANTENNA /datum/mutation/human/antenna
|
||||
#define PARANOIA /datum/mutation/human/paranoia
|
||||
#define MINDREAD /datum/mutation/human/mindreader
|
||||
|
||||
#define UI_CHANGED "ui changed"
|
||||
#define UE_CHANGED "ue changed"
|
||||
@@ -39,10 +52,13 @@
|
||||
//Types of usual mutations
|
||||
#define POSITIVE 1
|
||||
#define NEGATIVE 2
|
||||
#define MINOR_NEGATIVE 3
|
||||
#define MINOR_NEGATIVE 4
|
||||
|
||||
//Mutations that cant be taken from genetics and are not in SE
|
||||
#define NON_SCANNABLE -1
|
||||
|
||||
//Mutation classes. Normal being on them, extra being additional mutations with instability and other being stuff you dont want people to fuck with like wizard mutate
|
||||
#define MUT_NORMAL 1
|
||||
#define MUT_EXTRA 2
|
||||
#define MUT_OTHER 3
|
||||
|
||||
//DNA - Because fuck you and your magic numbers being all over the codebase.
|
||||
#define DNA_BLOCK_SIZE 3
|
||||
@@ -63,7 +79,8 @@
|
||||
#define DNA_MUTANTMARKING_BLOCK 13
|
||||
#define DNA_TAUR_BLOCK 14
|
||||
|
||||
#define DNA_STRUC_ENZYMES_BLOCKS 18
|
||||
#define DNA_SEQUENCE_LENGTH 4
|
||||
#define DNA_MUTATION_BLOCKS 8
|
||||
#define DNA_UNIQUE_ENZYMES_LEN 32
|
||||
|
||||
//Transformation proc stuff
|
||||
@@ -126,4 +143,11 @@
|
||||
////organ defines
|
||||
#define STANDARD_ORGAN_THRESHOLD 100
|
||||
#define STANDARD_ORGAN_HEALING 0.001
|
||||
#define STANDARD_ORGAN_DECAY 0.00222 //designed to fail organs when left to decay for ~15 minutes
|
||||
#define STANDARD_ORGAN_DECAY 0.00222 //designed to fail organs when left to decay for ~15 minutes
|
||||
|
||||
|
||||
|
||||
//used for the can_chromosome var on mutations
|
||||
#define CHROMOSOME_NEVER 0
|
||||
#define CHROMOSOME_NONE 1
|
||||
#define CHROMOSOME_USED 2
|
||||
@@ -81,3 +81,10 @@
|
||||
|
||||
#define SPAM_TRIGGER_WARNING 5 //Number of identical messages required before the spam-prevention will warn you to stfu
|
||||
#define SPAM_TRIGGER_AUTOMUTE 10 //Number of identical messages required before the spam-prevention will automute you
|
||||
|
||||
///Max length of a keypress command before it's considered to be a forged packet/bogus command
|
||||
#define MAX_KEYPRESS_COMMANDLENGTH 16
|
||||
///Max amount of keypress messages per second over two seconds before client is autokicked
|
||||
#define MAX_KEYPRESS_AUTOKICK 100
|
||||
///Length of held key rolling buffer
|
||||
#define HELD_KEY_BUFFER_LENGTH 15
|
||||
@@ -0,0 +1,17 @@
|
||||
#define MECHA_INT_FIRE (1<<0)
|
||||
#define MECHA_INT_TEMP_CONTROL (1<<1)
|
||||
#define MECHA_INT_SHORT_CIRCUIT (1<<2)
|
||||
#define MECHA_INT_TANK_BREACH (1<<3)
|
||||
#define MECHA_INT_CONTROL_LOST (1<<4)
|
||||
|
||||
#define MECHA_MELEE (1 << 0)
|
||||
#define MECHA_RANGED (1 << 1)
|
||||
|
||||
#define MECHA_FRONT_ARMOUR 1
|
||||
#define MECHA_SIDE_ARMOUR 2
|
||||
#define MECHA_BACK_ARMOUR 3
|
||||
|
||||
#define MECHA_LOCKED 0
|
||||
#define MECHA_SECURE_BOLTS 1
|
||||
#define MECHA_LOOSE_BOLTS 2
|
||||
#define MECHA_OPEN_HATCH 3
|
||||
@@ -82,7 +82,7 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s
|
||||
#define HANDS_LAYER 3
|
||||
#define BODY_FRONT_LAYER 2
|
||||
#define FIRE_LAYER 1 //If you're on fire
|
||||
#define TOTAL_LAYERS 30 //KEEP THIS UP-TO-DATE OR SHIT WILL BREAK ;_;
|
||||
#define TOTAL_LAYERS 31 //KEEP THIS UP-TO-DATE OR SHIT WILL BREAK ;_;
|
||||
|
||||
//Human Overlay Index Shortcuts for alternate_worn_layer, layers
|
||||
//Because I *KNOW* somebody will think layer+1 means "above"
|
||||
|
||||
@@ -91,3 +91,5 @@
|
||||
|
||||
#define STATUS_EFFECT_RAINBOWPROTECTION /datum/status_effect/rainbow_protection //Invulnerable and pacifistic
|
||||
#define STATUS_EFFECT_SLIMESKIN /datum/status_effect/slimeskin //Increased armor
|
||||
|
||||
#define STATUS_EFFECT_DNA_MELT /datum/status_effect/dna_melt //usually does something horrible to you when you hit 100 genetic instability
|
||||
|
||||
@@ -153,6 +153,8 @@
|
||||
#define TRAIT_FRIENDLY "friendly"
|
||||
#define TRAIT_ASSBLASTUSA "assblastusa"
|
||||
#define TRAIT_CULT_EYES "cult_eyes"
|
||||
#define TRAIT_XRAY_VISION "xray_vision"
|
||||
#define TRAIT_THERMAL_VISION "thermal_vision"
|
||||
|
||||
|
||||
// common trait sources
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
//////////////////////////////////////////////////////////
|
||||
//A bunch of helpers to make genetics less of a headache//
|
||||
//////////////////////////////////////////////////////////
|
||||
|
||||
#define GET_INITIALIZED_MUTATION(A) GLOB.all_mutations[A]
|
||||
#define GET_GENE_STRING(A, B) (B.mutation_index[A])
|
||||
#define GET_SEQUENCE(A) (GLOB.full_sequences[A])
|
||||
|
||||
#define GET_MUTATION_STABILIZER(A) ((A.stabilizer_coeff < 0) ? 1 : A.stabilizer_coeff)
|
||||
#define GET_MUTATION_SYNCHRONIZER(A) ((A.synchronizer_coeff < 0) ? 1 : A.synchronizer_coeff)
|
||||
#define GET_MUTATION_POWER(A) ((A.power_coeff < 0) ? 1 : A.power_coeff)
|
||||
#define GET_MUTATION_ENERGY(A) ((A.energy_coeff < 0) ? 1 : A.energy_coeff)
|
||||
@@ -21,8 +21,11 @@ GLOBAL_LIST(op_se_blocks)
|
||||
GLOBAL_VAR(NULLED_SE)
|
||||
GLOBAL_VAR(NULLED_UI)
|
||||
|
||||
GLOBAL_LIST_EMPTY(global_mutations) // list of hidden mutation things
|
||||
GLOBAL_LIST_EMPTY(all_mutations)
|
||||
GLOBAL_LIST_EMPTY(full_sequences)
|
||||
|
||||
GLOBAL_LIST_EMPTY(bad_mutations)
|
||||
GLOBAL_LIST_EMPTY(good_mutations)
|
||||
GLOBAL_LIST_EMPTY(not_good_mutations)
|
||||
GLOBAL_LIST_EMPTY(not_good_mutations)
|
||||
|
||||
GLOBAL_LIST_EMPTY(mutation_recipes)
|
||||
@@ -86,7 +86,7 @@
|
||||
|
||||
var/widescreenlayout = FALSE //CIT CHANGE - adds support for different hud layouts depending on widescreen pref
|
||||
if(owner.client && owner.client.prefs && owner.client.prefs.widescreenpref) //CIT CHANGE - ditto
|
||||
widescreenlayout = TRUE // CIT CHANGE - ditto
|
||||
widescreenlayout = FALSE // CIT CHANGE - ditto
|
||||
|
||||
var/obj/screen/using
|
||||
var/obj/screen/inventory/inv_box
|
||||
|
||||
@@ -351,6 +351,7 @@
|
||||
switch(user.m_intent)
|
||||
if(MOVE_INTENT_WALK)
|
||||
icon_state = "walking"
|
||||
|
||||
if(MOVE_INTENT_RUN)
|
||||
icon_state = "running"
|
||||
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
/*
|
||||
Telekinesis
|
||||
|
||||
This needs more thinking out, but I might as well.
|
||||
*/
|
||||
|
||||
/*
|
||||
Telekinetic attack:
|
||||
|
||||
By default, emulate the user's unarmed attack
|
||||
*/
|
||||
|
||||
@@ -45,7 +43,6 @@
|
||||
/*
|
||||
This is similar to item attack_self, but applies to anything
|
||||
that you can grab with a telekinetic grab.
|
||||
|
||||
It is used for manipulating things at range, for example, opening and closing closets.
|
||||
There are not a lot of defaults at this time, add more where appropriate.
|
||||
*/
|
||||
@@ -59,7 +56,6 @@
|
||||
|
||||
/*
|
||||
TK Grab Item (the workhorse of old TK)
|
||||
|
||||
* If you have not grabbed something, do a normal tk attack
|
||||
* If you have something, throw it at the target. If it is already adjacent, do a normal attackby()
|
||||
* If you click what you are holding, or attack_self(), do an attack_self_tk() on it.
|
||||
@@ -196,4 +192,4 @@
|
||||
return (OXYLOSS)
|
||||
|
||||
|
||||
#undef TK_MAXRANGE
|
||||
#undef TK_MAXRANGE
|
||||
@@ -16,7 +16,7 @@ SUBSYSTEM_DEF(atoms)
|
||||
|
||||
/datum/controller/subsystem/atoms/Initialize(timeofday)
|
||||
GLOB.fire_overlay.appearance_flags = RESET_COLOR
|
||||
setupGenetics() //to set the mutations' place in structural enzymes, so monkey.initialize() knows where to put the monkey mutation.
|
||||
setupGenetics() //to set the mutations' sequence
|
||||
initialized = INITIALIZATION_INNEW_MAPLOAD
|
||||
InitializeAtoms()
|
||||
return ..()
|
||||
@@ -108,16 +108,19 @@ SUBSYSTEM_DEF(atoms)
|
||||
BadInitializeCalls = SSatoms.BadInitializeCalls
|
||||
|
||||
/datum/controller/subsystem/atoms/proc/setupGenetics()
|
||||
var/list/avnums = new /list(DNA_STRUC_ENZYMES_BLOCKS)
|
||||
for(var/i=1, i<=DNA_STRUC_ENZYMES_BLOCKS, i++)
|
||||
avnums[i] = i
|
||||
CHECK_TICK
|
||||
|
||||
for(var/A in subtypesof(/datum/mutation/human))
|
||||
var/datum/mutation/human/B = new A()
|
||||
if(B.dna_block == NON_SCANNABLE)
|
||||
var/list/mutations = subtypesof(/datum/mutation/human)
|
||||
shuffle_inplace(mutations)
|
||||
for(var/A in subtypesof(/datum/generecipe))
|
||||
var/datum/generecipe/GR = A
|
||||
GLOB.mutation_recipes[initial(GR.required)] = initial(GR.result)
|
||||
for(var/i in 1 to LAZYLEN(mutations))
|
||||
var/path = mutations[i] //byond gets pissy when we do it in one line
|
||||
var/datum/mutation/human/B = new path ()
|
||||
B.alias = "Mutation #[i]"
|
||||
GLOB.all_mutations[B.type] = B
|
||||
GLOB.full_sequences[B.type] = generate_gene_sequence(B.blocks)
|
||||
if(B.locked)
|
||||
continue
|
||||
B.dna_block = pick_n_take(avnums)
|
||||
if(B.quality == POSITIVE)
|
||||
GLOB.good_mutations |= B
|
||||
else if(B.quality == NEGATIVE)
|
||||
|
||||
@@ -33,6 +33,7 @@ SUBSYSTEM_DEF(mapping)
|
||||
var/list/z_list
|
||||
var/datum/space_level/transit
|
||||
var/datum/space_level/empty_space
|
||||
var/num_of_res_levels = 1
|
||||
|
||||
//dlete dis once #39770 is resolved
|
||||
/datum/controller/subsystem/mapping/proc/HACK_LoadMapConfig()
|
||||
@@ -449,6 +450,11 @@ GLOBAL_LIST_EMPTY(the_station_areas)
|
||||
for(var/i in levels_by_trait(ZTRAIT_RESERVED))
|
||||
if(reserve.Reserve(width, height, i))
|
||||
return reserve
|
||||
//If we didn't return at this point, theres a good chance we ran out of room on the exisiting reserved z levels, so lets try a new one
|
||||
num_of_res_levels += 1
|
||||
var/newReserved = add_new_zlevel("Transit/Reserved [num_of_res_levels]", list(ZTRAIT_RESERVED = TRUE))
|
||||
if(reserve.Reserve(width, height, newReserved))
|
||||
return reserve
|
||||
else
|
||||
if(!level_trait(z, ZTRAIT_RESERVED))
|
||||
qdel(reserve)
|
||||
@@ -481,6 +487,7 @@ GLOBAL_LIST_EMPTY(the_station_areas)
|
||||
LAZYINITLIST(unused_turfs["[T.z]"])
|
||||
unused_turfs["[T.z]"] |= T
|
||||
T.flags_1 |= UNUSED_RESERVATION_TURF_1
|
||||
GLOB.areas_by_type[world.area].contents += T
|
||||
CHECK_TICK
|
||||
|
||||
//DO NOT CALL THIS PROC DIRECTLY, CALL wipe_reservations().
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
var/volume
|
||||
var/e_range
|
||||
|
||||
/datum/component/footstep/Initialize(volume_ = 0.5, e_range_ = -1)
|
||||
/datum/component/footstep/Initialize(volume_ = 0.4, e_range_ = -1)
|
||||
if(!isliving(parent))
|
||||
return COMPONENT_INCOMPATIBLE
|
||||
volume = volume_
|
||||
@@ -32,7 +32,7 @@
|
||||
return
|
||||
if(ishuman(C) && C.m_intent == MOVE_INTENT_WALK)
|
||||
v /= 2
|
||||
e -= 5
|
||||
e -= 4
|
||||
steps++
|
||||
|
||||
if(steps >= 3)
|
||||
@@ -58,7 +58,7 @@
|
||||
if(isclawfoot(LM))
|
||||
if(isalienadult(LM)) //xenos are stealthy and get quieter footsteps
|
||||
v /= 3
|
||||
e -= 5
|
||||
e -= 4
|
||||
|
||||
playsound(T, pick(GLOB.clawfootstep[T.clawfootstep][1]),
|
||||
GLOB.clawfootstep[T.clawfootstep][2] * v,
|
||||
|
||||
@@ -277,7 +277,6 @@
|
||||
L.fields["sex"] = H.gender
|
||||
L.fields["blood_type"] = H.dna.blood_type
|
||||
L.fields["b_dna"] = H.dna.unique_enzymes
|
||||
L.fields["enzymes"] = H.dna.struc_enzymes
|
||||
L.fields["identity"] = H.dna.uni_identity
|
||||
L.fields["species"] = H.dna.species.type
|
||||
L.fields["features"] = H.dna.features
|
||||
|
||||
@@ -58,12 +58,12 @@ Bonus
|
||||
symptom_delay_max = 60
|
||||
if(A.properties["resistance"] >= 8) //mutate twice
|
||||
power = 2
|
||||
possible_mutations = (GLOB.bad_mutations | GLOB.not_good_mutations) - GLOB.mutations_list[RACEMUT]
|
||||
possible_mutations = (GLOB.bad_mutations | GLOB.not_good_mutations) - GLOB.all_mutations[RACEMUT]
|
||||
var/mob/living/carbon/M = A.affected_mob
|
||||
if(M)
|
||||
if(!M.has_dna())
|
||||
return
|
||||
archived_dna = M.dna.struc_enzymes
|
||||
archived_dna = M.dna.mutation_index
|
||||
|
||||
// Give them back their old DNA when cured.
|
||||
/datum/symptom/genetic_mutation/End(datum/disease/advance/A)
|
||||
@@ -74,5 +74,5 @@ Bonus
|
||||
if(M && archived_dna)
|
||||
if(!M.has_dna())
|
||||
return
|
||||
M.dna.struc_enzymes = archived_dna
|
||||
M.dna.mutation_index = archived_dna
|
||||
M.domutcheck()
|
||||
|
||||
+238
-55
@@ -2,7 +2,6 @@
|
||||
/////////////////////////// DNA DATUM
|
||||
/datum/dna
|
||||
var/unique_enzymes
|
||||
var/struc_enzymes
|
||||
var/uni_identity
|
||||
var/blood_type
|
||||
var/datum/species/species = new /datum/species/human //The type of mutant race the player is if applicable (i.e. potato-man)
|
||||
@@ -11,10 +10,13 @@
|
||||
var/nameless = FALSE
|
||||
var/custom_species //siiiiigh I guess this is important
|
||||
var/list/mutations = list() //All mutations are from now on here
|
||||
var/list/temporary_mutations = list() //Timers for temporary mutations
|
||||
var/list/temporary_mutations = list() //Temporary changes to the UE
|
||||
var/list/previous = list() //For temporary name/ui/ue/blood_type modifications
|
||||
var/mob/living/holder
|
||||
var/delete_species = TRUE //Set to FALSE when a body is scanned by a cloner to fix #38875
|
||||
var/mutation_index[DNA_MUTATION_BLOCKS] //List of which mutations this carbon has and its assigned block
|
||||
var/stability = 100
|
||||
var/scrambled = FALSE //Did we take something like mutagen? In that case we cant get our genes scanned to instantly cheese all the powers.
|
||||
|
||||
/datum/dna/New(mob/living/new_holder)
|
||||
if(istype(new_holder))
|
||||
@@ -53,11 +55,11 @@
|
||||
H.give_genitals(TRUE)//This gives the body the genitals of this DNA. Used for any transformations based on DNA
|
||||
destination.flavor_text = destination.dna.features["flavor_text"] //Update the flavor_text to use new dna text
|
||||
if(transfer_SE)
|
||||
destination.dna.struc_enzymes = struc_enzymes
|
||||
destination.dna.mutation_index = mutation_index
|
||||
|
||||
/datum/dna/proc/copy_dna(datum/dna/new_dna)
|
||||
new_dna.unique_enzymes = unique_enzymes
|
||||
new_dna.struc_enzymes = struc_enzymes
|
||||
new_dna.mutation_index = mutation_index
|
||||
new_dna.uni_identity = uni_identity
|
||||
new_dna.blood_type = blood_type
|
||||
new_dna.features = features.Copy()
|
||||
@@ -67,26 +69,32 @@
|
||||
new_dna.custom_species = custom_species
|
||||
new_dna.mutations = mutations.Copy()
|
||||
|
||||
/datum/dna/proc/add_mutation(mutation_name)
|
||||
var/datum/mutation/human/HM = GLOB.mutations_list[mutation_name]
|
||||
HM.on_acquiring(holder)
|
||||
//See mutation.dm for what 'class' does. 'time' is time till it removes itself in decimals. 0 for no timer
|
||||
/datum/dna/proc/add_mutation(mutation, class = MUT_OTHER, time)
|
||||
var/mutation_type = mutation
|
||||
if(istype(mutation, /datum/mutation/human))
|
||||
var/datum/mutation/human/HM = mutation
|
||||
mutation_type = HM.type
|
||||
if(get_mutation(mutation_type))
|
||||
return
|
||||
return force_give(new mutation_type (class, time, copymut = mutation))
|
||||
|
||||
/datum/dna/proc/remove_mutation(mutation_name)
|
||||
var/datum/mutation/human/HM = GLOB.mutations_list[mutation_name]
|
||||
HM.on_losing(holder)
|
||||
/datum/dna/proc/remove_mutation(mutation_type)
|
||||
return force_lose(get_mutation(mutation_type))
|
||||
|
||||
/datum/dna/proc/check_mutation(mutation_name)
|
||||
var/datum/mutation/human/HM = GLOB.mutations_list[mutation_name]
|
||||
return mutations.Find(HM)
|
||||
/datum/dna/proc/check_mutation(mutation_type)
|
||||
return get_mutation(mutation_type)
|
||||
|
||||
/datum/dna/proc/remove_all_mutations()
|
||||
remove_mutation_group(mutations)
|
||||
/datum/dna/proc/remove_all_mutations(list/classes = list(MUT_NORMAL, MUT_EXTRA, MUT_OTHER), mutadone = FALSE)
|
||||
remove_mutation_group(mutations, classes, mutadone)
|
||||
scrambled = FALSE
|
||||
|
||||
/datum/dna/proc/remove_mutation_group(list/group)
|
||||
/datum/dna/proc/remove_mutation_group(list/group, list/classes = list(MUT_NORMAL, MUT_EXTRA, MUT_OTHER), mutadone = FALSE)
|
||||
if(!group)
|
||||
return
|
||||
for(var/datum/mutation/human/HM in group)
|
||||
HM.force_lose(holder)
|
||||
if((HM.class in classes) && !(HM.mutadone_proof && mutadone))
|
||||
force_lose(HM)
|
||||
|
||||
/datum/dna/proc/generate_uni_identity()
|
||||
. = ""
|
||||
@@ -128,19 +136,49 @@
|
||||
. += random_string(DNA_BLOCK_SIZE,GLOB.hex_characters)
|
||||
return .
|
||||
|
||||
/datum/dna/proc/generate_struc_enzymes()
|
||||
var/list/sorting = new /list(DNA_STRUC_ENZYMES_BLOCKS)
|
||||
var/result = ""
|
||||
for(var/datum/mutation/human/A in GLOB.good_mutations + GLOB.bad_mutations + GLOB.not_good_mutations)
|
||||
if(A.name == RACEMUT && ismonkey(holder))
|
||||
sorting[A.dna_block] = num2hex(A.lowest_value + rand(0, 256 * 6), DNA_BLOCK_SIZE)
|
||||
mutations |= A
|
||||
else
|
||||
sorting[A.dna_block] = random_string(DNA_BLOCK_SIZE, list("0","1","2","3","4","5","6"))
|
||||
/datum/dna/proc/generate_dna_blocks()
|
||||
var/bonus
|
||||
if(species && species.inert_mutation)
|
||||
bonus = GET_INITIALIZED_MUTATION(species.inert_mutation)
|
||||
var/list/mutations_temp = GLOB.good_mutations + GLOB.bad_mutations + GLOB.not_good_mutations + bonus
|
||||
if(!LAZYLEN(mutations_temp))
|
||||
return
|
||||
mutation_index.Cut()
|
||||
shuffle_inplace(mutations_temp)
|
||||
if(ismonkey(holder))
|
||||
mutations |= new RACEMUT(MUT_NORMAL)
|
||||
mutation_index[RACEMUT] = GET_SEQUENCE(RACEMUT)
|
||||
else
|
||||
mutation_index[RACEMUT] = create_sequence(RACEMUT, FALSE)
|
||||
for(var/i in 2 to DNA_MUTATION_BLOCKS)
|
||||
var/datum/mutation/human/M = mutations_temp[i]
|
||||
mutation_index[M.type] = create_sequence(M.type, FALSE,M.difficulty)
|
||||
shuffle_inplace(mutation_index)
|
||||
|
||||
for(var/B in sorting)
|
||||
result += B
|
||||
return result
|
||||
//Used to generate original gene sequences for every mutation
|
||||
/proc/generate_gene_sequence(length=4)
|
||||
var/static/list/active_sequences = list("AT","TA","GC","CG")
|
||||
var/sequence
|
||||
for(var/i in 1 to length*DNA_SEQUENCE_LENGTH)
|
||||
sequence += pick(active_sequences)
|
||||
return sequence
|
||||
|
||||
//Used to create a chipped gene sequence
|
||||
/proc/create_sequence(mutation, active, difficulty)
|
||||
if(!difficulty)
|
||||
var/datum/mutation/human/A = GET_INITIALIZED_MUTATION(mutation) //leaves the possibility to change difficulty mid-round
|
||||
if(!A)
|
||||
return
|
||||
difficulty = A.difficulty
|
||||
difficulty += rand(-2,4)
|
||||
var/sequence = GET_SEQUENCE(mutation)
|
||||
if(active)
|
||||
return sequence
|
||||
while(difficulty)
|
||||
var/randnum = rand(1, length(sequence))
|
||||
sequence = copytext(sequence, 1, randnum) + "X" + copytext(sequence, randnum+1, length(sequence)+1)
|
||||
difficulty--
|
||||
return sequence
|
||||
|
||||
/datum/dna/proc/generate_unique_enzymes()
|
||||
. = ""
|
||||
@@ -185,12 +223,57 @@
|
||||
if(DNA_TAUR_BLOCK)
|
||||
construct_block(GLOB.taur_list.Find(features["taur"]), GLOB.taur_list.len)
|
||||
|
||||
//Please use add_mutation or activate_mutation instead
|
||||
/datum/dna/proc/force_give(datum/mutation/human/HM)
|
||||
if(holder && HM)
|
||||
if(HM.class == MUT_NORMAL)
|
||||
set_se(1, HM)
|
||||
. = HM.on_acquiring(holder)
|
||||
if(.)
|
||||
qdel(HM)
|
||||
update_instability()
|
||||
|
||||
//Use remove_mutation instead
|
||||
/datum/dna/proc/force_lose(datum/mutation/human/HM)
|
||||
if(holder && (HM in mutations))
|
||||
set_se(0, HM)
|
||||
. = HM.on_losing(holder)
|
||||
update_instability(FALSE)
|
||||
return
|
||||
|
||||
/datum/dna/proc/is_same_as(datum/dna/D)
|
||||
if(uni_identity == D.uni_identity && struc_enzymes == D.struc_enzymes && real_name == D.real_name && nameless == D.nameless && custom_species == D.custom_species)
|
||||
if(uni_identity == D.uni_identity && mutation_index == D.mutation_index && real_name == D.real_name && nameless == D.nameless && custom_species == D.custom_species)
|
||||
if(species.type == D.species.type && features == D.features && blood_type == D.blood_type)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/datum/dna/proc/update_instability(alert=TRUE)
|
||||
stability = 100
|
||||
for(var/datum/mutation/human/M in mutations)
|
||||
if(M.class == MUT_EXTRA)
|
||||
stability -= M.instability * GET_MUTATION_STABILIZER(M)
|
||||
if(holder)
|
||||
var/message
|
||||
if(alert)
|
||||
switch(stability)
|
||||
if(70 to 90)
|
||||
message = "<span class='warning'>You shiver.</span>"
|
||||
if(60 to 69)
|
||||
message = "<span class='warning'>You feel cold.</span>"
|
||||
if(40 to 59)
|
||||
message = "<span class='warning'>You feel sick.</span>"
|
||||
if(20 to 39)
|
||||
message = "<span class='warning'>It feels like your skin is moving.</span>"
|
||||
if(1 to 19)
|
||||
message = "<span class='warning'>You can feel your cells burning.</span>"
|
||||
if(-INFINITY to 0)
|
||||
message = "<span class='boldwarning'>You can feel your DNA exploding, we need to do something fast!</span>"
|
||||
if(stability <= 0)
|
||||
holder.apply_status_effect(STATUS_EFFECT_DNA_MELT)
|
||||
if(message)
|
||||
to_chat(holder, message)
|
||||
|
||||
|
||||
//used to update dna UI, UE, and dna.real_name.
|
||||
/datum/dna/proc/update_dna_identity()
|
||||
uni_identity = generate_uni_identity()
|
||||
@@ -201,7 +284,7 @@
|
||||
blood_type = newblood_type
|
||||
unique_enzymes = generate_unique_enzymes()
|
||||
uni_identity = generate_uni_identity()
|
||||
struc_enzymes = generate_struc_enzymes()
|
||||
generate_dna_blocks()
|
||||
features = random_features()
|
||||
|
||||
|
||||
@@ -265,7 +348,7 @@
|
||||
return dna
|
||||
|
||||
|
||||
/mob/living/carbon/human/proc/hardset_dna(ui, se, newreal_name, newblood_type, datum/species/mrace, newfeatures)
|
||||
/mob/living/carbon/human/proc/hardset_dna(ui, list/mutation_index, newreal_name, newblood_type, datum/species/mrace, newfeatures)
|
||||
|
||||
if(newfeatures)
|
||||
dna.features = newfeatures
|
||||
@@ -287,8 +370,8 @@
|
||||
dna.uni_identity = ui
|
||||
updateappearance(icon_update=0)
|
||||
|
||||
if(se)
|
||||
dna.struc_enzymes = se
|
||||
if(LAZYLEN(mutation_index))
|
||||
dna.mutation_index = mutation_index
|
||||
domutcheck()
|
||||
|
||||
if(mrace || newfeatures || ui)
|
||||
@@ -331,19 +414,63 @@
|
||||
/mob/proc/domutcheck()
|
||||
return
|
||||
|
||||
/mob/living/carbon/domutcheck(force_powers=0) //Set force_powers to 1 to bypass the power chance
|
||||
/mob/living/carbon/domutcheck()
|
||||
if(!has_dna())
|
||||
return
|
||||
|
||||
for(var/datum/mutation/human/A in GLOB.good_mutations | GLOB.bad_mutations | GLOB.not_good_mutations)
|
||||
if(ismob(A.check_block(src, force_powers)))
|
||||
for(var/mutation in dna.mutation_index)
|
||||
if(ismob(dna.check_block(mutation)))
|
||||
return //we got monkeyized/humanized, this mob will be deleted, no need to continue.
|
||||
|
||||
update_mutations_overlay()
|
||||
|
||||
/datum/dna/proc/check_block(mutation)
|
||||
var/datum/mutation/human/HM = get_mutation(mutation)
|
||||
if(check_block_string(mutation))
|
||||
if(!HM)
|
||||
. = add_mutation(mutation, MUT_NORMAL)
|
||||
return
|
||||
return force_lose(HM)
|
||||
|
||||
//Return the active mutation of a type if there is one
|
||||
/datum/dna/proc/get_mutation(A)
|
||||
for(var/datum/mutation/human/HM in mutations)
|
||||
if(HM.type == A)
|
||||
return HM
|
||||
|
||||
/datum/dna/proc/check_block_string(mutation)
|
||||
if((LAZYLEN(mutation_index) > DNA_MUTATION_BLOCKS) || !(mutation in mutation_index))
|
||||
return 0
|
||||
return is_gene_active(mutation)
|
||||
|
||||
/datum/dna/proc/is_gene_active(mutation)
|
||||
return (mutation_index[mutation] == GET_SEQUENCE(mutation))
|
||||
|
||||
/datum/dna/proc/set_se(on=TRUE, datum/mutation/human/HM)
|
||||
if(!HM || !(HM.type in mutation_index) || (LAZYLEN(mutation_index) < DNA_MUTATION_BLOCKS))
|
||||
return
|
||||
. = TRUE
|
||||
if(on)
|
||||
mutation_index[HM.type] = GET_SEQUENCE(HM.type)
|
||||
else if(GET_SEQUENCE(HM.type) == mutation_index[HM.type])
|
||||
mutation_index[HM.type] = create_sequence(HM.type, FALSE, HM.difficulty)
|
||||
|
||||
/datum/dna/proc/activate_mutation(mutation) //note that this returns a boolean and not a new mob
|
||||
if(!mutation)
|
||||
return FALSE
|
||||
var/mutation_type = mutation
|
||||
if(istype(mutation, /datum/mutation/human))
|
||||
var/datum/mutation/human/M = mutation
|
||||
mutation_type = M.type
|
||||
if(!mutation_in_sequence(mutation_type)) //cant activate what we dont have, use add_mutation
|
||||
return FALSE
|
||||
add_mutation(mutation, MUT_NORMAL)
|
||||
return TRUE
|
||||
|
||||
|
||||
|
||||
/////////////////////////// DNA HELPER-PROCS //////////////////////////////
|
||||
|
||||
/proc/getleftblocks(input,blocknumber,blocksize)
|
||||
if(blocknumber > 1)
|
||||
return copytext(input,1,((blocksize*blocknumber)-(blocksize-1)))
|
||||
@@ -360,29 +487,47 @@
|
||||
return 0
|
||||
return getleftblocks(istring, blocknumber, blocksize) + replacement + getrightblocks(istring, blocknumber, blocksize)
|
||||
|
||||
/datum/dna/proc/mutation_in_sequence(mutation)
|
||||
if(!mutation)
|
||||
return
|
||||
if(istype(mutation, /datum/mutation/human))
|
||||
var/datum/mutation/human/HM = mutation
|
||||
if(HM.type in mutation_index)
|
||||
return TRUE
|
||||
else if(mutation in mutation_index)
|
||||
return TRUE
|
||||
|
||||
/mob/living/carbon/proc/randmut(list/candidates, difficulty = 2)
|
||||
if(!has_dna())
|
||||
return
|
||||
var/datum/mutation/human/num = pick(candidates)
|
||||
. = num.force_give(src)
|
||||
var/mutation = pick(candidates)
|
||||
. = dna.add_mutation(mutation)
|
||||
|
||||
/mob/living/carbon/proc/randmutb()
|
||||
/mob/living/carbon/proc/easy_randmut(quality = POSITIVE + NEGATIVE + MINOR_NEGATIVE, scrambled = TRUE, sequence = TRUE, exclude_monkey = TRUE)
|
||||
if(!has_dna())
|
||||
return
|
||||
var/datum/mutation/human/HM = pick((GLOB.bad_mutations | GLOB.not_good_mutations) - GLOB.mutations_list[RACEMUT])
|
||||
. = HM.force_give(src)
|
||||
var/list/mutations = list()
|
||||
if(quality & POSITIVE)
|
||||
mutations += GLOB.good_mutations
|
||||
if(quality & NEGATIVE)
|
||||
mutations += GLOB.bad_mutations
|
||||
if(quality & MINOR_NEGATIVE)
|
||||
mutations += GLOB.not_good_mutations
|
||||
var/list/possible = list()
|
||||
for(var/datum/mutation/human/A in mutations)
|
||||
if((!sequence || dna.mutation_in_sequence(A.type)) && !dna.get_mutation(A.type))
|
||||
possible += A.type
|
||||
if(exclude_monkey)
|
||||
possible.Remove(RACEMUT)
|
||||
if(LAZYLEN(possible))
|
||||
var/mutation = pick(possible)
|
||||
. = dna.activate_mutation(mutation)
|
||||
if(scrambled)
|
||||
var/datum/mutation/human/HM = dna.get_mutation(mutation)
|
||||
if(HM)
|
||||
HM.scrambled = TRUE
|
||||
return TRUE
|
||||
|
||||
/mob/living/carbon/proc/randmutg()
|
||||
if(!has_dna())
|
||||
return
|
||||
var/datum/mutation/human/HM = pick(GLOB.good_mutations)
|
||||
. = HM.force_give(src)
|
||||
|
||||
/mob/living/carbon/proc/randmutvg()
|
||||
if(!has_dna())
|
||||
return
|
||||
var/datum/mutation/human/HM = pick((GLOB.good_mutations) - GLOB.mutations_list[HULK] - GLOB.mutations_list[DWARFISM])
|
||||
. = HM.force_give(src)
|
||||
|
||||
/mob/living/carbon/proc/randmuti()
|
||||
if(!has_dna())
|
||||
@@ -405,9 +550,9 @@
|
||||
if(!M.has_dna())
|
||||
return 0
|
||||
if(se)
|
||||
for(var/i=1, i<=DNA_STRUC_ENZYMES_BLOCKS, i++)
|
||||
for(var/i=1, i<=DNA_MUTATION_BLOCKS, i++)
|
||||
if(prob(probability))
|
||||
M.dna.struc_enzymes = setblock(M.dna.struc_enzymes, i, random_string(DNA_BLOCK_SIZE, GLOB.hex_characters))
|
||||
M.dna.generate_dna_blocks()
|
||||
M.domutcheck()
|
||||
if(ui)
|
||||
for(var/i=1, i<=DNA_UNI_IDENTITY_BLOCKS, i++)
|
||||
@@ -434,3 +579,41 @@
|
||||
return value
|
||||
|
||||
/////////////////////////// DNA HELPER-PROCS
|
||||
|
||||
/mob/living/carbon/human/proc/something_horrible()
|
||||
if(!has_dna()) //shouldn't ever happen anyway so it's just in really weird cases
|
||||
return
|
||||
if(dna.stability > 0)
|
||||
return
|
||||
var/instability = -dna.stability
|
||||
dna.remove_all_mutations()
|
||||
dna.stability = 100
|
||||
if(prob(max(70-instability,0)))
|
||||
switch(rand(0,3)) //not complete and utter death
|
||||
if(0)
|
||||
monkeyize()
|
||||
if(1)
|
||||
gain_trauma(/datum/brain_trauma/severe/paralysis)
|
||||
if(2)
|
||||
corgize()
|
||||
if(3)
|
||||
to_chat(src, "<span class='notice'>Oh, we actually feel quite alright!</span>")
|
||||
else
|
||||
switch(rand(0,3))
|
||||
if(0)
|
||||
gib()
|
||||
if(1)
|
||||
dust()
|
||||
|
||||
if(2)
|
||||
death()
|
||||
petrify(INFINITY)
|
||||
if(3)
|
||||
if(prob(90))
|
||||
var/obj/item/bodypart/BP = get_bodypart(pick(BODY_ZONE_CHEST,BODY_ZONE_HEAD))
|
||||
if(BP)
|
||||
BP.dismember()
|
||||
else
|
||||
gib()
|
||||
else
|
||||
set_species(/datum/species/dullahan)
|
||||
+96
-40
@@ -1,58 +1,55 @@
|
||||
GLOBAL_LIST_EMPTY(mutations_list)
|
||||
|
||||
/datum/mutation
|
||||
|
||||
var/name
|
||||
|
||||
/datum/mutation/New()
|
||||
GLOB.mutations_list[name] = src
|
||||
|
||||
/datum/mutation/human
|
||||
var/dna_block
|
||||
name = "mutation"
|
||||
var/desc = "A mutation."
|
||||
var/locked
|
||||
var/quality
|
||||
var/get_chance = 100
|
||||
var/lowest_value = 256 * 8
|
||||
var/text_gain_indication = ""
|
||||
var/text_lose_indication = ""
|
||||
var/list/mutable_appearance/visual_indicators = list()
|
||||
var/obj/effect/proc_holder/spell/power
|
||||
var/layer_used = MUTATIONS_LAYER //which mutation layer to use
|
||||
var/list/species_allowed = list() //to restrict mutation to only certain species
|
||||
var/health_req //minimum health required to acquire the mutation
|
||||
var/limb_req //required limbs to acquire this mutation
|
||||
var/time_coeff = 1 //coefficient for timed mutations
|
||||
var/datum/dna/dna
|
||||
var/mob/living/carbon/human/owner
|
||||
var/instability = 0 //instability the holder gets when the mutation is not native
|
||||
var/blocks = 4 //Amount of those big blocks with gene sequences
|
||||
var/difficulty = 8 //Amount of missing sequences. Sometimes it removes an entire pair for 2 points
|
||||
var/timed = FALSE //Boolean to easily check if we're going to self destruct
|
||||
var/alias //'Mutation #49', decided every round to get some form of distinction between undiscovered mutations
|
||||
var/scrambled = FALSE //Wheter we can read it if it's active. To avoid cheesing with mutagen
|
||||
var/class //Decides player accesibility, sorta
|
||||
//MUT_NORMAL - A mutation that can be activated and deactived by completing a sequence
|
||||
//MUT_EXTRA - A mutation that is in the mutations tab, and can be given and taken away through though the DNA console. Has a 0 before it's name in the mutation section of the dna console
|
||||
//MUT_OTHER Cannot be interacted with by players through normal means. I.E. wizards mutate
|
||||
|
||||
/datum/mutation/human/proc/force_give(mob/living/carbon/human/owner)
|
||||
set_block(owner)
|
||||
. = on_acquiring(owner)
|
||||
var/can_chromosome = CHROMOSOME_NONE //can we take chromosomes? 0: CHROMOSOME_NEVER never, 1:CHROMOSOME_NONE yeah, 2: CHROMOSOME_USED no, already have one
|
||||
var/chromosome_name //purely cosmetic
|
||||
var/modified = FALSE //ugly but we really don't want chromosomes and on_acquiring to overlap and apply double the powers
|
||||
var/mutadone_proof = FALSE
|
||||
|
||||
/datum/mutation/human/proc/force_lose(mob/living/carbon/human/owner)
|
||||
set_block(owner, 0)
|
||||
. = on_losing(owner)
|
||||
//Chromosome stuff - set to -1 to prevent people from changing it. Example: It'd be a waste to decrease cooldown on mutism
|
||||
var/stabilizer_coeff = 1 //genetic stability coeff
|
||||
var/synchronizer_coeff = -1 //makes the mutation hurt the user less
|
||||
var/power_coeff = -1 //boosts mutation strength
|
||||
var/energy_coeff = -1 //lowers mutation cooldown
|
||||
|
||||
/datum/mutation/human/proc/set_se(se_string, on = 1)
|
||||
if(!se_string || lentext(se_string) < DNA_STRUC_ENZYMES_BLOCKS * DNA_BLOCK_SIZE)
|
||||
return
|
||||
var/before = copytext(se_string, 1, ((dna_block - 1) * DNA_BLOCK_SIZE) + 1)
|
||||
var/injection = num2hex(on ? rand(lowest_value, (256 * 16) - 1) : rand(0, lowest_value - 1), DNA_BLOCK_SIZE)
|
||||
var/after = copytext(se_string, (dna_block * DNA_BLOCK_SIZE) + 1, 0)
|
||||
return before + injection + after
|
||||
|
||||
/datum/mutation/human/proc/set_block(mob/living/carbon/owner, on = 1)
|
||||
if(owner && owner.has_dna())
|
||||
owner.dna.struc_enzymes = set_se(owner.dna.struc_enzymes, on)
|
||||
|
||||
/datum/mutation/human/proc/check_block_string(se_string)
|
||||
if(!se_string || lentext(se_string) < DNA_STRUC_ENZYMES_BLOCKS * DNA_BLOCK_SIZE)
|
||||
return 0
|
||||
if(hex2num(getblock(se_string, dna_block)) >= lowest_value)
|
||||
return 1
|
||||
|
||||
/datum/mutation/human/proc/check_block(mob/living/carbon/human/owner, force_powers=0)
|
||||
if(check_block_string(owner.dna.struc_enzymes))
|
||||
if(prob(get_chance)||force_powers)
|
||||
. = on_acquiring(owner)
|
||||
else
|
||||
. = on_losing(owner)
|
||||
/datum/mutation/human/New(class_ = MUT_OTHER, timer, datum/mutation/human/copymut)
|
||||
. = ..()
|
||||
class = class_
|
||||
if(timer)
|
||||
addtimer(CALLBACK(src, .proc/remove), timer)
|
||||
timed = TRUE
|
||||
if(copymut && istype(copymut, /datum/mutation/human))
|
||||
copy_mutation(copymut)
|
||||
|
||||
/datum/mutation/human/proc/on_acquiring(mob/living/carbon/human/owner)
|
||||
if(!owner || !istype(owner) || owner.stat == DEAD || (src in owner.dna.mutations))
|
||||
@@ -63,7 +60,8 @@ GLOBAL_LIST_EMPTY(mutations_list)
|
||||
return TRUE
|
||||
if(limb_req && !owner.get_bodypart(limb_req))
|
||||
return TRUE
|
||||
owner.dna.mutations.Add(src)
|
||||
dna = owner.dna
|
||||
dna.mutations += src
|
||||
if(text_gain_indication)
|
||||
to_chat(owner, text_gain_indication)
|
||||
if(visual_indicators.len)
|
||||
@@ -75,6 +73,10 @@ GLOBAL_LIST_EMPTY(mutations_list)
|
||||
owner.overlays_standing[layer_used] = mut_overlay
|
||||
owner.apply_overlay(layer_used)
|
||||
|
||||
grant_spell(owner)
|
||||
if(!modified)
|
||||
addtimer(CALLBACK(src, .proc/modify, 5)) //gonna want children calling ..() to run first
|
||||
|
||||
/datum/mutation/human/proc/get_visual_indicator(mob/living/carbon/human/owner)
|
||||
return
|
||||
|
||||
@@ -102,26 +104,80 @@ GLOBAL_LIST_EMPTY(mutations_list)
|
||||
mut_overlay.Remove(get_visual_indicator(owner))
|
||||
owner.overlays_standing[layer_used] = mut_overlay
|
||||
owner.apply_overlay(layer_used)
|
||||
if(power)
|
||||
owner.RemoveSpell(power)
|
||||
qdel(src)
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/datum/mutation/human/proc/say_mod(message)
|
||||
if(message)
|
||||
return message
|
||||
|
||||
/datum/mutation/human/proc/get_spans()
|
||||
return list()
|
||||
|
||||
/mob/living/carbon/proc/update_mutations_overlay()
|
||||
return
|
||||
|
||||
/mob/living/carbon/human/update_mutations_overlay()
|
||||
for(var/datum/mutation/human/CM in dna.mutations)
|
||||
if(CM.species_allowed.len && !CM.species_allowed.Find(dna.species.id))
|
||||
CM.force_lose(src) //shouldn't have that mutation at all
|
||||
dna.force_lose(CM) //shouldn't have that mutation at all
|
||||
continue
|
||||
if(CM.visual_indicators.len)
|
||||
var/list/mut_overlay = list()
|
||||
if(overlays_standing[CM.layer_used])
|
||||
mut_overlay = overlays_standing[CM.layer_used]
|
||||
var/mutable_appearance/V = CM.get_visual_indicator(src)
|
||||
var/mutable_appearance/V = CM.get_visual_indicator()
|
||||
if(!mut_overlay.Find(V)) //either we lack the visual indicator or we have the wrong one
|
||||
remove_overlay(CM.layer_used)
|
||||
for(var/mutable_appearance/MA in CM.visual_indicators)
|
||||
for(var/mutable_appearance/MA in CM.visual_indicators[CM.type])
|
||||
mut_overlay.Remove(MA)
|
||||
mut_overlay |= V
|
||||
overlays_standing[CM.layer_used] = mut_overlay
|
||||
apply_overlay(CM.layer_used)
|
||||
|
||||
|
||||
/datum/mutation/human/proc/modify() //called when a genome is applied so we can properly update some stats without having to remove and reapply the mutation from someone
|
||||
if(modified || !power || !owner)
|
||||
return
|
||||
power.charge_max *= GET_MUTATION_ENERGY(src)
|
||||
power.charge_counter *= GET_MUTATION_ENERGY(src)
|
||||
modified = TRUE
|
||||
|
||||
/datum/mutation/human/proc/copy_mutation(datum/mutation/human/HM)
|
||||
if(!HM)
|
||||
return
|
||||
chromosome_name = HM.chromosome_name
|
||||
stabilizer_coeff = HM.stabilizer_coeff
|
||||
synchronizer_coeff = HM.synchronizer_coeff
|
||||
power_coeff = HM.power_coeff
|
||||
energy_coeff = HM.energy_coeff
|
||||
mutadone_proof = HM.mutadone_proof
|
||||
can_chromosome = HM.can_chromosome
|
||||
|
||||
/datum/mutation/human/proc/remove_chromosome()
|
||||
stabilizer_coeff = initial(stabilizer_coeff)
|
||||
synchronizer_coeff = initial(synchronizer_coeff)
|
||||
power_coeff = initial(power_coeff)
|
||||
energy_coeff = initial(energy_coeff)
|
||||
mutadone_proof = initial(mutadone_proof)
|
||||
can_chromosome = initial(can_chromosome)
|
||||
chromosome_name = null
|
||||
|
||||
/datum/mutation/human/proc/remove()
|
||||
if(dna)
|
||||
dna.force_lose(src)
|
||||
else
|
||||
qdel(src)
|
||||
|
||||
/datum/mutation/human/proc/grant_spell(mob/living/carbon/human/owner)
|
||||
if(!ispath(power) || !owner)
|
||||
return FALSE
|
||||
|
||||
power = new power()
|
||||
power.action_background_icon_state = "bg_tech_blue_on"
|
||||
power.panel = "Genetic"
|
||||
owner.AddSpell(power)
|
||||
return TRUE
|
||||
@@ -0,0 +1,169 @@
|
||||
/datum/mutation/human/telepathy
|
||||
name = "Telepathy"
|
||||
desc = "A rare mutation that allows the user to telepathically communicate to others."
|
||||
quality = POSITIVE
|
||||
text_gain_indication = "<span class='notice'>You can hear your own voice echoing in your mind!</span>"
|
||||
text_lose_indication = "<span class='notice'>You don't hear your mind echo anymore.</span>"
|
||||
difficulty = 12
|
||||
power = /obj/effect/proc_holder/spell/targeted/telepathy/genetic
|
||||
instability = 10
|
||||
energy_coeff = 1
|
||||
|
||||
/datum/mutation/human/telepathy/on_acquiring(mob/living/carbon/human/owner)
|
||||
. = ..()
|
||||
|
||||
/datum/mutation/human/telepathy/on_losing(mob/living/carbon/human/owner)
|
||||
. = ..()
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/telepathy/genetic
|
||||
magic_check = FALSE
|
||||
|
||||
/datum/mutation/human/firebreath
|
||||
name = "Fire Breath"
|
||||
desc = "An ancient mutation that gives lizards breath of fire."
|
||||
quality = POSITIVE
|
||||
difficulty = 12
|
||||
locked = TRUE
|
||||
text_gain_indication = "<span class='notice'>Your throat is burning!</span>"
|
||||
text_lose_indication = "<span class='notice'>Your throat is cooling down.</span>"
|
||||
power = /obj/effect/proc_holder/spell/aimed/firebreath
|
||||
instability = 30
|
||||
energy_coeff = 1
|
||||
power_coeff = 1
|
||||
|
||||
/datum/mutation/human/firebreath/modify()
|
||||
if(power)
|
||||
var/obj/effect/proc_holder/spell/aimed/firebreath/S = power
|
||||
S.strength = GET_MUTATION_POWER(src)
|
||||
|
||||
/obj/effect/proc_holder/spell/aimed/firebreath
|
||||
name = "Fire Breath"
|
||||
desc = "You can breathe fire at a target."
|
||||
school = "evocation"
|
||||
charge_max = 1200
|
||||
clothes_req = FALSE
|
||||
range = 20
|
||||
projectile_type = /obj/item/projectile/magic/aoe/fireball/firebreath
|
||||
base_icon_state = "fireball"
|
||||
action_icon_state = "fireball0"
|
||||
sound = 'sound/magic/demon_dies.ogg' //horrifying lizard noises
|
||||
active_msg = "You built up heat in your mouth."
|
||||
deactive_msg = "You swallow the flame."
|
||||
var/strength = 1
|
||||
|
||||
/obj/effect/proc_holder/spell/aimed/firebreath/before_cast(list/targets)
|
||||
. = ..()
|
||||
if(iscarbon(usr))
|
||||
var/mob/living/carbon/C = usr
|
||||
if(C.is_mouth_covered())
|
||||
C.adjust_fire_stacks(2)
|
||||
C.IgniteMob()
|
||||
to_chat(C,"<span class='warning'>Something in front of your mouth caught fire!</span>")
|
||||
return FALSE
|
||||
|
||||
/obj/effect/proc_holder/spell/aimed/firebreath/ready_projectile(obj/item/projectile/P, atom/target, mob/user, iteration)
|
||||
if(!istype(P, /obj/item/projectile/magic/aoe/fireball))
|
||||
return
|
||||
var/obj/item/projectile/magic/aoe/fireball/F = P
|
||||
switch(strength)
|
||||
if(1 to 3)
|
||||
F.exp_light = strength-1
|
||||
if(4 to INFINITY)
|
||||
F.exp_heavy = strength-3
|
||||
F.exp_fire += strength
|
||||
|
||||
|
||||
/obj/item/projectile/magic/aoe/fireball/firebreath
|
||||
name = "fire breath"
|
||||
exp_heavy = 0
|
||||
exp_light = 0
|
||||
exp_flash = 0
|
||||
exp_fire= 4
|
||||
|
||||
/datum/mutation/human/void
|
||||
name = "Void Magnet"
|
||||
desc = "A rare genome that attracts odd forces not usually observed."
|
||||
quality = MINOR_NEGATIVE //upsides and downsides
|
||||
text_gain_indication = "<span class='notice'>You feel a heavy, dull force just beyond the walls watching you.</span>"
|
||||
instability = 30
|
||||
power = /obj/effect/proc_holder/spell/self/void
|
||||
energy_coeff = 1
|
||||
synchronizer_coeff = 1
|
||||
|
||||
/datum/mutation/human/void/on_life(mob/living/carbon/human/owner)
|
||||
if(!isturf(owner.loc))
|
||||
return
|
||||
if(prob((0.5+((100-dna.stability)/20))) * GET_MUTATION_SYNCHRONIZER(src)) //very rare, but enough to annoy you hopefully. +0.5 probability for every 10 points lost in stability
|
||||
new /obj/effect/immortality_talisman/void(get_turf(owner), owner)
|
||||
|
||||
/obj/effect/proc_holder/spell/self/void
|
||||
name = "Convoke Void" //magic the gathering joke here
|
||||
desc = "A rare genome that attracts odd forces not usually observed. May sometimes pull you in randomly."
|
||||
school = "evocation"
|
||||
clothes_req = FALSE
|
||||
charge_max = 600
|
||||
invocation = "DOOOOOOOOOOOOOOOOOOOOM!!!"
|
||||
invocation_type = "shout"
|
||||
action_icon_state = "void_magnet"
|
||||
var/in_use = FALSE //so it doesnt cast while you are already deep innit
|
||||
|
||||
/obj/effect/proc_holder/spell/self/void/can_cast(mob/user = usr)
|
||||
. = ..()
|
||||
if(!isturf(user.loc))
|
||||
return FALSE
|
||||
|
||||
/obj/effect/proc_holder/spell/self/void/cast(mob/user = usr)
|
||||
. = ..()
|
||||
new /obj/effect/immortality_talisman/void(get_turf(user), user)
|
||||
|
||||
/datum/mutation/human/shock
|
||||
name = "Shock Touch"
|
||||
desc = "The affected can channel excess electricity through their hands without shocking themselves, allowing them to shock others."
|
||||
quality = POSITIVE
|
||||
locked = TRUE
|
||||
difficulty = 16
|
||||
text_gain_indication = "<span class='notice'>You feel power flow through your hands.</span>"
|
||||
text_lose_indication = "<span class='notice'>The energy in your hands subsides.</span>"
|
||||
power = /obj/effect/proc_holder/spell/targeted/touch/shock
|
||||
instability = 30
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/touch/shock
|
||||
name = "Shock Touch"
|
||||
desc = "Channel electricity to your hand to shock people with."
|
||||
drawmessage = "You channel electricity into your hand."
|
||||
dropmessage = "You let the electricity from your hand dissipate."
|
||||
hand_path = /obj/item/melee/touch_attack/shock
|
||||
charge_max = 400
|
||||
clothes_req = FALSE
|
||||
action_icon_state = "zap"
|
||||
|
||||
/obj/item/melee/touch_attack/shock
|
||||
name = "\improper shock touch"
|
||||
desc = "This is kind of like when you rub your feet on a shag rug so you can zap your friends, only a lot less safe."
|
||||
catchphrase = null
|
||||
on_use_sound = 'sound/weapons/zapbang.ogg'
|
||||
icon_state = "zapper"
|
||||
item_state = "zapper"
|
||||
|
||||
/obj/item/melee/touch_attack/shock/afterattack(atom/target, mob/living/carbon/user, proximity)
|
||||
if(!proximity || !isliving(target))
|
||||
return
|
||||
if(iscarbon(target))
|
||||
var/mob/living/carbon/C = target
|
||||
if(C.electrocute_act(15, user, 1, stun = 0))//doesnt stun. never let this stun
|
||||
C.dropItemToGround(C.get_active_held_item())
|
||||
C.dropItemToGround(C.get_inactive_held_item())
|
||||
C.confused += 10
|
||||
C.visible_message("<span class='danger'>[user] electrocutes [target]!</span>","<span class='userdanger'>[user] electrocutes you!</span>")
|
||||
return ..()
|
||||
else
|
||||
user.visible_message("<span class='warning'>[user] fails to electrocute [target]!</span>")
|
||||
return ..()
|
||||
else if(isliving(target))
|
||||
var/mob/living/L = target
|
||||
L.electrocute_act(15, user, 1, stun = 0)
|
||||
L.visible_message("<span class='danger'>[user] electrocutes [target]!</span>","<span class='userdanger'>[user] electrocutes you!</span>")
|
||||
return ..()
|
||||
else
|
||||
to_chat(user,"<span class='warning'>The electricity doesn't seem to affect [target]...</span>")
|
||||
return ..()
|
||||
@@ -0,0 +1,107 @@
|
||||
/datum/mutation/human/antenna
|
||||
name = "Antenna"
|
||||
desc = "The affected person sprouts an antenna. This is known to allow them to access common radio channels passively."
|
||||
quality = POSITIVE
|
||||
text_gain_indication = "<span class='notice'>You feel an antenna sprout from your forehead.</span>"
|
||||
text_lose_indication = "<span class='notice'>Your antenna shrinks back down.</span>"
|
||||
instability = 5
|
||||
difficulty = 8
|
||||
var/obj/item/implant/radio/antenna/linked_radio
|
||||
|
||||
/obj/item/implant/radio/antenna
|
||||
name = "internal antenna organ"
|
||||
desc = "The internal organ part of the antenna. Science has not yet given it a good name."
|
||||
icon = 'icons/obj/radio.dmi'//maybe make a unique sprite later. not important
|
||||
icon_state = "walkietalkie"
|
||||
|
||||
/obj/item/implant/radio/antenna/Initialize(mapload)
|
||||
..()
|
||||
radio.name = "internal antenna"
|
||||
|
||||
/datum/mutation/human/antenna/on_acquiring(mob/living/carbon/human/owner)
|
||||
if(..())
|
||||
return
|
||||
linked_radio = new(owner)
|
||||
linked_radio.implant(owner, null, TRUE, TRUE)
|
||||
|
||||
/datum/mutation/human/antenna/on_losing(mob/living/carbon/human/owner)
|
||||
if(..())
|
||||
return
|
||||
if(linked_radio)
|
||||
linked_radio.Destroy()
|
||||
|
||||
/datum/mutation/human/antenna/New(class_ = MUT_OTHER, timer, datum/mutation/human/copymut)
|
||||
..()
|
||||
if(!(type in visual_indicators))
|
||||
visual_indicators[type] = list(mutable_appearance('icons/effects/genetics.dmi', "antenna", -FRONT_MUTATIONS_LAYER+1))//-MUTATIONS_LAYER+1
|
||||
|
||||
/datum/mutation/human/antenna/get_visual_indicator(mob/living/carbon/human/owner)
|
||||
return visual_indicators[type][1]
|
||||
|
||||
/datum/mutation/human/mindreader
|
||||
name = "Mind Reader"
|
||||
desc = "The affected person can look into the recent memories of others."
|
||||
quality = POSITIVE
|
||||
text_gain_indication = "<span class='notice'>You hear distant voices at the corners of your mind.</span>"
|
||||
text_lose_indication = "<span class='notice'>The distant voices fade.</span>"
|
||||
power = /obj/effect/proc_holder/spell/targeted/mindread
|
||||
instability = 40
|
||||
difficulty = 8
|
||||
locked = TRUE
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/mindread
|
||||
name = "Mindread"
|
||||
desc = "Read the target's mind."
|
||||
charge_max = 300
|
||||
range = 7
|
||||
clothes_req = FALSE
|
||||
action_icon_state = "mindread"
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/mindread/cast(list/targets, mob/living/carbon/human/user = usr)
|
||||
for(var/mob/living/M in targets)
|
||||
if(usr.anti_magic_check(FALSE, FALSE, TRUE, 0) || M.anti_magic_check(FALSE, FALSE, TRUE, 0))
|
||||
to_chat(usr, "<span class='warning'>As you reach out with your mind, you're suddenly stopped by a vision of a massive tinfoil wall that streches beyond visible range. It seems you've been foiled.</span>")
|
||||
return
|
||||
if(M.stat == DEAD)
|
||||
to_chat(user, "<span class='boldnotice'>[M] is dead!</span>")
|
||||
return
|
||||
if(M.mind)
|
||||
to_chat(user, "<span class='boldnotice'>You plunge into [M]'s mind...</span>")
|
||||
if(prob(20))
|
||||
to_chat(M, "<span class='danger'>You feel something foreign enter your mind.</span>")//chance to alert the read-ee
|
||||
var/list/recent_speech = list()
|
||||
var/list/say_log = list()
|
||||
var/log_source = M.logging
|
||||
for(var/log_type in log_source)//this whole loop puts the read-ee's say logs into say_log in an easy to access way
|
||||
var/nlog_type = text2num(log_type)
|
||||
if(nlog_type & LOG_SAY)
|
||||
var/list/reversed = log_source[log_type]
|
||||
if(islist(reversed))
|
||||
say_log = reverseRange(reversed.Copy())
|
||||
break
|
||||
if(LAZYLEN(say_log))
|
||||
for(var/spoken_memory in say_log)
|
||||
if(recent_speech.len >= 3)//up to 3 random lines of speech, favoring more recent speech
|
||||
break
|
||||
if(prob(50))
|
||||
recent_speech[spoken_memory] = say_log[spoken_memory]
|
||||
if(recent_speech.len)
|
||||
to_chat(user, "<span class='boldnotice'>You catch some drifting memories of their past conversations...</span>")
|
||||
for(var/spoken_memory in recent_speech)
|
||||
to_chat(user, "<span class='notice'>[recent_speech[spoken_memory]]</span>")
|
||||
if(iscarbon(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
to_chat(user, "<span class='boldnotice'>You find that their intent is to [H.a_intent]...</span>")
|
||||
var/datum/dna/the_dna = H.has_dna()
|
||||
if(the_dna)
|
||||
to_chat(user, "<span class='boldnotice'>You uncover that [H.p_their()] true identity is [the_dna.real_name].</span>")
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You can't find a mind to read inside of [M]!</span>")
|
||||
|
||||
/datum/mutation/human/mindreader/New(class_ = MUT_OTHER, timer, datum/mutation/human/copymut)
|
||||
..()
|
||||
if(!(type in visual_indicators))
|
||||
visual_indicators[type] = list(mutable_appearance('icons/effects/genetics.dmi', "antenna", -FRONT_MUTATIONS_LAYER+1))
|
||||
|
||||
/datum/mutation/human/mindreader/get_visual_indicator(mob/living/carbon/human/owner)
|
||||
return visual_indicators[type][1]
|
||||
+125
-10
@@ -3,16 +3,19 @@
|
||||
//Epilepsy gives a very small chance to have a seizure every life tick, knocking you unconscious.
|
||||
/datum/mutation/human/epilepsy
|
||||
name = "Epilepsy"
|
||||
desc = "A genetic defect that sporadically causes seizures."
|
||||
quality = NEGATIVE
|
||||
text_gain_indication = "<span class='danger'>You get a headache.</span>"
|
||||
synchronizer_coeff = 1
|
||||
power_coeff = 1
|
||||
|
||||
/datum/mutation/human/epilepsy/on_life(mob/living/carbon/human/owner)
|
||||
if(prob(1) && owner.stat == CONSCIOUS)
|
||||
if(prob(1 * GET_MUTATION_SYNCHRONIZER(src)) && owner.stat == CONSCIOUS)
|
||||
owner.visible_message("<span class='danger'>[owner] starts having a seizure!</span>", "<span class='userdanger'>You have a seizure!</span>")
|
||||
owner.Unconscious(200)
|
||||
owner.Jitter(1000)
|
||||
owner.Unconscious(200 * GET_MUTATION_POWER(src))
|
||||
owner.Jitter(1000 * GET_MUTATION_POWER(src))
|
||||
SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, "epilepsy", /datum/mood_event/epilepsy)
|
||||
addtimer(CALLBACK(src, .proc/jitter_less, owner), 90)
|
||||
addtimer(CALLBACK(src, .proc/jitter_less), 90)
|
||||
|
||||
/datum/mutation/human/epilepsy/proc/jitter_less(mob/living/carbon/human/owner)
|
||||
if(owner)
|
||||
@@ -22,19 +25,23 @@
|
||||
//Unstable DNA induces random mutations!
|
||||
/datum/mutation/human/bad_dna
|
||||
name = "Unstable DNA"
|
||||
desc = "Strange mutation that causes the holder to randomly mutate."
|
||||
quality = NEGATIVE
|
||||
text_gain_indication = "<span class='danger'>You feel strange.</span>"
|
||||
locked = TRUE
|
||||
|
||||
/datum/mutation/human/bad_dna/on_acquiring(mob/living/carbon/human/owner)
|
||||
if(..())
|
||||
return
|
||||
to_chat(owner, text_gain_indication)
|
||||
var/mob/new_mob
|
||||
if(prob(95))
|
||||
if(prob(50))
|
||||
new_mob = owner.randmutb()
|
||||
new_mob = owner.easy_randmut(NEGATIVE + MINOR_NEGATIVE)
|
||||
else
|
||||
new_mob = owner.randmuti()
|
||||
else
|
||||
new_mob = owner.randmutg()
|
||||
new_mob = owner.easy_randmut(POSITIVE)
|
||||
if(new_mob && ismob(new_mob))
|
||||
owner = new_mob
|
||||
. = owner
|
||||
@@ -44,21 +51,31 @@
|
||||
//Cough gives you a chronic cough that causes you to drop items.
|
||||
/datum/mutation/human/cough
|
||||
name = "Cough"
|
||||
desc = "A chronic cough."
|
||||
quality = MINOR_NEGATIVE
|
||||
text_gain_indication = "<span class='danger'>You start coughing.</span>"
|
||||
synchronizer_coeff = 1
|
||||
power_coeff = 1
|
||||
|
||||
/datum/mutation/human/cough/on_life(mob/living/carbon/human/owner)
|
||||
if(prob(5) && owner.stat == CONSCIOUS)
|
||||
if(prob(5 * GET_MUTATION_SYNCHRONIZER(src)) && owner.stat == CONSCIOUS)
|
||||
owner.drop_all_held_items()
|
||||
owner.emote("cough")
|
||||
|
||||
if(GET_MUTATION_POWER(src) > 1)
|
||||
var/cough_range = GET_MUTATION_POWER(src) * 4
|
||||
var/turf/target = get_ranged_target_turf(owner, turn(owner.dir, 180), cough_range)
|
||||
owner.throw_at(target, cough_range, GET_MUTATION_POWER(src))
|
||||
|
||||
|
||||
//Dwarfism shrinks your body and lets you pass tables.
|
||||
/datum/mutation/human/dwarfism
|
||||
name = "Dwarfism"
|
||||
desc = "A mutation believed to be the cause of dwarfism."
|
||||
quality = POSITIVE
|
||||
get_chance = 15
|
||||
lowest_value = 256 * 12
|
||||
difficulty = 16
|
||||
instability = 5
|
||||
locked = TRUE // Default intert species for now, so locked from regular pool.
|
||||
|
||||
/datum/mutation/human/dwarfism/on_acquiring(mob/living/carbon/human/owner)
|
||||
if(..())
|
||||
@@ -78,6 +95,7 @@
|
||||
//Clumsiness has a very large amount of small drawbacks depending on item.
|
||||
/datum/mutation/human/clumsy
|
||||
name = "Clumsiness"
|
||||
desc = "A genome that inhibits certain brain functions, causing the holder to appear clumsy. Honk"
|
||||
quality = MINOR_NEGATIVE
|
||||
text_gain_indication = "<span class='danger'>You feel lightheaded.</span>"
|
||||
|
||||
@@ -95,11 +113,13 @@
|
||||
//Tourettes causes you to randomly stand in place and shout.
|
||||
/datum/mutation/human/tourettes
|
||||
name = "Tourette's Syndrome"
|
||||
desc = "A chronic twitch that forces the user to use colorful language."
|
||||
quality = NEGATIVE
|
||||
text_gain_indication = "<span class='danger'>You twitch.</span>"
|
||||
synchronizer_coeff = 1
|
||||
|
||||
/datum/mutation/human/tourettes/on_life(mob/living/carbon/human/owner)
|
||||
if(prob(10) && owner.stat == CONSCIOUS && !owner.IsStun())
|
||||
if(prob(10 * GET_MUTATION_SYNCHRONIZER(src)) && owner.stat == CONSCIOUS && !owner.IsStun())
|
||||
owner.Stun(200)
|
||||
switch(rand(1, 3))
|
||||
if(1)
|
||||
@@ -117,6 +137,7 @@
|
||||
//Deafness makes you deaf.
|
||||
/datum/mutation/human/deaf
|
||||
name = "Deafness"
|
||||
desc = "The holder of this genome is completely deaf."
|
||||
quality = NEGATIVE
|
||||
text_gain_indication = "<span class='danger'>You can't seem to hear anything.</span>"
|
||||
|
||||
@@ -134,8 +155,10 @@
|
||||
//Monified turns you into a monkey.
|
||||
/datum/mutation/human/race
|
||||
name = "Monkified"
|
||||
desc = "A strange genome, believing to be what differentiates monkeys from humans."
|
||||
quality = NEGATIVE
|
||||
time_coeff = 2
|
||||
locked = TRUE //Species specific, keep out of actual gene pool
|
||||
|
||||
/datum/mutation/human/race/on_acquiring(mob/living/carbon/human/owner)
|
||||
if(..())
|
||||
@@ -145,3 +168,95 @@
|
||||
/datum/mutation/human/race/on_losing(mob/living/carbon/monkey/owner)
|
||||
if(owner && istype(owner) && owner.stat != DEAD && (owner.dna.mutations.Remove(src)))
|
||||
. = owner.humanize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPORGANS | TR_KEEPDAMAGE | TR_KEEPVIRUS | TR_KEEPSE)
|
||||
|
||||
|
||||
/datum/mutation/human/glow
|
||||
name = "Glowy"
|
||||
desc = "You permanently emit a light with a random color and intensity."
|
||||
quality = POSITIVE
|
||||
text_gain_indication = "<span class='notice'>Your skin begins to glow softly.</span>"
|
||||
instability = 5
|
||||
var/obj/effect/dummy/luminescent_glow/glowth //shamelessly copied from luminescents
|
||||
var/glow = 1.5
|
||||
power_coeff = 1
|
||||
|
||||
/datum/mutation/human/glow/on_acquiring(mob/living/carbon/human/owner)
|
||||
if(..())
|
||||
return
|
||||
glowth = new(owner)
|
||||
glowth.set_light(glow, glow, dna.features["mcolor"])
|
||||
|
||||
/datum/mutation/human/glow/modify(mob/living/carbon/human/owner)
|
||||
if(glowth)
|
||||
glowth.set_light(glow + GET_MUTATION_POWER(src) , glow + GET_MUTATION_POWER(src), dna.features["mcolor"])
|
||||
|
||||
/datum/mutation/human/glow/on_losing(mob/living/carbon/human/owner)
|
||||
if(..())
|
||||
return
|
||||
qdel(glowth)
|
||||
|
||||
/datum/mutation/human/strong
|
||||
name = "Strength"
|
||||
desc = "The user's muscles slightly expand."
|
||||
quality = POSITIVE
|
||||
text_gain_indication = "<span class='notice'>You feel strong.</span>"
|
||||
difficulty = 16
|
||||
|
||||
/datum/mutation/human/fire
|
||||
name = "Fiery Sweat"
|
||||
desc = "The user's skin will randomly combust, but is generally alot more resilient to burning."
|
||||
quality = NEGATIVE
|
||||
text_gain_indication = "<span class='warning'>You feel hot.</span>"
|
||||
text_lose_indication = "<span class'notice'>You feel a lot cooler.</span>"
|
||||
difficulty = 14
|
||||
synchronizer_coeff = 1
|
||||
power_coeff = 1
|
||||
|
||||
/datum/mutation/human/fire/on_life(mob/living/carbon/human/owner)
|
||||
if(prob((1+(100-dna.stability)/10)) * GET_MUTATION_SYNCHRONIZER(src))
|
||||
owner.adjust_fire_stacks(2 * GET_MUTATION_POWER(src))
|
||||
owner.IgniteMob()
|
||||
|
||||
/datum/mutation/human/fire/on_acquiring(mob/living/carbon/human/owner)
|
||||
if(..())
|
||||
return
|
||||
owner.physiology.burn_mod *= 0.5
|
||||
|
||||
/datum/mutation/human/fire/on_losing(mob/living/carbon/human/owner)
|
||||
if(..())
|
||||
return
|
||||
owner.physiology.burn_mod *= 2
|
||||
|
||||
/datum/mutation/human/insulated
|
||||
name = "Insulated"
|
||||
desc = "The affected person does not conduct electricity."
|
||||
quality = POSITIVE
|
||||
text_gain_indication = "<span class='notice'>Your fingertips go numb.</span>"
|
||||
text_lose_indication = "<span class='notice'>Your fingertips regain feeling.</span>"
|
||||
difficulty = 16
|
||||
instability = 25
|
||||
|
||||
/datum/mutation/human/insulated/on_acquiring(mob/living/carbon/human/owner)
|
||||
if(..())
|
||||
return
|
||||
ADD_TRAIT(owner, TRAIT_SHOCKIMMUNE, "genetics")
|
||||
|
||||
/datum/mutation/human/insulated/on_losing(mob/living/carbon/human/owner)
|
||||
if(..())
|
||||
return
|
||||
REMOVE_TRAIT(owner, TRAIT_SHOCKIMMUNE, "genetics")
|
||||
|
||||
/datum/mutation/human/paranoia
|
||||
name = "Paranoia"
|
||||
desc = "Subject is easily terrified, and may suffer from hallucinations."
|
||||
quality = NEGATIVE
|
||||
text_gain_indication = "<span class='danger'>You feel screams echo through your mind...</span>"
|
||||
text_lose_indication = "<span class'notice'>The screaming in your mind fades.</span>"
|
||||
|
||||
/datum/mutation/human/paranoia/on_life(mob/living/carbon/human/owner)
|
||||
if(prob(5) && owner.stat == CONSCIOUS)
|
||||
owner.emote("scream")
|
||||
owner.jitteriness = min(max(0, owner.jitteriness + 5), 30)
|
||||
if(prob(25))
|
||||
to_chat(owner,"<span class='warning'>You feel someone creeping in on you...</span>")
|
||||
owner.hallucination += 20
|
||||
@@ -1,12 +1,13 @@
|
||||
//Chameleon causes the owner to slowly become transparent when not moving.
|
||||
/datum/mutation/human/chameleon
|
||||
name = "Chameleon"
|
||||
desc = "A genome that causes the holder's skin to become transparent over time."
|
||||
quality = POSITIVE
|
||||
get_chance = 20
|
||||
lowest_value = 256 * 12
|
||||
difficulty = 16
|
||||
text_gain_indication = "<span class='notice'>You feel one with your surroundings.</span>"
|
||||
text_lose_indication = "<span class='notice'>You feel oddly exposed.</span>"
|
||||
time_coeff = 5
|
||||
instability = 25
|
||||
|
||||
/datum/mutation/human/chameleon/on_acquiring(mob/living/carbon/human/owner)
|
||||
if(..())
|
||||
|
||||
@@ -1,32 +1,29 @@
|
||||
//Cold Resistance gives your entire body an orange halo, and makes you immune to the effects of vacuum and cold.
|
||||
/datum/mutation/human/cold_resistance
|
||||
name = "Cold Resistance"
|
||||
/datum/mutation/human/space_adaptation
|
||||
name = "Space Adaptation"
|
||||
desc = "A strange mutation that renders the host immune to the vacuum if space. Will still need an oxygen supply."
|
||||
quality = POSITIVE
|
||||
get_chance = 25
|
||||
lowest_value = 256 * 12
|
||||
difficulty = 16
|
||||
text_gain_indication = "<span class='notice'>Your body feels warm!</span>"
|
||||
time_coeff = 5
|
||||
instability = 30
|
||||
|
||||
/datum/mutation/human/cold_resistance/New()
|
||||
/datum/mutation/human/space_adaptation/New(class_ = MUT_OTHER, timer, datum/mutation/human/copymut)
|
||||
..()
|
||||
visual_indicators |= mutable_appearance('icons/effects/genetics.dmi', "fire", -MUTATIONS_LAYER)
|
||||
if(!(type in visual_indicators))
|
||||
visual_indicators[type] = list(mutable_appearance('icons/effects/genetics.dmi', "fire", -MUTATIONS_LAYER))
|
||||
|
||||
/datum/mutation/human/cold_resistance/get_visual_indicator(mob/living/carbon/human/owner)
|
||||
return visual_indicators[1]
|
||||
/datum/mutation/human/space_adaptation/get_visual_indicator(mob/living/carbon/human/owner)
|
||||
return visual_indicators[type][1]
|
||||
|
||||
/datum/mutation/human/cold_resistance/on_acquiring(mob/living/carbon/human/owner)
|
||||
/datum/mutation/human/space_adaptation/on_acquiring(mob/living/carbon/human/owner)
|
||||
if(..())
|
||||
return
|
||||
ADD_TRAIT(owner, TRAIT_RESISTCOLD, "cold_resistance")
|
||||
// ADD_TRAIT(owner, TRAIT_RESISTLOWPRESSURE, "cold_resistance") CITADEL CHANGE
|
||||
ADD_TRAIT(owner, TRAIT_RESISTLOWPRESSURE, "cold_resistance")
|
||||
|
||||
/datum/mutation/human/cold_resistance/on_losing(mob/living/carbon/human/owner)
|
||||
/datum/mutation/human/space_adaptation/on_losing(mob/living/carbon/human/owner)
|
||||
if(..())
|
||||
return
|
||||
REMOVE_TRAIT(owner, TRAIT_RESISTCOLD, "cold_resistance")
|
||||
// REMOVE_TRAIT(owner, TRAIT_RESISTLOWPRESSURE, "cold_resistance") CITADEL CHANGE
|
||||
|
||||
/datum/mutation/human/cold_resistance/on_life(mob/living/carbon/human/owner)
|
||||
if(owner.getFireLoss())
|
||||
if(prob(1))
|
||||
owner.heal_bodypart_damage(0,1) //Is this really needed?
|
||||
REMOVE_TRAIT(owner, TRAIT_RESISTLOWPRESSURE, "cold_resistance")
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
/datum/generecipe
|
||||
var/required = "" //it hurts so bad but initial is not compatible with lists
|
||||
var/result = null
|
||||
|
||||
/proc/get_mixed_mutation(mutation1, mutation2)
|
||||
if(!mutation1 || !mutation2)
|
||||
return FALSE
|
||||
if(mutation1 == mutation2) //this could otherwise be bad
|
||||
return FALSE
|
||||
for(var/A in GLOB.mutation_recipes)
|
||||
if(findtext(A, "[mutation1]") && findtext(A, "[mutation2]"))
|
||||
return GLOB.mutation_recipes[A]
|
||||
|
||||
/datum/generecipe/x_ray
|
||||
required = "/datum/mutation/human/thermal; /datum/mutation/human/radioactive"
|
||||
result = /datum/mutation/human/thermal/x_ray
|
||||
|
||||
/datum/generecipe/shock
|
||||
required = "/datum/mutation/human/insulated; /datum/mutation/human/radioactive"
|
||||
result = SHOCKTOUCH
|
||||
|
||||
/datum/generecipe/mindread
|
||||
required = "/datum/mutation/human/antenna; /datum/mutation/human/paranoia"
|
||||
result = MINDREAD
|
||||
@@ -1,12 +1,15 @@
|
||||
//Hulk turns your skin green, and allows you to punch through walls.
|
||||
/datum/mutation/human/hulk
|
||||
name = "Hulk"
|
||||
desc = "A poorly understood genome that causes the holder's muscles to expand, inhibit speech and gives the person a bad skin condition."
|
||||
quality = POSITIVE
|
||||
get_chance = 15
|
||||
lowest_value = 256 * 12
|
||||
locked = TRUE
|
||||
difficulty = 16
|
||||
text_gain_indication = "<span class='notice'>Your muscles hurt!</span>"
|
||||
species_allowed = list("human") //no skeleton/lizard hulk
|
||||
health_req = 25
|
||||
instability = 40
|
||||
locked = TRUE
|
||||
|
||||
/datum/mutation/human/hulk/on_acquiring(mob/living/carbon/human/owner)
|
||||
if(..())
|
||||
@@ -17,11 +20,11 @@
|
||||
SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, "hulk", /datum/mood_event/hulk)
|
||||
RegisterSignal(owner, COMSIG_MOB_SAY, .proc/handle_speech)
|
||||
|
||||
/datum/mutation/human/hulk/on_attack_hand(mob/living/carbon/human/owner, atom/target, proximity)
|
||||
/datum/mutation/human/hulk/on_attack_hand(atom/target, proximity)
|
||||
if(proximity) //no telekinetic hulk attack
|
||||
return target.attack_hulk(owner)
|
||||
|
||||
/datum/mutation/human/hulk/on_life(mob/living/carbon/human/owner)
|
||||
/datum/mutation/human/hulk/on_life()
|
||||
if(owner.health < 0)
|
||||
on_losing(owner)
|
||||
to_chat(owner, "<span class='danger'>You suddenly feel very weak.</span>")
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
/datum/mutation/human/radioactive
|
||||
name = "Radioactivity"
|
||||
desc = "A volatile mutation that causes the host to sent out deadly beta radiation. This affects both the hosts and their surroundings."
|
||||
quality = NEGATIVE
|
||||
text_gain_indication = "<span class='warning'>You can feel it in your bones!</span>"
|
||||
time_coeff = 5
|
||||
instability = 5
|
||||
difficulty = 8
|
||||
|
||||
/datum/mutation/human/radioactive/on_life(mob/living/carbon/human/owner)
|
||||
radiation_pulse(owner, 20)
|
||||
|
||||
/datum/mutation/human/radioactive/New(class_ = MUT_OTHER, timer, datum/mutation/human/copymut)
|
||||
..()
|
||||
if(!(type in visual_indicators))
|
||||
visual_indicators[type] = list(mutable_appearance('icons/effects/genetics.dmi', "radiation", -MUTATIONS_LAYER))
|
||||
|
||||
/datum/mutation/human/radioactive/get_visual_indicator()
|
||||
return visual_indicators[type][1]
|
||||
@@ -1,6 +1,7 @@
|
||||
//Nearsightedness restricts your vision by several tiles.
|
||||
/datum/mutation/human/nearsight
|
||||
name = "Near Sightness"
|
||||
desc = "The holder of this mutation has poor eyesight."
|
||||
quality = MINOR_NEGATIVE
|
||||
text_gain_indication = "<span class='danger'>You can't see very well.</span>"
|
||||
|
||||
@@ -18,6 +19,7 @@
|
||||
//Blind makes you blind. Who knew?
|
||||
/datum/mutation/human/blind
|
||||
name = "Blindness"
|
||||
desc = "Renders the subject completely blind."
|
||||
quality = NEGATIVE
|
||||
text_gain_indication = "<span class='danger'>You can't seem to see anything.</span>"
|
||||
|
||||
@@ -32,43 +34,58 @@
|
||||
owner.cure_blind(GENETIC_MUTATION)
|
||||
|
||||
|
||||
//X-ray Vision lets you see through walls.
|
||||
/datum/mutation/human/x_ray
|
||||
name = "X Ray Vision"
|
||||
///Thermal Vision lets you see mobs through walls
|
||||
/datum/mutation/human/thermal
|
||||
name = "Thermal Vision"
|
||||
desc = "The user of this genome can visually percieve the unique human thermal signature."
|
||||
quality = POSITIVE
|
||||
get_chance = 25
|
||||
lowest_value = 256 * 12
|
||||
text_gain_indication = "<span class='notice'>The walls suddenly disappear!</span>"
|
||||
difficulty = 18
|
||||
text_gain_indication = "<span class='notice'>You can see the heat rising off of your skin...</span>"
|
||||
time_coeff = 2
|
||||
instability = 25
|
||||
var/visionflag = TRAIT_THERMAL_VISION
|
||||
|
||||
/datum/mutation/human/x_ray/on_acquiring(mob/living/carbon/human/owner)
|
||||
/datum/mutation/human/thermal/on_acquiring(mob/living/carbon/human/owner)
|
||||
if(..())
|
||||
return
|
||||
|
||||
ADD_TRAIT(owner, visionflag, GENETIC_MUTATION)
|
||||
owner.update_sight()
|
||||
|
||||
/datum/mutation/human/x_ray/on_losing(mob/living/carbon/human/owner)
|
||||
/datum/mutation/human/thermal/on_losing(mob/living/carbon/human/owner)
|
||||
if(..())
|
||||
return
|
||||
REMOVE_TRAIT(owner, visionflag, GENETIC_MUTATION)
|
||||
owner.update_sight()
|
||||
|
||||
///X-ray Vision lets you see through walls.
|
||||
/datum/mutation/human/thermal/x_ray
|
||||
name = "X Ray Vision"
|
||||
desc = "A strange genome that allows the user to see between the spaces of walls." //actual x-ray would mean you'd constantly be blasting rads, wich might be fun for later //hmb
|
||||
text_gain_indication = "<span class='notice'>The walls suddenly disappear!</span>"
|
||||
instability = 35
|
||||
locked = TRUE
|
||||
visionflag = TRAIT_XRAY_VISION
|
||||
|
||||
|
||||
//Laser Eyes lets you shoot lasers from your eyes!
|
||||
/datum/mutation/human/laser_eyes
|
||||
name = "Laser Eyes"
|
||||
desc = "Reflects concentrated light back from the eyes."
|
||||
quality = POSITIVE
|
||||
dna_block = NON_SCANNABLE
|
||||
locked = TRUE
|
||||
difficulty = 16
|
||||
text_gain_indication = "<span class='notice'>You feel pressure building up behind your eyes.</span>"
|
||||
layer_used = FRONT_MUTATIONS_LAYER
|
||||
limb_req = BODY_ZONE_HEAD
|
||||
|
||||
/datum/mutation/human/laser_eyes/New()
|
||||
/datum/mutation/human/laser_eyes/New(class_ = MUT_OTHER, timer, datum/mutation/human/copymut)
|
||||
..()
|
||||
visual_indicators |= mutable_appearance('icons/effects/genetics.dmi', "lasereyes", -FRONT_MUTATIONS_LAYER)
|
||||
|
||||
/datum/mutation/human/laser_eyes/get_visual_indicator(mob/living/carbon/human/owner)
|
||||
/datum/mutation/human/laser_eyes/get_visual_indicator()
|
||||
return visual_indicators[1]
|
||||
|
||||
/datum/mutation/human/laser_eyes/on_ranged_attack(mob/living/carbon/human/owner, atom/target, mouseparams)
|
||||
/datum/mutation/human/laser_eyes/on_ranged_attack(atom/target, mouseparams)
|
||||
if(owner.a_intent == INTENT_HARM)
|
||||
owner.LaserEyes(target, mouseparams)
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
/datum/mutation/human/nervousness
|
||||
name = "Nervousness"
|
||||
desc = "Causes the holder to stutter."
|
||||
quality = MINOR_NEGATIVE
|
||||
text_gain_indication = "<span class='danger'>You feel nervous.</span>"
|
||||
|
||||
@@ -13,6 +14,7 @@
|
||||
|
||||
/datum/mutation/human/wacky
|
||||
name = "Wacky"
|
||||
desc = "<span class='sans'>Unknown.</span>"
|
||||
quality = MINOR_NEGATIVE
|
||||
text_gain_indication = "<span class='sans'>You feel an off sensation in your voicebox.</span>"
|
||||
text_lose_indication = "<span class='notice'>The off sensation passes.</span>"
|
||||
@@ -34,6 +36,7 @@
|
||||
|
||||
/datum/mutation/human/mute
|
||||
name = "Mute"
|
||||
desc = "Completely inhibits the vocal section of the brain."
|
||||
quality = NEGATIVE
|
||||
text_gain_indication = "<span class='danger'>You feel unable to express yourself at all.</span>"
|
||||
text_lose_indication = "<span class='danger'>You feel able to speak freely again.</span>"
|
||||
@@ -53,8 +56,8 @@
|
||||
|
||||
/datum/mutation/human/smile
|
||||
name = "Smile"
|
||||
desc = "Causes the user to be in constant mania."
|
||||
quality = MINOR_NEGATIVE
|
||||
dna_block = NON_SCANNABLE
|
||||
text_gain_indication = "<span class='notice'>You feel so happy. Nothing can be wrong with anything. :)</span>"
|
||||
text_lose_indication = "<span class='notice'>Everything is terrible again. :(</span>"
|
||||
|
||||
@@ -120,8 +123,8 @@
|
||||
|
||||
/datum/mutation/human/unintelligible
|
||||
name = "Unintelligible"
|
||||
desc = "Partially inhibits the vocal center of the brain, severely distorting speech."
|
||||
quality = NEGATIVE
|
||||
dna_block = NON_SCANNABLE
|
||||
text_gain_indication = "<span class='danger'>You can't seem to form any coherent thoughts!</span>"
|
||||
text_lose_indication = "<span class='danger'>Your mind feels more clear.</span>"
|
||||
|
||||
@@ -140,8 +143,9 @@
|
||||
|
||||
/datum/mutation/human/swedish
|
||||
name = "Swedish"
|
||||
desc = "A horrible mutation originating from the distant past. Thought to be eradicated after the incident in 2037."
|
||||
quality = MINOR_NEGATIVE
|
||||
dna_block = NON_SCANNABLE
|
||||
locked = TRUE
|
||||
text_gain_indication = "<span class='notice'>You feel Swedish, however that works.</span>"
|
||||
text_lose_indication = "<span class='notice'>The feeling of Swedishness passes.</span>"
|
||||
|
||||
@@ -172,8 +176,8 @@
|
||||
|
||||
/datum/mutation/human/chav
|
||||
name = "Chav"
|
||||
desc = "Unknown"
|
||||
quality = MINOR_NEGATIVE
|
||||
dna_block = NON_SCANNABLE
|
||||
text_gain_indication = "<span class='notice'>Ye feel like a reet prat like, innit?</span>"
|
||||
text_lose_indication = "<span class='notice'>You no longer feel like being rude and sassy.</span>"
|
||||
|
||||
@@ -219,12 +223,13 @@
|
||||
|
||||
/datum/mutation/human/elvis
|
||||
name = "Elvis"
|
||||
desc = "A terrifying mutation named after its 'patient-zero'."
|
||||
quality = MINOR_NEGATIVE
|
||||
dna_block = NON_SCANNABLE
|
||||
locked = TRUE
|
||||
text_gain_indication = "<span class='notice'>You feel pretty good, honeydoll.</span>"
|
||||
text_lose_indication = "<span class='notice'>You feel a little less conversation would be great.</span>"
|
||||
|
||||
/datum/mutation/human/elvis/on_life(mob/living/carbon/human/owner)
|
||||
/datum/mutation/human/elvis/on_life()
|
||||
switch(pick(1,2))
|
||||
if(1)
|
||||
if(prob(15))
|
||||
@@ -265,8 +270,9 @@
|
||||
|
||||
/datum/mutation/human/stoner
|
||||
name = "Stoner"
|
||||
desc = "A common mutation that severely decreases intelligence."
|
||||
quality = NEGATIVE
|
||||
dna_block = NON_SCANNABLE
|
||||
locked = TRUE
|
||||
text_gain_indication = "<span class='notice'>You feel...totally chill, man!</span>"
|
||||
text_lose_indication = "<span class='notice'>You feel like you have a better sense of time.</span>"
|
||||
|
||||
|
||||
@@ -1,18 +1,20 @@
|
||||
//Telekinesis lets you interact with objects from range, and gives you a light blue halo around your head.
|
||||
/datum/mutation/human/telekinesis
|
||||
name = "Telekinesis"
|
||||
desc = "A strange mutation that allows the holder to interact with objects through thought."
|
||||
quality = POSITIVE
|
||||
get_chance = 20
|
||||
lowest_value = 256 * 12
|
||||
difficulty = 18
|
||||
text_gain_indication = "<span class='notice'>You feel smarter!</span>"
|
||||
limb_req = BODY_ZONE_HEAD
|
||||
instability = 30
|
||||
|
||||
/datum/mutation/human/telekinesis/New()
|
||||
/datum/mutation/human/telekinesis/New(class_ = MUT_OTHER, timer, datum/mutation/human/copymut)
|
||||
..()
|
||||
visual_indicators |= mutable_appearance('icons/effects/genetics.dmi', "telekinesishead", -MUTATIONS_LAYER)
|
||||
if(!(type in visual_indicators))
|
||||
visual_indicators[type] = list(mutable_appearance('icons/effects/genetics.dmi', "telekinesishead", -MUTATIONS_LAYER))
|
||||
|
||||
/datum/mutation/human/telekinesis/get_visual_indicator(mob/living/carbon/human/owner)
|
||||
return visual_indicators[1]
|
||||
return visual_indicators[type][1]
|
||||
|
||||
/datum/mutation/human/telekinesis/on_ranged_attack(mob/living/carbon/human/owner, atom/target)
|
||||
target.attack_tk(owner)
|
||||
target.attack_tk(owner)
|
||||
@@ -282,6 +282,12 @@
|
||||
name = "Ancient Cloning Lab"
|
||||
description = "An experimental cloning lab snapped off from an ancient ship. The cloner model inside lacks many modern functionalities and security measures."
|
||||
|
||||
/datum/map_template/ruin/space/hilbertresearchfacility
|
||||
id = "hilbert_facility"
|
||||
suffix = "hilbertshoteltestingsite.dmm"
|
||||
name = "Hilbert Research Facility"
|
||||
description = "A research facility of great bluespace discoveries. Long since abandoned, willingly or not..."
|
||||
|
||||
/datum/map_template/ruin/space/augmentation
|
||||
id = "augmentationfacility"
|
||||
suffix = "augmentationfacility.dmm"
|
||||
|
||||
@@ -643,3 +643,26 @@ datum/status_effect/pacify
|
||||
addtimer(CALLBACK(C, /mob/living/carbon.proc/gain_trauma, /datum/brain_trauma/hypnosis, TRAUMA_RESILIENCE_SURGERY, raw_message), 10)
|
||||
addtimer(CALLBACK(C, /mob/living.proc/Stun, 60, TRUE, TRUE), 15) //Take some time to think about it
|
||||
qdel(src)
|
||||
|
||||
/datum/status_effect/dna_melt
|
||||
id = "dna_melt"
|
||||
duration = 600
|
||||
status_type = STATUS_EFFECT_REPLACE
|
||||
alert_type = /obj/screen/alert/status_effect/dna_melt
|
||||
var/kill_either_way = FALSE //no amount of removing mutations is gonna save you now
|
||||
|
||||
/datum/status_effect/dna_melt/on_creation(mob/living/new_owner, set_duration, updating_canmove)
|
||||
. = ..()
|
||||
to_chat(new_owner, "<span class='boldwarning'>My body can't handle the mutations! I need to get my mutations removed fast!</span>")
|
||||
|
||||
/datum/status_effect/dna_melt/on_remove()
|
||||
if(!ishuman(owner))
|
||||
owner.gib() //fuck you in particular
|
||||
return
|
||||
var/mob/living/carbon/human/H = owner
|
||||
H.something_horrible(kill_either_way)
|
||||
|
||||
/obj/screen/alert/status_effect/dna_melt
|
||||
name = "Genetic Breakdown"
|
||||
desc = "I don't feel so good. Your body can't handle the mutations! You have one minute to remove your mutations, or you will be met with a horrible fate."
|
||||
icon_state = "dna_melt"
|
||||
@@ -38,9 +38,9 @@
|
||||
H.randmuti()
|
||||
if(prob(50))
|
||||
if(prob(90))
|
||||
H.randmutb()
|
||||
H.easy_randmut(NEGATIVE+MINOR_NEGATIVE)
|
||||
else
|
||||
H.randmutg()
|
||||
H.easy_randmut(POSITIVE)
|
||||
H.domutcheck()
|
||||
L.rad_act(20)
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
var/moving_diagonally = 0 //0: not doing a diagonal move. 1 and 2: doing the first/second step of the diagonal move
|
||||
var/list/client_mobs_in_contents // This contains all the client mobs within this container
|
||||
var/list/acted_explosions //for explosion dodging
|
||||
glide_size = 14
|
||||
glide_size = 13
|
||||
appearance_flags = TILE_BOUND|PIXEL_SCALE
|
||||
var/datum/forced_movement/force_moving = null //handled soley by forced_movement.dm
|
||||
var/floating = FALSE
|
||||
|
||||
@@ -80,6 +80,8 @@
|
||||
name = "cloning data disk"
|
||||
icon_state = "datadisk0" //Gosh I hope syndies don't mistake them for the nuke disk.
|
||||
var/list/fields = list()
|
||||
var/list/mutations = list()
|
||||
var/max_mutations = 6
|
||||
var/read_only = 0 //Well,it's still a floppy disk
|
||||
|
||||
//Disk stuff.
|
||||
@@ -127,7 +129,7 @@
|
||||
return examine(user)
|
||||
|
||||
//Start growing a human clone in the pod!
|
||||
/obj/machinery/clonepod/proc/growclone(ckey, clonename, ui, se, mindref, datum/species/mrace, list/features, factions, list/quirks)
|
||||
/obj/machinery/clonepod/proc/growclone(ckey, clonename, ui, mutation_index, mindref, datum/species/mrace, list/features, factions, list/quirks)
|
||||
if(panel_open)
|
||||
return FALSE
|
||||
if(mess || attempting)
|
||||
@@ -161,10 +163,10 @@
|
||||
|
||||
var/mob/living/carbon/human/H = new /mob/living/carbon/human(src)
|
||||
|
||||
H.hardset_dna(ui, se, H.real_name, null, mrace, features)
|
||||
H.hardset_dna(ui, mutation_index, H.real_name, null, mrace, features)
|
||||
|
||||
if(prob(50 - efficiency*10)) //Chance to give a bad mutation.
|
||||
H.randmutb() //100% bad mutation. Can be cured with mutadone.
|
||||
H.easy_randmut(NEGATIVE+MINOR_NEGATIVE) //100% bad mutation. Can be cured with mutadone.
|
||||
|
||||
H.silent = 20 //Prevents an extreme edge case where clones could speak if they said something at exactly the right moment.
|
||||
occupant = H
|
||||
|
||||
@@ -486,7 +486,7 @@
|
||||
R.fields["id"] = copytext(md5(mob_occupant.real_name), 2, 6)
|
||||
R.fields["UE"] = dna.unique_enzymes
|
||||
R.fields["UI"] = dna.uni_identity
|
||||
R.fields["SE"] = dna.struc_enzymes
|
||||
R.fields["SE"] = dna.mutation_index
|
||||
R.fields["blood_type"] = dna.blood_type
|
||||
R.fields["features"] = dna.features
|
||||
R.fields["factions"] = mob_occupant.faction
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
#define INJECTOR_TIMEOUT 100
|
||||
#define REJUVENATORS_INJECT 15
|
||||
#define REJUVENATORS_MAX 90
|
||||
#define NUMBER_OF_BUFFERS 3
|
||||
#define SCRAMBLE_TIMEOUT 600
|
||||
#define JOKER_TIMEOUT 12000 //20 minutes
|
||||
#define JOKER_UPGRADE 1800
|
||||
|
||||
#define RADIATION_STRENGTH_MAX 15
|
||||
#define RADIATION_STRENGTH_MULTIPLIER 1 //larger has a more range
|
||||
#define RADIATION_STRENGTH_MULTIPLIER 1 //larger has more range
|
||||
|
||||
#define RADIATION_DURATION_MAX 30
|
||||
#define RADIATION_ACCURACY_MULTIPLIER 3 //larger is less accurate
|
||||
|
||||
|
||||
#define RADIATION_IRRADIATION_MULTIPLIER 1 //multiplier for how much radiation a test subject receives
|
||||
|
||||
#define SCANNER_ACTION_SE 1
|
||||
@@ -23,22 +25,33 @@
|
||||
icon_keyboard = "med_key"
|
||||
density = TRUE
|
||||
circuit = /obj/item/circuitboard/computer/scan_consolenew
|
||||
var/radduration = 2
|
||||
var/radstrength = 1
|
||||
|
||||
var/list/buffer[NUMBER_OF_BUFFERS]
|
||||
|
||||
var/injectorready = 0 //world timer cooldown var
|
||||
var/current_screen = "mainmenu"
|
||||
var/obj/machinery/dna_scannernew/connected = null
|
||||
var/obj/item/disk/data/diskette = null
|
||||
var/list/delayed_action = null
|
||||
use_power = IDLE_POWER_USE
|
||||
idle_power_usage = 10
|
||||
active_power_usage = 400
|
||||
|
||||
light_color = LIGHT_COLOR_BLUE
|
||||
|
||||
var/datum/techweb/stored_research
|
||||
var/max_storage = 6
|
||||
var/combine
|
||||
var/radduration = 2
|
||||
var/radstrength = 1
|
||||
var/max_chromosomes = 6
|
||||
|
||||
var/list/buffer[NUMBER_OF_BUFFERS]
|
||||
var/list/stored_mutations = list()
|
||||
var/list/stored_chromosomes = list()
|
||||
|
||||
var/injectorready = 0 //world timer cooldown var
|
||||
var/jokerready = 0
|
||||
var/scrambleready = 0
|
||||
var/current_screen = "mainmenu"
|
||||
var/current_mutation //what block are we inspecting? only used when screen = "info"
|
||||
var/current_storage //what storage block are we looking at?
|
||||
var/obj/machinery/dna_scannernew/connected = null
|
||||
var/obj/item/disk/data/diskette = null
|
||||
var/list/delayed_action = null
|
||||
|
||||
/obj/machinery/computer/scan_consolenew/attackby(obj/item/I, mob/user, params)
|
||||
if (istype(I, /obj/item/disk/data)) //INSERT SOME DISKETTES
|
||||
if (!src.diskette)
|
||||
@@ -48,6 +61,28 @@
|
||||
to_chat(user, "<span class='notice'>You insert [I].</span>")
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
if (istype(I, /obj/item/chromosome))
|
||||
if(LAZYLEN(stored_chromosomes) < max_chromosomes)
|
||||
I.forceMove(src)
|
||||
stored_chromosomes += I
|
||||
to_chat(user, "<span class='notice'>You insert [I].</span>")
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You cannot store any more chromosomes!</span>")
|
||||
return
|
||||
if(istype(I, /obj/item/dnainjector/activator))
|
||||
var/obj/item/dnainjector/activator/A = I
|
||||
if(A.used)
|
||||
to_chat(user,"<span class='notice'>Recycled [I].</span>")
|
||||
if(A.research)
|
||||
var/c_typepath = generate_chromosome()
|
||||
var/obj/item/chromosome/CM = new c_typepath (drop_location())
|
||||
to_chat(user,"<span class='notice'>Recycled [I].</span>")
|
||||
if((LAZYLEN(stored_chromosomes) < max_chromosomes) && prob(60))
|
||||
CM.forceMove(src)
|
||||
stored_chromosomes += CM
|
||||
to_chat(user,"<span class='notice'>[capitalize(CM.name)] added to storage.</span>")
|
||||
qdel(I)
|
||||
return
|
||||
else
|
||||
return ..()
|
||||
|
||||
@@ -58,12 +93,26 @@
|
||||
if(!isnull(connected))
|
||||
break
|
||||
injectorready = world.time + INJECTOR_TIMEOUT
|
||||
scrambleready = world.time + SCRAMBLE_TIMEOUT
|
||||
jokerready = world.time + JOKER_TIMEOUT
|
||||
|
||||
stored_research = SSresearch.science_tech
|
||||
|
||||
/obj/machinery/computer/scan_consolenew/examine(mob/user)
|
||||
..()
|
||||
if(jokerready < world.time)
|
||||
to_chat(user, "<span class='notice'>JOKER algorithm available.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>JOKER algorithm available in about [round(0.00166666667 * (jokerready - world.time))] minutes.")
|
||||
|
||||
/obj/machinery/computer/scan_consolenew/ui_interact(mob/user, last_change)
|
||||
. = ..()
|
||||
if(!user)
|
||||
return
|
||||
var/datum/browser/popup = new(user, "scannernew", "DNA Modifier Console", 800, 630) // Set up the popup browser window
|
||||
if(user.client)
|
||||
var/datum/asset/simple/assets = get_asset_datum(/datum/asset/simple/genetics)
|
||||
assets.send(user.client)
|
||||
if(!(in_range(src, user) || issilicon(user)))
|
||||
popup.close()
|
||||
return
|
||||
@@ -88,8 +137,6 @@
|
||||
occupant_status += "</div></div>"
|
||||
occupant_status += "<div class='line'><div class='statusLabel'>Health:</div><div class='progressBar'><div style='width: [viable_occupant.health]%;' class='progressFill good'></div></div><div class='statusValue'>[viable_occupant.health] %</div></div>"
|
||||
occupant_status += "<div class='line'><div class='statusLabel'>Radiation Level:</div><div class='progressBar'><div style='width: [viable_occupant.radiation/(RAD_MOB_SAFE/100)]%;' class='progressFill bad'></div></div><div class='statusValue'>[viable_occupant.radiation/(RAD_MOB_SAFE/100)] %</div></div>"
|
||||
var/rejuvenators = viable_occupant.reagents.get_reagent_amount("potass_iodide")
|
||||
occupant_status += "<div class='line'><div class='statusLabel'>Rejuvenators:</div><div class='progressBar'><div style='width: [round((rejuvenators / REJUVENATORS_MAX) * 100)]%;' class='progressFill highlight'></div></div><div class='statusValue'>[rejuvenators] units</div></div>"
|
||||
occupant_status += "<div class='line'><div class='statusLabel'>Unique Enzymes :</div><div class='statusValue'><span class='highlight'>[viable_occupant.dna.unique_enzymes]</span></div></div>"
|
||||
occupant_status += "<div class='line'><div class='statusLabel'>Last Operation:</div><div class='statusValue'>[last_change ? last_change : "----"]</div></div>"
|
||||
else
|
||||
@@ -147,28 +194,53 @@
|
||||
buttons += "<a href='?src=[REF(src)];task=togglelock;'>[connected.locked ? "Unlock" : "Lock"] Scanner</a>"
|
||||
else
|
||||
buttons += "<span class='linkOff'>Open Scanner</span> <span class='linkOff'>Lock Scanner</span>"
|
||||
if(viable_occupant)
|
||||
buttons += "<a href='?src=[REF(src)];task=rejuv'>Inject Rejuvenators</a>"
|
||||
if(viable_occupant && (scrambleready < world.time))
|
||||
buttons += "<a href='?src=[REF(src)];task=scramble'>Scramble DNA</a>"
|
||||
else
|
||||
buttons += "<span class='linkOff'>Inject Rejuvenators</span>"
|
||||
buttons += "<span class='linkOff'>Scramble DNA</span>"
|
||||
if(diskette)
|
||||
buttons += "<a href='?src=[REF(src)];task=ejectdisk'>Eject Disk</a>"
|
||||
buttons += "<a href='?src=[REF(src)];task=screen;text=disk;'>Disk</a>"
|
||||
else
|
||||
buttons += "<span class='linkOff'>Eject Disk</span>"
|
||||
if(current_screen == "buffer")
|
||||
buttons += "<a href='?src=[REF(src)];task=screen;text=mainmenu;'>Radiation Emitter Menu</a>"
|
||||
buttons += "<span class='linkOff'>Disk</span>"
|
||||
if(current_screen == "mutations")
|
||||
buttons += "<span class='linkOff'>Mutations</span>"
|
||||
else
|
||||
buttons += "<a href='?src=[REF(src)];task=screen;text=buffer;'>Buffer Menu</a>"
|
||||
buttons += "<a href='?src=[REF(src)];task=screen;text=mutations;'>Mutations</a>"
|
||||
if((current_screen == "mainmenu") || !current_screen)
|
||||
buttons += "<span class='linkOff'>Genetic Sequencer</span>"
|
||||
else
|
||||
buttons += "<a href='?src=[REF(src)];task=screen;text=mainmenu;'>Genetic Sequencer</a>"
|
||||
if(current_screen == "ui")
|
||||
buttons += "<span class='linkOff'>Unique Identifiers</span>"
|
||||
else
|
||||
buttons += "<a href='?src=[REF(src)];task=screen;text=ui;'>Unique Identifiers</a>"
|
||||
|
||||
switch(current_screen)
|
||||
if("working")
|
||||
temp_html += status
|
||||
temp_html += "<h1>System Busy</h1>"
|
||||
temp_html += "Working ... Please wait ([DisplayTimeText(radduration*10)])"
|
||||
if("buffer")
|
||||
if("ui")
|
||||
temp_html += status
|
||||
temp_html += buttons
|
||||
temp_html += "<h1>Buffer Menu</h1>"
|
||||
temp_html += "<h1>Unique Identifiers</h1>"
|
||||
temp_html += "<a href='?src=[REF(src)];task=setstrength;num=[radstrength-1];'>--</a> <a href='?src=[REF(src)];task=setstrength;'>Output Level</a> <a href='?src=[REF(src)];task=setstrength;num=[radstrength+1];'>++</a>"
|
||||
temp_html += "<br><a href='?src=[REF(src)];task=setduration;num=[radduration-1];'>--</a> <a href='?src=[REF(src)];task=setduration;'>Pulse Duration</a> <a href='?src=[REF(src)];task=setduration;num=[radduration+1];'>++</a>"
|
||||
temp_html += "<h3>Irradiate Subject</h3>"
|
||||
temp_html += "<div class='line'><div class='statusLabel'>Unique Identifier:</div><div class='statusValue'><div class='clearBoth'>"
|
||||
var/max_line_len = 7*DNA_BLOCK_SIZE
|
||||
if(viable_occupant)
|
||||
temp_html += "<div class='dnaBlockNumber'>1</div>"
|
||||
var/len = length(viable_occupant.dna.uni_identity)
|
||||
for(var/i=1, i<=len, i++)
|
||||
temp_html += "<a class='dnaBlock' href='?src=[REF(src)];task=pulseui;num=[i];'>[copytext(viable_occupant.dna.uni_identity,i,i+1)]</a>"
|
||||
if ((i % max_line_len) == 0)
|
||||
temp_html += "</div><div class='clearBoth'>"
|
||||
if((i % DNA_BLOCK_SIZE) == 0 && i < len)
|
||||
temp_html += "<div class='dnaBlockNumber'>[(i / DNA_BLOCK_SIZE) + 1]</div>"
|
||||
else
|
||||
temp_html += "---------"
|
||||
temp_html += "</div></div><br><h1>Buffer Menu</h1>"
|
||||
|
||||
if(istype(buffer))
|
||||
for(var/i=1, i<=buffer.len, i++)
|
||||
@@ -188,7 +260,6 @@
|
||||
temp_html += "<span class='linkOff'>Save to Disk</span>"
|
||||
else
|
||||
var/ui = buffer_slot["UI"]
|
||||
var/se = buffer_slot["SE"]
|
||||
var/ue = buffer_slot["UE"]
|
||||
var/name = buffer_slot["name"]
|
||||
var/label = buffer_slot["label"]
|
||||
@@ -234,19 +305,6 @@
|
||||
temp_html += "<a href='?src=[REF(src)];task=injector;num=[i];text=mixed'>UI+UE Injector</a>"
|
||||
else
|
||||
temp_html += "<span class='linkOff'>UI+UE Injector</span>"
|
||||
if(se)
|
||||
temp_html += "<br>\tSE: [se] "
|
||||
if(viable_occupant)
|
||||
temp_html += "<a href='?src=[REF(src)];task=transferbuffer;num=[i];text=se'>Occupant</a>"
|
||||
else
|
||||
temp_html += "<span class='linkOff'>Occupant</span>"
|
||||
temp_html += "<a href='?src=[REF(src)];task=setdelayed;num=[i];delayaction=[SCANNER_ACTION_SE]'>Occupant:Delayed</a>"
|
||||
if(injectorready < world.time )
|
||||
temp_html += "<a href='?src=[REF(src)];task=injector;num=[i];text=se'>Injector</a>"
|
||||
else
|
||||
temp_html += "<span class='linkOff'>Injector</span>"
|
||||
else
|
||||
temp_html += "<br>\tSE: No Data"
|
||||
if(viable_occupant)
|
||||
temp_html += "<br><a href='?src=[REF(src)];task=setbuffer;num=[i];'>Save to Buffer</a>"
|
||||
else
|
||||
@@ -260,48 +318,197 @@
|
||||
temp_html += "<a href='?src=[REF(src)];task=savedisk;num=[i];'>Save to Disk</a>"
|
||||
else
|
||||
temp_html += "<span class='linkOff'>Save to Disk</span>"
|
||||
if("disk")
|
||||
temp_html += status
|
||||
temp_html += buttons
|
||||
if(diskette)
|
||||
temp_html += "<h3>[diskette.name]</h3><br>"
|
||||
temp_html += "<a href='?src=[REF(src)];task=ejectdisk'>Eject Disk</a><br>"
|
||||
if(LAZYLEN(diskette.mutations))
|
||||
temp_html += "<table>"
|
||||
for(var/datum/mutation/human/A in diskette.mutations)
|
||||
temp_html += "<tr><td><span class='linkOff'>[A.name]</span></td>"
|
||||
temp_html += "<td><a href='?src=[REF(src)];task=deletediskmut;num=[diskette.mutations.Find(A)];'>Delete</a></td>"
|
||||
if(LAZYLEN(stored_mutations) < max_storage)
|
||||
temp_html += "<td><a href='?src=[REF(src)];task=importdiskmut;num=[diskette.mutations.Find(A)];'>Import</a></td>"
|
||||
else
|
||||
temp_html += "<td><td><span class='linkOff'>Import</span></td>"
|
||||
temp_html += "</tr>"
|
||||
temp_html += "</table>"
|
||||
else
|
||||
temp_html += "<br>Load diskette to start ----------"
|
||||
if("info")
|
||||
if(LAZYLEN(stored_mutations))
|
||||
if(LAZYLEN(stored_mutations) >= current_storage)
|
||||
var/datum/mutation/human/HM = stored_mutations[current_storage]
|
||||
if(HM)
|
||||
temp_html += display_sequence(HM.type, current_storage)
|
||||
else
|
||||
current_screen = "mainmenu"
|
||||
if("mutations")
|
||||
temp_html += status
|
||||
temp_html += buttons
|
||||
temp_html += "<h3>Mutation Storage:<br></h3>"
|
||||
temp_html += "<table>"
|
||||
for(var/datum/mutation/human/HM in stored_mutations)
|
||||
var/i = stored_mutations.Find(HM)
|
||||
temp_html += "<tr><td><a href='?src=[REF(src)];task=inspectstorage;num=[i]'>[HM.name]</a></td>"
|
||||
temp_html += "<td><a href='?src=[REF(src)];task=exportdiskmut;path=[HM.type]'>Export</a></td>"
|
||||
temp_html += "<td><a href='?src=[REF(src)];task=deletemut;num=[i]'>Delete</a></td>"
|
||||
if(combine == HM.type)
|
||||
temp_html += "<td><span class='linkOff'>Combine</span></td></tr>"
|
||||
else
|
||||
temp_html += "<td><a href='?src=[REF(src)];task=combine;num=[i]'>Combine</a></td></tr>"
|
||||
temp_html += "</table><br>"
|
||||
temp_html += "<h3>Chromosome Storage:<br></h3>"
|
||||
temp_html += "<table>"
|
||||
for(var/i in 1 to stored_chromosomes.len)
|
||||
var/obj/item/chromosome/CM = stored_chromosomes[i]
|
||||
temp_html += "<td><a href='?src=[REF(src)];task=ejectchromosome;num=[i]'>[CM.name]</a></td><br>"
|
||||
temp_html += "</table>"
|
||||
else
|
||||
temp_html += status
|
||||
temp_html += buttons
|
||||
temp_html += "<h1>Radiation Emitter Menu</h1>"
|
||||
|
||||
temp_html += "<a href='?src=[REF(src)];task=setstrength;num=[radstrength-1];'>--</a> <a href='?src=[REF(src)];task=setstrength;'>Output Level</a> <a href='?src=[REF(src)];task=setstrength;num=[radstrength+1];'>++</a>"
|
||||
temp_html += "<br><a href='?src=[REF(src)];task=setduration;num=[radduration-1];'>--</a> <a href='?src=[REF(src)];task=setduration;'>Pulse Duration</a> <a href='?src=[REF(src)];task=setduration;num=[radduration+1];'>++</a>"
|
||||
|
||||
temp_html += "<h3>Irradiate Subject</h3>"
|
||||
temp_html += "<div class='line'><div class='statusLabel'>Unique Identifier:</div><div class='statusValue'><div class='clearBoth'>"
|
||||
|
||||
var/max_line_len = 7*DNA_BLOCK_SIZE
|
||||
temp_html += "<div class='line'><div class='statusLabel'>Genetic Sequence:</div><br>"
|
||||
if(viable_occupant)
|
||||
temp_html += "<div class='dnaBlockNumber'>1</div>"
|
||||
var/len = length(viable_occupant.dna.uni_identity)
|
||||
for(var/i=1, i<=len, i++)
|
||||
temp_html += "<a class='dnaBlock' href='?src=[REF(src)];task=pulseui;num=[i];'>[copytext(viable_occupant.dna.uni_identity,i,i+1)]</a>"
|
||||
if ((i % max_line_len) == 0)
|
||||
temp_html += "</div><div class='clearBoth'>"
|
||||
if((i % DNA_BLOCK_SIZE) == 0 && i < len)
|
||||
temp_html += "<div class='dnaBlockNumber'>[(i / DNA_BLOCK_SIZE) + 1]</div>"
|
||||
if(viable_occupant)
|
||||
for(var/A in get_mutation_list())
|
||||
temp_html += display_inactive_sequence(A)
|
||||
temp_html += "<br>"
|
||||
else
|
||||
temp_html += "----"
|
||||
if(viable_occupant && (current_mutation in get_mutation_list(viable_occupant)))
|
||||
temp_html += display_sequence(current_mutation)
|
||||
temp_html += "</div><br>"
|
||||
else
|
||||
temp_html += "----"
|
||||
temp_html += "</div></div></div><br>"
|
||||
|
||||
temp_html += "<br><div class='line'><div class='statusLabel'>Structural Enzymes:</div><div class='statusValue'><div class='clearBoth'>"
|
||||
if(viable_occupant)
|
||||
temp_html += "<div class='dnaBlockNumber'>1</div>"
|
||||
var/len = length(viable_occupant.dna.struc_enzymes)
|
||||
for(var/i=1, i<=len, i++)
|
||||
temp_html += "<a class='dnaBlock' href='?src=[REF(src)];task=pulsese;num=[i];'>[copytext(viable_occupant.dna.struc_enzymes,i,i+1)]</a>"
|
||||
if ((i % max_line_len) == 0)
|
||||
temp_html += "</div><div class='clearBoth'>"
|
||||
if((i % DNA_BLOCK_SIZE) == 0 && i < len)
|
||||
temp_html += "<div class='dnaBlockNumber'>[(i / DNA_BLOCK_SIZE) + 1]</div>"
|
||||
else
|
||||
temp_html += "----"
|
||||
temp_html += "</div></div></div>"
|
||||
temp_html += "----------"
|
||||
|
||||
popup.set_content(temp_html.Join())
|
||||
popup.open()
|
||||
|
||||
/obj/machinery/computer/scan_consolenew/proc/display_inactive_sequence(mutation)
|
||||
var/temp_html = ""
|
||||
var/class = "unselected"
|
||||
var/mob/living/carbon/viable_occupant = get_viable_occupant()
|
||||
if(!viable_occupant)
|
||||
return
|
||||
|
||||
var/location = viable_occupant.dna.mutation_index.Find(mutation) //We do this because we dont want people using sysexp or similair tools to just read the mutations.
|
||||
|
||||
if(!location) //Do this only when needed, dont make a list with mutations for every iteration if you dont need to
|
||||
var/list/mutations = get_mutation_list(TRUE)
|
||||
if(mutation in mutations)
|
||||
location = mutations.Find(mutation)
|
||||
if(mutation == current_mutation)
|
||||
class = "selected"
|
||||
if(location > DNA_MUTATION_BLOCKS)
|
||||
temp_html += "<a class='clean' href='?src=[REF(src)];task=inspect;num=[location];'><img class='[class]' src='dna_extra.gif' width = '65' alt='Extra Mutation'></a>"
|
||||
else if(mutation in stored_research.discovered_mutations)
|
||||
temp_html += "<a class='clean' href='?src=[REF(src)];task=inspect;num=[location];'><img class='[class]' src='dna_discovered.gif' width = '65' alt='Discovered Mutation'></a>"
|
||||
else
|
||||
temp_html += "<a class='clean' clean href='?src=[REF(src)];task=inspect;num=[location];'><img class='[class]' src='dna_undiscovered.gif' width = '65' alt=Undiscovered Mutation'></a>"
|
||||
return temp_html
|
||||
|
||||
/obj/machinery/computer/scan_consolenew/proc/display_sequence(mutation, storage_slot) //Storage slot is for when viewing from the stored mutations
|
||||
var/temp_html = ""
|
||||
if(!mutation)
|
||||
temp_html += "ERR-"
|
||||
return
|
||||
var/mut_name = "Unknown gene"
|
||||
var/mut_desc = "No information available."
|
||||
var/alias
|
||||
var/discovered = FALSE
|
||||
var/active = FALSE
|
||||
var/scrambled = FALSE
|
||||
var/instability
|
||||
var/mob/living/carbon/viable_occupant = get_viable_occupant()
|
||||
var/datum/mutation/human/HM = get_valid_mutation(mutation)
|
||||
|
||||
if(viable_occupant)
|
||||
var/datum/mutation/human/M = viable_occupant.dna.get_mutation(mutation)
|
||||
if(M)
|
||||
scrambled = M.scrambled
|
||||
active = TRUE
|
||||
var/datum/mutation/human/A = GET_INITIALIZED_MUTATION(mutation)
|
||||
alias = A.alias
|
||||
if(active && !scrambled)
|
||||
discover(mutation)
|
||||
if(stored_research && (mutation in stored_research.discovered_mutations))
|
||||
mut_name = A.name
|
||||
mut_desc = A.desc
|
||||
discovered = TRUE
|
||||
instability = A.instability
|
||||
var/extra
|
||||
if(viable_occupant && !(storage_slot || viable_occupant.dna.mutation_in_sequence(mutation)))
|
||||
extra = TRUE
|
||||
|
||||
if(discovered && !scrambled)
|
||||
var/mutcolor
|
||||
switch(A.quality)
|
||||
if(POSITIVE)
|
||||
mutcolor = "good"
|
||||
if(MINOR_NEGATIVE)
|
||||
mutcolor = "average"
|
||||
if(NEGATIVE)
|
||||
mutcolor = "bad"
|
||||
if(HM)
|
||||
instability *= GET_MUTATION_STABILIZER(HM)
|
||||
temp_html += "<div class='statusDisplay'><div class='statusLine'><span class='[mutcolor]'><b>[mut_name]</b></span><small> ([alias])</small><br>"
|
||||
temp_html += "<div class='statusLine'>Instability : [round(instability)]</span><br>"
|
||||
else
|
||||
temp_html += "<div class='statusDisplay'><div class='statusLine'><b>[alias]</b><br>"
|
||||
temp_html += "<div class='statusLine'>[mut_desc]<br></div>"
|
||||
if(active && !storage_slot)
|
||||
if(HM?.can_chromosome && (HM in viable_occupant.dna.mutations))
|
||||
var/i = viable_occupant.dna.mutations.Find(HM)
|
||||
var/chromosome_name = "<a href='?src=[REF(src)];task=applychromosome;path=[mutation];num=[i];'>----</a>"
|
||||
if(HM.chromosome_name)
|
||||
chromosome_name = HM.chromosome_name
|
||||
temp_html += "<div class='statusLine'>Chromosome status: [chromosome_name]<br></div>"
|
||||
temp_html += "<div class='statusLine'>Sequence:<br><br></div>"
|
||||
if(!scrambled)
|
||||
for(var/block in 1 to A.blocks)
|
||||
var/whole_sequence = get_valid_gene_string(mutation)
|
||||
var/sequence = copytext(whole_sequence, 1+(block-1)*(DNA_SEQUENCE_LENGTH*2),(DNA_SEQUENCE_LENGTH*2*block+1))
|
||||
temp_html += "<div class='statusLine'><table class='statusDisplay'><tr>"
|
||||
for(var/i in 1 to DNA_SEQUENCE_LENGTH)
|
||||
var/num = 1+(i-1)*2
|
||||
var/genenum = num+(DNA_SEQUENCE_LENGTH*2*(block-1))
|
||||
temp_html += "<td><div class='statusLine'><span class='dnaBlockNumber'><a href='?src=[REF(src)];task=pulsegene;num=[genenum];path=[mutation];'>[sequence[num]]</span></a></div></td>"
|
||||
temp_html += "</tr><tr>"
|
||||
for(var/i in 1 to DNA_SEQUENCE_LENGTH)
|
||||
temp_html += "<td><div class='statusLine'>|</div></td>"
|
||||
temp_html += "</tr><tr>"
|
||||
for(var/i in 1 to DNA_SEQUENCE_LENGTH)
|
||||
var/num = i*2
|
||||
var/genenum = num+(DNA_SEQUENCE_LENGTH*2*(block-1))
|
||||
temp_html += "<td><div class='statusLine'><span class='dnaBlockNumber'><a href='?src=[REF(src)];task=pulsegene;num=[genenum];path=[mutation];'>[sequence[num]]</span></a></div></td>"
|
||||
temp_html += "</tr></table></div>"
|
||||
temp_html += "<br><br><br><br><br>"
|
||||
else
|
||||
temp_html = "<div class='statusLine'>Sequence unreadable due to unpredictable mutation.</div>"
|
||||
if((active || storage_slot) && (injectorready < world.time) && !scrambled)
|
||||
temp_html += "<a href='?src=[REF(src)];task=activator;path=[mutation];slot=[storage_slot];'>Print Activator</a>"
|
||||
temp_html += "<a href='?src=[REF(src)];task=mutator;path=[mutation];slot;=[storage_slot];'>Print Mutator</a>"
|
||||
else
|
||||
temp_html += "<span class='linkOff'>Print Activator</span>"
|
||||
temp_html += "<span class='linkOff'>Print Mutator</span>"
|
||||
temp_html += "<br><div class='statusLine'>"
|
||||
if(storage_slot)
|
||||
temp_html += "<a href='?src=[REF(src)];task=deletemut;num=[storage_slot];'>Delete</a>"
|
||||
if((LAZYLEN(stored_mutations) < max_storage) && diskette && !diskette.read_only)
|
||||
temp_html += "<a href='?src=[REF(src)];task=exportdiskmut;path=[mutation];'>Export</a>"
|
||||
else
|
||||
temp_html += "<span class='linkOff'>Export</span>"
|
||||
temp_html += "<a href='?src=[REF(src)];task=screen;text=mutations;'>Back</a>"
|
||||
else if(active && !scrambled)
|
||||
temp_html += "<a href='?src=[REF(src)];task=savemut;path=[mutation];'>Store</a>"
|
||||
if(extra || scrambled)
|
||||
temp_html += "<a href='?src=[REF(src)];task=nullify;'>Nullify</a>"
|
||||
else
|
||||
temp_html += "<span class='linkOff'>Nullify</span>"
|
||||
temp_html += "</div></div>"
|
||||
return temp_html
|
||||
|
||||
/obj/machinery/computer/scan_consolenew/Topic(href, href_list)
|
||||
if(..())
|
||||
@@ -340,13 +547,16 @@
|
||||
radstrength = WRAP(num, 1, RADIATION_STRENGTH_MAX+1)
|
||||
if("screen")
|
||||
current_screen = href_list["text"]
|
||||
if("rejuv")
|
||||
if(viable_occupant && viable_occupant.reagents)
|
||||
var/potassiodide_amount = viable_occupant.reagents.get_reagent_amount("potass_iodide")
|
||||
var/can_add = max(min(REJUVENATORS_MAX - potassiodide_amount, REJUVENATORS_INJECT), 0)
|
||||
viable_occupant.reagents.add_reagent("potass_iodide", can_add)
|
||||
if("scramble")
|
||||
if(viable_occupant && (scrambleready < world.time))
|
||||
viable_occupant.dna.remove_all_mutations(list(MUT_NORMAL, MUT_EXTRA))
|
||||
viable_occupant.dna.generate_dna_blocks()
|
||||
scrambleready = world.time + SCRAMBLE_TIMEOUT
|
||||
to_chat(usr,"<span class'notice'>DNA scrambled.</span>")
|
||||
viable_occupant.radiation += RADIATION_STRENGTH_MULTIPLIER*50/(connected.damage_coeff ** 2)
|
||||
|
||||
if("setbufferlabel")
|
||||
var/text = sanitize(input(usr, "Input a new label:", "Input an Text", null) as text|null)
|
||||
var/text = sanitize(input(usr, "Input a new label:", "Input a Text", null) as text|null)
|
||||
if(num && text)
|
||||
num = CLAMP(num, 1, NUMBER_OF_BUFFERS)
|
||||
var/list/buffer_slot = buffer[num]
|
||||
@@ -358,7 +568,6 @@
|
||||
buffer[num] = list(
|
||||
"label"="Buffer[num]:[viable_occupant.real_name]",
|
||||
"UI"=viable_occupant.dna.uni_identity,
|
||||
"SE"=viable_occupant.dna.struc_enzymes,
|
||||
"UE"=viable_occupant.dna.unique_enzymes,
|
||||
"name"=viable_occupant.real_name,
|
||||
"blood_type"=viable_occupant.dna.blood_type
|
||||
@@ -372,8 +581,6 @@
|
||||
if("transferbuffer")
|
||||
if(num && viable_occupant)
|
||||
switch(href_list["text"]) //Numbers are this high because other way upgrading laser is just not worth the hassle, and i cant think of anything better to inmrove
|
||||
if("se")
|
||||
apply_buffer(SCANNER_ACTION_SE,num)
|
||||
if("ui")
|
||||
apply_buffer(SCANNER_ACTION_UI,num)
|
||||
if("ue")
|
||||
@@ -387,28 +594,6 @@
|
||||
if(istype(buffer_slot))
|
||||
var/obj/item/dnainjector/timed/I
|
||||
switch(href_list["text"])
|
||||
if("se")
|
||||
if(buffer_slot["SE"])
|
||||
I = new /obj/item/dnainjector/timed(loc)
|
||||
var/powers = 0
|
||||
for(var/datum/mutation/human/HM in GLOB.good_mutations + GLOB.bad_mutations + GLOB.not_good_mutations)
|
||||
if(HM.check_block_string(buffer_slot["SE"]))
|
||||
I.add_mutations.Add(HM)
|
||||
if(HM in GLOB.good_mutations)
|
||||
powers += 1
|
||||
if(HM in GLOB.bad_mutations + GLOB.not_good_mutations)
|
||||
powers -= 1 //To prevent just unlocking everything to get all powers to a syringe for max tech
|
||||
else
|
||||
I.remove_mutations.Add(HM)
|
||||
var/time_coeff
|
||||
for(var/datum/mutation/human/HM in I.add_mutations)
|
||||
if(!time_coeff)
|
||||
time_coeff = HM.time_coeff
|
||||
continue
|
||||
time_coeff = min(time_coeff,HM.time_coeff)
|
||||
if(connected)
|
||||
I.duration = I.duration * time_coeff * connected.damage_coeff
|
||||
I.damage_coeff = connected.damage_coeff
|
||||
if("ui")
|
||||
if(buffer_slot["UI"])
|
||||
I = new /obj/item/dnainjector/timed(loc)
|
||||
@@ -447,7 +632,7 @@
|
||||
if("setdelayed")
|
||||
if(num)
|
||||
delayed_action = list("action"=text2num(href_list["delayaction"]),"buffer"=num)
|
||||
if("pulseui","pulsese")
|
||||
if("pulseui")
|
||||
if(num && viable_occupant && connected)
|
||||
radduration = WRAP(radduration, 1, RADIATION_DURATION_MAX+1)
|
||||
radstrength = WRAP(radstrength, 1, RADIATION_STRENGTH_MAX+1)
|
||||
@@ -459,7 +644,7 @@
|
||||
ui_interact(usr)
|
||||
|
||||
sleep(radduration*10)
|
||||
current_screen = "mainmenu"
|
||||
current_screen = "ui"
|
||||
|
||||
if(viable_occupant && connected && connected.occupant==viable_occupant)
|
||||
viable_occupant.radiation += (RADIATION_IRRADIATION_MULTIPLIER*radduration*radstrength)/(connected.damage_coeff ** 2) //Read comment in "transferbuffer" section above for explanation
|
||||
@@ -480,35 +665,173 @@
|
||||
|
||||
viable_occupant.dna.uni_identity = copytext(viable_occupant.dna.uni_identity, 1, num) + hex + copytext(viable_occupant.dna.uni_identity, num+1, 0)
|
||||
viable_occupant.updateappearance(mutations_overlay_update=1)
|
||||
if("pulsese")
|
||||
var/len = length(viable_occupant.dna.struc_enzymes)
|
||||
num = WRAP(num, 1, len+1)
|
||||
num = randomize_radiation_accuracy(num, radduration + (connected.precision_coeff ** 2), len)
|
||||
|
||||
var/block = round((num-1)/DNA_BLOCK_SIZE)+1
|
||||
var/subblock = num - block*DNA_BLOCK_SIZE
|
||||
last_change = "SE #[block]-[subblock]; "
|
||||
|
||||
var/hex = copytext(viable_occupant.dna.struc_enzymes, num, num+1)
|
||||
last_change += "[hex]"
|
||||
hex = scramble(hex, radstrength, radduration)
|
||||
last_change += "->[hex]"
|
||||
|
||||
viable_occupant.dna.struc_enzymes = copytext(viable_occupant.dna.struc_enzymes, 1, num) + hex + copytext(viable_occupant.dna.struc_enzymes, num+1, 0)
|
||||
viable_occupant.domutcheck()
|
||||
else
|
||||
current_screen = "mainmenu"
|
||||
|
||||
if(connected)
|
||||
connected.locked = locked_state
|
||||
if("inspect")
|
||||
if(viable_occupant)
|
||||
var/list/mutations = get_mutation_list(TRUE)
|
||||
if(current_mutation == mutations[num])
|
||||
current_mutation = null
|
||||
else
|
||||
current_mutation = mutations[num]
|
||||
|
||||
if("inspectstorage")
|
||||
current_storage = num
|
||||
current_screen = "info"
|
||||
if("savemut")
|
||||
if(viable_occupant)
|
||||
var/succes
|
||||
if(LAZYLEN(stored_mutations) < max_storage)
|
||||
var/mutation = text2path(href_list["path"])
|
||||
if(ispath(mutation, /datum/mutation/human)) //sanity checks
|
||||
var/datum/mutation/human/HM = viable_occupant.dna.get_mutation(mutation)
|
||||
if(HM)
|
||||
var/datum/mutation/human/A = new HM.type()
|
||||
A.copy_mutation(HM)
|
||||
succes = TRUE
|
||||
stored_mutations += A
|
||||
to_chat(usr,"<span class='notice'>Mutation succesfully stored.</span>")
|
||||
if(!succes) //we can exactly return here
|
||||
to_chat(usr,"<span class='warning'>Mutation storage is full.</span>")
|
||||
if("deletemut")
|
||||
var/datum/mutation/human/HM = stored_mutations[num]
|
||||
if(HM)
|
||||
stored_mutations.Remove(HM)
|
||||
qdel(HM)
|
||||
current_screen = "mutations"
|
||||
if("activator")
|
||||
if(injectorready < world.time)
|
||||
var/mutation = text2path(href_list["path"])
|
||||
if(ispath(mutation, /datum/mutation/human))
|
||||
var/datum/mutation/human/HM = get_valid_mutation(mutation)
|
||||
if(HM)
|
||||
var/obj/item/dnainjector/activator/I = new /obj/item/dnainjector/activator(loc)
|
||||
I.add_mutations += new HM.type (copymut = HM)
|
||||
I.name = "[HM.name] activator"
|
||||
I.research = TRUE
|
||||
if(connected)
|
||||
I.damage_coeff = connected.damage_coeff*4
|
||||
injectorready = world.time + INJECTOR_TIMEOUT * (1 - 0.1 * connected.precision_coeff) //precision_coeff being the matter bin rating
|
||||
else
|
||||
injectorready = world.time + INJECTOR_TIMEOUT
|
||||
if("mutator")
|
||||
if(injectorready < world.time)
|
||||
var/mutation = text2path(href_list["path"])
|
||||
if(ispath(mutation, /datum/mutation/human))
|
||||
var/datum/mutation/human/HM = get_valid_mutation(mutation)
|
||||
if(HM)
|
||||
var/obj/item/dnainjector/activator/I = new /obj/item/dnainjector/activator(loc)
|
||||
I.add_mutations += new HM.type (copymut = HM)
|
||||
I.doitanyway = TRUE
|
||||
I.name = "[HM.name] injector"
|
||||
if(connected)
|
||||
I.damage_coeff = connected.damage_coeff
|
||||
injectorready = world.time + INJECTOR_TIMEOUT * 5 * (1 - 0.1 * connected.precision_coeff)
|
||||
else
|
||||
injectorready = world.time + INJECTOR_TIMEOUT * 5
|
||||
if("nullify")
|
||||
if(viable_occupant)
|
||||
var/datum/mutation/human/A = viable_occupant.dna.get_mutation(current_mutation)
|
||||
if(A && (!viable_occupant.dna.mutation_in_sequence(current_mutation) || A.scrambled))
|
||||
viable_occupant.dna.remove_mutation(current_mutation)
|
||||
current_screen = "mainmenu"
|
||||
current_mutation = null
|
||||
if("pulsegene")
|
||||
if(current_screen != "info")
|
||||
var/path = text2path(href_list["path"])
|
||||
if(viable_occupant && num && (path in viable_occupant.dna.mutation_index))
|
||||
var/list/genes = list("A","T","G","C","X")
|
||||
if(jokerready < world.time)
|
||||
genes += "JOKER"
|
||||
var/sequence = GET_GENE_STRING(path, viable_occupant.dna)
|
||||
var/original = sequence[num]
|
||||
var/new_gene = input("From [original] to-", "New block", original) as null|anything in genes
|
||||
if(!new_gene)
|
||||
new_gene = original
|
||||
if(viable_occupant == get_viable_occupant()) //No cheesing
|
||||
if((new_gene == "JOKER") && (jokerready < world.time))
|
||||
var/true_genes = GET_SEQUENCE(current_mutation)
|
||||
new_gene = true_genes[num]
|
||||
jokerready = world.time + JOKER_TIMEOUT - (JOKER_UPGRADE * (connected.precision_coeff-1))
|
||||
sequence = copytext(sequence, 1, num) + new_gene + copytext(sequence, num+1, length(sequence)+1)
|
||||
viable_occupant.dna.mutation_index[path] = sequence
|
||||
viable_occupant.radiation += RADIATION_STRENGTH_MULTIPLIER/connected.damage_coeff
|
||||
viable_occupant.domutcheck()
|
||||
if("exportdiskmut")
|
||||
if(diskette && !diskette.read_only)
|
||||
var/path = text2path(href_list["path"])
|
||||
if(ispath(path, /datum/mutation/human))
|
||||
var/datum/mutation/human/A = get_valid_mutation(path)
|
||||
if(A && diskette && (LAZYLEN(diskette.mutations) < diskette.max_mutations))
|
||||
var/datum/mutation/human/HM = new A.type()
|
||||
diskette.mutations += HM
|
||||
HM.copy_mutation(A)
|
||||
to_chat(usr, "<span class='notice'>Succesfully written [A.name] to [diskette.name].</span>")
|
||||
if("deletediskmut")
|
||||
if(diskette && !diskette.read_only)
|
||||
if(num && (LAZYLEN(diskette.mutations) >= num))
|
||||
var/datum/mutation/human/A = diskette.mutations[num]
|
||||
diskette.mutations.Remove(A)
|
||||
qdel(A)
|
||||
if("importdiskmut")
|
||||
if(diskette && (LAZYLEN(diskette.mutations) >= num))
|
||||
if(LAZYLEN(stored_mutations) < max_storage)
|
||||
var/datum/mutation/human/A = diskette.mutations[num]
|
||||
var/datum/mutation/human/HM = new A.type()
|
||||
HM.copy_mutation(A)
|
||||
stored_mutations += HM
|
||||
to_chat(usr,"<span class='notice'>Succesfully written [A.name] to storage.")
|
||||
if("combine")
|
||||
if(num && (LAZYLEN(stored_mutations) >= num))
|
||||
if(LAZYLEN(stored_mutations) < max_storage)
|
||||
var/datum/mutation/human/A = stored_mutations[num]
|
||||
var/path = A.type
|
||||
if(combine)
|
||||
var/result_path = get_mixed_mutation(combine, path)
|
||||
if(result_path)
|
||||
stored_mutations += new result_path()
|
||||
to_chat(usr, "<span class='boldnotice'>Succes! New mutation has been added to storage</span>")
|
||||
discover(result_path)
|
||||
combine = null
|
||||
else
|
||||
to_chat(usr, "<span class='warning'>Failed. No mutation could be created.</span>")
|
||||
combine = null
|
||||
else
|
||||
combine = path
|
||||
to_chat(usr,"<span class='notice'>Selected [A.name] for combining</span>")
|
||||
else
|
||||
to_chat(usr, "<span class='warning'>Not enough space to store potential mutation.</span>")
|
||||
if("ejectchromosome")
|
||||
if(LAZYLEN(stored_chromosomes) <= num)
|
||||
var/obj/item/chromosome/CM = stored_chromosomes[num]
|
||||
CM.forceMove(drop_location())
|
||||
adjust_item_drop_location(CM)
|
||||
stored_chromosomes -= CM
|
||||
if("applychromosome")
|
||||
if(viable_occupant && (LAZYLEN(viable_occupant.dna.mutations) <= num))
|
||||
var/datum/mutation/human/HM = viable_occupant.dna.mutations[num]
|
||||
var/list/chromosomes = list()
|
||||
for(var/obj/item/chromosome/CM in stored_chromosomes)
|
||||
if(CM.can_apply(HM))
|
||||
chromosomes += CM
|
||||
if(chromosomes.len)
|
||||
var/obj/item/chromosome/CM = input("Select a chromosome to apply", "Apply Chromosome") as null|anything in sortNames(chromosomes)
|
||||
if(CM)
|
||||
to_chat(usr, "<span class='notice'>You apply [CM] to [HM.name].</span>")
|
||||
stored_chromosomes -= CM
|
||||
CM.apply(HM)
|
||||
|
||||
|
||||
ui_interact(usr,last_change)
|
||||
|
||||
/obj/machinery/computer/scan_consolenew/proc/scramble(input,rs,rd)
|
||||
/obj/machinery/computer/scan_consolenew/proc/scramble(input,rs,rd) //hexadecimal genetics. dont confuse with scramble button
|
||||
var/length = length(input)
|
||||
var/ran = gaussian(0, rs*RADIATION_STRENGTH_MULTIPLIER)
|
||||
if(ran == 0)
|
||||
ran = pick(-1,1) //hacky, statistically should almost never happen. 0-change makes people mad though
|
||||
ran = pick(-1,1) //hacky, statistically should almost never happen. 0-chance makes people mad though
|
||||
else if(ran < 0)
|
||||
ran = round(ran) //negative, so floor it
|
||||
else
|
||||
@@ -537,10 +860,6 @@
|
||||
//Each laser level reduces damage by lvl^2, so no effect on 1 lvl, 4 times less damage on 2 and 9 times less damage on 3
|
||||
//Numbers are this high because other way upgrading laser is just not worth the hassle, and i cant think of anything better to inmrove
|
||||
switch(action)
|
||||
if(SCANNER_ACTION_SE)
|
||||
if(buffer_slot["SE"])
|
||||
viable_occupant.dna.struc_enzymes = buffer_slot["SE"]
|
||||
viable_occupant.domutcheck()
|
||||
if(SCANNER_ACTION_UI)
|
||||
if(buffer_slot["UI"])
|
||||
viable_occupant.dna.uni_identity = buffer_slot["UI"]
|
||||
@@ -562,15 +881,54 @@
|
||||
viable_occupant.dna.blood_type = buffer_slot["blood_type"]
|
||||
|
||||
/obj/machinery/computer/scan_consolenew/proc/on_scanner_close()
|
||||
if(delayed_action && connected)
|
||||
if(delayed_action && get_viable_occupant())
|
||||
to_chat(connected.occupant, "<span class='notice'>[src] activates!</span>")
|
||||
apply_buffer(delayed_action["action"],delayed_action["buffer"])
|
||||
delayed_action = null //or make it stick + reset button ?
|
||||
|
||||
/obj/machinery/computer/scan_consolenew/proc/get_valid_mutation(mutation)
|
||||
var/mob/living/carbon/C = get_viable_occupant()
|
||||
if(C)
|
||||
var/datum/mutation/human/HM = C.dna.get_mutation(mutation)
|
||||
if(HM)
|
||||
return HM
|
||||
for(var/datum/mutation/human/A in stored_mutations)
|
||||
if(A.type == mutation)
|
||||
return A
|
||||
|
||||
|
||||
/obj/machinery/computer/scan_consolenew/proc/get_mutation_list(include_storage) //Returns a list of the mutation index types and any extra mutations
|
||||
var/mob/living/carbon/viable_occupant = get_viable_occupant()
|
||||
var/list/paths = list()
|
||||
if(viable_occupant)
|
||||
for(var/A in viable_occupant.dna.mutation_index)
|
||||
paths += A
|
||||
for(var/datum/mutation/human/A in viable_occupant.dna.mutations)
|
||||
if(A.class == MUT_EXTRA)
|
||||
paths += A.type
|
||||
if(include_storage)
|
||||
for(var/datum/mutation/human/A in stored_mutations)
|
||||
paths += A.type
|
||||
return paths
|
||||
|
||||
/obj/machinery/computer/scan_consolenew/proc/get_valid_gene_string(mutation)
|
||||
var/mob/living/carbon/C = get_viable_occupant()
|
||||
if(C && (mutation in C.dna.mutation_index))
|
||||
return GET_GENE_STRING(mutation, C.dna)
|
||||
else if(C && (LAZYLEN(C.dna.mutations)))
|
||||
for(var/datum/mutation/human/A in C.dna.mutations)
|
||||
if(A.type == mutation)
|
||||
return GET_SEQUENCE(mutation)
|
||||
for(var/datum/mutation/human/A in stored_mutations)
|
||||
if(A.type == mutation)
|
||||
return GET_SEQUENCE(mutation)
|
||||
|
||||
/obj/machinery/computer/scan_consolenew/proc/discover(mutation)
|
||||
if(stored_research && !(mutation in stored_research.discovered_mutations))
|
||||
stored_research.discovered_mutations += mutation
|
||||
return TRUE
|
||||
/////////////////////////// DNA MACHINES
|
||||
#undef INJECTOR_TIMEOUT
|
||||
#undef REJUVENATORS_INJECT
|
||||
#undef REJUVENATORS_MAX
|
||||
#undef NUMBER_OF_BUFFERS
|
||||
|
||||
#undef RADIATION_STRENGTH_MAX
|
||||
|
||||
@@ -26,9 +26,9 @@
|
||||
var/list/unclean_mutations = (GLOB.not_good_mutations|GLOB.bad_mutations)
|
||||
H.dna.remove_mutation_group(unclean_mutations)
|
||||
if(efficiency > 5 && prob(20))
|
||||
H.randmutvg()
|
||||
H.easy_randmut(POSITIVE)
|
||||
if(efficiency < 3 && prob(50))
|
||||
var/mob/M = H.randmutb()
|
||||
var/mob/M = H.easy_randmut(NEGATIVE+MINOR_NEGATIVE)
|
||||
if(ismob(M))
|
||||
H = M
|
||||
|
||||
@@ -292,6 +292,6 @@
|
||||
temp = "<font class='bad'>Cloning cycle already in progress.</font>"
|
||||
playsound(src, 'sound/machines/terminal_prompt_deny.ogg', 50, 0)
|
||||
else
|
||||
pod.growclone(null, mob_occupant.real_name, dna.uni_identity, dna.struc_enzymes, clone_species, dna.features, mob_occupant.faction)
|
||||
pod.growclone(null, mob_occupant.real_name, dna.uni_identity, dna.mutation_index, clone_species, dna.features, mob_occupant.faction)
|
||||
temp = "[mob_occupant.real_name] => <font class='good'>Cloning data sent to pod.</font>"
|
||||
playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0)
|
||||
|
||||
@@ -134,4 +134,9 @@
|
||||
/obj/machinery/stasis/crowbar_act(mob/living/user, obj/item/I)
|
||||
return default_deconstruction_crowbar(I)
|
||||
|
||||
/obj/machinery/stasis/attack_robot(mob/user)
|
||||
if(Adjacent(user) && occupant)
|
||||
unbuckle_mob(occupant)
|
||||
else
|
||||
..()
|
||||
#undef STASIS_TOGGLE_COOLDOWN
|
||||
@@ -11,7 +11,8 @@
|
||||
var/equip_ready = 1 //whether the equipment is ready for use. (or deactivated/activated for static stuff)
|
||||
var/energy_drain = 0
|
||||
var/obj/mecha/chassis = null
|
||||
var/range = MELEE //bitFflags
|
||||
///Bitflag. Determines the range of the equipment.
|
||||
var/range = MECHA_MELEE
|
||||
var/salvageable = 1
|
||||
var/selectable = 1 // Set to 0 for passive equipment such as mining scanner or armor plates
|
||||
var/harmful = FALSE //Controls if equipment can be used to attack by a pacifist.
|
||||
@@ -59,10 +60,10 @@
|
||||
return txt
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/proc/is_ranged()//add a distance restricted equipment. Why not?
|
||||
return range&RANGED
|
||||
return range&MECHA_RANGED
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/proc/is_melee()
|
||||
return range&MELEE
|
||||
return range&MECHA_MELEE
|
||||
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/proc/action_checks(atom/target)
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
icon = 'icons/obj/machines/sleeper.dmi'
|
||||
icon_state = "sleeper"
|
||||
energy_drain = 20
|
||||
range = MELEE
|
||||
range = MECHA_MELEE
|
||||
equip_cooldown = 20
|
||||
var/mob/living/carbon/patient = null
|
||||
var/inject_amount = 10
|
||||
@@ -252,7 +252,7 @@
|
||||
var/synth_speed = 5 //[num] reagent units per cycle
|
||||
energy_drain = 10
|
||||
var/mode = 0 //0 - fire syringe, 1 - analyze reagents.
|
||||
range = MELEE|RANGED
|
||||
range = MECHA_MELEE|MECHA_RANGED
|
||||
equip_cooldown = 10
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/Initialize()
|
||||
@@ -527,7 +527,7 @@
|
||||
desc = "Equipment for medical exosuits. Generates a focused beam of medical nanites."
|
||||
icon_state = "mecha_medigun"
|
||||
energy_drain = 10
|
||||
range = MELEE|RANGED
|
||||
range = MECHA_MELEE|MECHA_RANGED
|
||||
equip_cooldown = 0
|
||||
var/obj/item/gun/medbeam/mech/medigun
|
||||
materials = list(MAT_METAL = 15000, MAT_GLASS = 8000, MAT_PLASMA = 3000, MAT_GOLD = 8000, MAT_DIAMOND = 2000)
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
icon_state = "mecha_teleport"
|
||||
equip_cooldown = 150
|
||||
energy_drain = 1000
|
||||
range = RANGED
|
||||
range = MECHA_RANGED
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/teleporter/action(atom/target)
|
||||
if(!action_checks(target) || is_centcom_level(loc.z))
|
||||
@@ -30,7 +30,7 @@
|
||||
icon_state = "mecha_wholegen"
|
||||
equip_cooldown = 50
|
||||
energy_drain = 300
|
||||
range = RANGED
|
||||
range = MECHA_RANGED
|
||||
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/wormhole_generator/action(atom/target)
|
||||
@@ -73,7 +73,7 @@
|
||||
icon_state = "mecha_teleport"
|
||||
equip_cooldown = 10
|
||||
energy_drain = 100
|
||||
range = MELEE|RANGED
|
||||
range = MECHA_MELEE|MECHA_RANGED
|
||||
var/atom/movable/locked
|
||||
var/mode = 1 //1 - gravsling 2 - gravpush
|
||||
|
||||
@@ -284,12 +284,12 @@
|
||||
if(equip_ready) //disabled
|
||||
return
|
||||
var/area/A = get_area(chassis)
|
||||
var/pow_chan = get_power_channel(A)
|
||||
var/pow_chan = GET_MUTATION_POWER_channel(A)
|
||||
if(pow_chan)
|
||||
return 1000 //making magic
|
||||
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/proc/get_power_channel(var/area/A)
|
||||
/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/proc/GET_MUTATION_POWER_channel(var/area/A)
|
||||
var/pow_chan
|
||||
if(A)
|
||||
for(var/c in use_channels)
|
||||
@@ -350,7 +350,7 @@
|
||||
name = "exosuit plasma converter"
|
||||
desc = "An exosuit module that generates power using solid plasma as fuel. Pollutes the environment."
|
||||
icon_state = "tesla"
|
||||
range = MELEE
|
||||
range = MECHA_MELEE
|
||||
var/coeff = 100
|
||||
var/obj/item/stack/sheet/fuel
|
||||
var/max_fuel = 150000
|
||||
|
||||
@@ -164,7 +164,7 @@
|
||||
icon_state = "mecha_exting"
|
||||
equip_cooldown = 5
|
||||
energy_drain = 0
|
||||
range = MELEE|RANGED
|
||||
range = MECHA_MELEE|MECHA_RANGED
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/extinguisher/Initialize()
|
||||
. = ..()
|
||||
@@ -231,7 +231,7 @@
|
||||
icon_state = "mecha_rcd"
|
||||
equip_cooldown = 10
|
||||
energy_drain = 250
|
||||
range = MELEE|RANGED
|
||||
range = MECHA_MELEE|MECHA_RANGED
|
||||
item_flags = NO_MAT_REDEMPTION
|
||||
var/mode = 0 //0 - deconstruct, 1 - wall or floor, 2 - airlock.
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon
|
||||
name = "mecha weapon"
|
||||
range = RANGED
|
||||
range = MECHA_RANGED
|
||||
var/projectile
|
||||
var/fire_sound
|
||||
var/projectiles_per_shot = 1
|
||||
@@ -154,7 +154,7 @@
|
||||
icon_state = "mecha_honker"
|
||||
energy_drain = 200
|
||||
equip_cooldown = 150
|
||||
range = MELEE|RANGED
|
||||
range = MECHA_MELEE|MECHA_RANGED
|
||||
kickback = FALSE
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/honker/can_attach(obj/mecha/combat/honker/M)
|
||||
@@ -405,7 +405,7 @@
|
||||
icon_state = "mecha_punching_glove"
|
||||
energy_drain = 250
|
||||
equip_cooldown = 20
|
||||
range = MELEE|RANGED
|
||||
range = MECHA_MELEE|MECHA_RANGED
|
||||
missile_range = 5
|
||||
projectile = /obj/item/punching_glove
|
||||
fire_sound = 'sound/items/bikehorn.ogg'
|
||||
|
||||
@@ -1,17 +1,3 @@
|
||||
#define MECHA_INT_FIRE (1<<0)
|
||||
#define MECHA_INT_TEMP_CONTROL (1<<1)
|
||||
#define MECHA_INT_SHORT_CIRCUIT (1<<2)
|
||||
#define MECHA_INT_TANK_BREACH (1<<3)
|
||||
#define MECHA_INT_CONTROL_LOST (1<<4)
|
||||
|
||||
#define MELEE 1
|
||||
#define RANGED 2
|
||||
|
||||
#define FRONT_ARMOUR 1
|
||||
#define SIDE_ARMOUR 2
|
||||
#define BACK_ARMOUR 3
|
||||
|
||||
|
||||
/obj/mecha
|
||||
name = "mecha"
|
||||
desc = "Exosuit"
|
||||
@@ -35,9 +21,9 @@
|
||||
max_integrity = 300 //max_integrity is base health
|
||||
var/deflect_chance = 10 //chance to deflect the incoming projectiles, hits, or lesser the effect of ex_act.
|
||||
armor = list("melee" = 20, "bullet" = 10, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
|
||||
var/list/facing_modifiers = list(FRONT_ARMOUR = 1.5, SIDE_ARMOUR = 1, BACK_ARMOUR = 0.5)
|
||||
var/list/facing_modifiers = list(MECHA_FRONT_ARMOUR = 1.5, MECHA_SIDE_ARMOUR = 1, MECHA_BACK_ARMOUR = 0.5)
|
||||
var/obj/item/stock_parts/cell/cell
|
||||
var/state = 0
|
||||
var/construction_state = MECHA_LOCKED
|
||||
var/list/log = new
|
||||
var/last_message = 0
|
||||
var/add_req_access = 1
|
||||
@@ -436,7 +422,7 @@
|
||||
return
|
||||
if(user.incapacitated())
|
||||
return
|
||||
if(state)
|
||||
if(construction_state)
|
||||
occupant_message("<span class='warning'>Maintenance protocols in effect.</span>")
|
||||
return
|
||||
if(!get_charge())
|
||||
@@ -519,7 +505,7 @@
|
||||
occupant_message("<span class='warning'>Unable to move while connected to the air system port!</span>")
|
||||
last_message = world.time
|
||||
return 0
|
||||
if(state)
|
||||
if(construction_state)
|
||||
occupant_message("<span class='danger'>Maintenance protocols in effect.</span>")
|
||||
return
|
||||
return domove(direction)
|
||||
@@ -689,7 +675,7 @@
|
||||
//Transfer from core or card to mech. Proc is called by mech.
|
||||
switch(interaction)
|
||||
if(AI_TRANS_TO_CARD) //Upload AI from mech to AI card.
|
||||
if(!state) //Mech must be in maint mode to allow carding.
|
||||
if(construction_state) //Mech must be in maint mode to allow carding.
|
||||
to_chat(user, "<span class='warning'>[name] must have maintenance protocols active in order to allow a transfer.</span>")
|
||||
return
|
||||
AI = occupant
|
||||
|
||||
@@ -116,7 +116,7 @@
|
||||
|
||||
//9
|
||||
list(
|
||||
"key" = /obj/item/stock_parts/cell,
|
||||
"key" = /obj/item/stock_parts/scanning_module,
|
||||
"action" = ITEM_MOVE_INSIDE,
|
||||
"back_key" = TOOL_SCREWDRIVER,
|
||||
"desc" = "Peripherals control module is secured."
|
||||
@@ -126,10 +126,40 @@
|
||||
list(
|
||||
"key" = TOOL_SCREWDRIVER,
|
||||
"back_key" = TOOL_CROWBAR,
|
||||
"desc" = "The power cell is installed."
|
||||
"desc" = "Scanner module is installed."
|
||||
),
|
||||
|
||||
//11
|
||||
list(
|
||||
"key" = /obj/item/stock_parts/capacitor,
|
||||
"action" = ITEM_MOVE_INSIDE,
|
||||
"back_key" = TOOL_SCREWDRIVER,
|
||||
"desc" = "Scanner module is secured."
|
||||
),
|
||||
|
||||
//12
|
||||
list(
|
||||
"key" = TOOL_SCREWDRIVER,
|
||||
"back_key" = TOOL_CROWBAR,
|
||||
"desc" = "Capacitor is installed."
|
||||
),
|
||||
|
||||
//13
|
||||
list(
|
||||
"key" = /obj/item/stock_parts/cell,
|
||||
"action" = ITEM_MOVE_INSIDE,
|
||||
"back_key" = TOOL_SCREWDRIVER,
|
||||
"desc" = "Capacitor is secured."
|
||||
),
|
||||
|
||||
//14
|
||||
list(
|
||||
"key" = TOOL_SCREWDRIVER,
|
||||
"back_key" = TOOL_CROWBAR,
|
||||
"desc" = "The power cell is installed."
|
||||
),
|
||||
|
||||
//15
|
||||
list(
|
||||
"key" = /obj/item/stack/sheet/metal,
|
||||
"amount" = 5,
|
||||
@@ -137,21 +167,21 @@
|
||||
"desc" = "The power cell is secured."
|
||||
),
|
||||
|
||||
//12
|
||||
//16
|
||||
list(
|
||||
"key" = TOOL_WRENCH,
|
||||
"back_key" = TOOL_CROWBAR,
|
||||
"desc" = "Internal armor is installed."
|
||||
),
|
||||
|
||||
//13
|
||||
//17
|
||||
list(
|
||||
"key" = TOOL_WELDER,
|
||||
"back_key" = TOOL_WRENCH,
|
||||
"desc" = "Internal armor is wrenched."
|
||||
),
|
||||
|
||||
//14
|
||||
//18
|
||||
list(
|
||||
"key" = /obj/item/stack/sheet/plasteel,
|
||||
"amount" = 5,
|
||||
@@ -159,14 +189,14 @@
|
||||
"desc" = "Internal armor is welded."
|
||||
),
|
||||
|
||||
//15
|
||||
//19
|
||||
list(
|
||||
"key" = TOOL_WRENCH,
|
||||
"back_key" = TOOL_CROWBAR,
|
||||
"desc" = "External armor is installed."
|
||||
),
|
||||
|
||||
//16
|
||||
//20
|
||||
list(
|
||||
"key" = TOOL_WELDER,
|
||||
"back_key" = TOOL_WRENCH,
|
||||
@@ -222,36 +252,56 @@
|
||||
else
|
||||
user.visible_message("[user] unfastens the peripherals control module.", "<span class='notice'>You unfasten the peripherals control module.</span>")
|
||||
if(10)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] secures the scanner module.", "<span class='notice'>You secure the scanner module.</span>")
|
||||
else
|
||||
user.visible_message("[user] removes the scanner module from [parent].", "<span class='notice'>You remove the scanner module from [parent].</span>")
|
||||
if(11)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] installs [I] to [parent].", "<span class='notice'>You install [I] to [parent].</span>")
|
||||
else
|
||||
user.visible_message("[user] unfastens the scanner module.", "<span class='notice'>You unfasten the scanner module.</span>")
|
||||
if(12)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] secures [I].", "<span class='notice'>You secure [I].</span>")
|
||||
else
|
||||
user.visible_message("[user] removes the capacitor from [parent].", "<span class='notice'>You remove the capacitor from [parent].</span>")
|
||||
if(13)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] installs [I].", "<span class='notice'>You install [I].</span>")
|
||||
else
|
||||
user.visible_message("[user] unsecures the capacitor from [parent].", "<span class='notice'>You unsecure the capacitor from [parent].</span>")
|
||||
if(14)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] secures the power cell.", "<span class='notice'>You secure the power cell.</span>")
|
||||
else
|
||||
user.visible_message("[user] pries the power cell from [parent].", "<span class='notice'>You pry the power cell from [parent].</span>")
|
||||
if(11)
|
||||
if(15)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] installs the internal armor layer to [parent].", "<span class='notice'>You install the internal armor layer to [parent].</span>")
|
||||
else
|
||||
user.visible_message("[user] unfastens the power cell.", "<span class='notice'>You unfasten the power cell.</span>")
|
||||
if(12)
|
||||
if(16)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] secures the internal armor layer.", "<span class='notice'>You secure the internal armor layer.</span>")
|
||||
else
|
||||
user.visible_message("[user] pries internal armor layer from [parent].", "<span class='notice'>You pry internal armor layer from [parent].</span>")
|
||||
if(13)
|
||||
if(17)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] welds the internal armor layer to [parent].", "<span class='notice'>You weld the internal armor layer to [parent].</span>")
|
||||
else
|
||||
user.visible_message("[user] unfastens the internal armor layer.", "<span class='notice'>You unfasten the internal armor layer.</span>")
|
||||
if(14)
|
||||
if(18)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] installs the external reinforced armor layer to [parent].", "<span class='notice'>You install the external reinforced armor layer to [parent].</span>")
|
||||
else
|
||||
user.visible_message("[user] cuts the internal armor layer from [parent].", "<span class='notice'>You cut the internal armor layer from [parent].</span>")
|
||||
if(15)
|
||||
if(19)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] secures the external armor layer.", "<span class='notice'>You secure the external reinforced armor layer.</span>")
|
||||
else
|
||||
user.visible_message("[user] pries external armor layer from [parent].", "<span class='notice'>You pry external armor layer from [parent].</span>")
|
||||
if(16)
|
||||
if(20)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] welds the external armor layer to [parent].", "<span class='notice'>You weld the external armor layer to [parent].</span>")
|
||||
else
|
||||
@@ -629,7 +679,7 @@
|
||||
|
||||
//9
|
||||
list(
|
||||
"key" = /obj/item/stock_parts/cell,
|
||||
"key" = /obj/item/stock_parts/scanning_module,
|
||||
"action" = ITEM_MOVE_INSIDE,
|
||||
"back_key" = TOOL_SCREWDRIVER,
|
||||
"desc" = "Peripherals control module is secured."
|
||||
@@ -639,10 +689,40 @@
|
||||
list(
|
||||
"key" = TOOL_SCREWDRIVER,
|
||||
"back_key" = TOOL_CROWBAR,
|
||||
"desc" = "The power cell is installed."
|
||||
"desc" = "Scanner module is installed."
|
||||
),
|
||||
|
||||
//11
|
||||
list(
|
||||
"key" = /obj/item/stock_parts/capacitor,
|
||||
"action" = ITEM_MOVE_INSIDE,
|
||||
"back_key" = TOOL_SCREWDRIVER,
|
||||
"desc" = "Scanner module is secured."
|
||||
),
|
||||
|
||||
//12
|
||||
list(
|
||||
"key" = TOOL_SCREWDRIVER,
|
||||
"back_key" = TOOL_CROWBAR,
|
||||
"desc" = "Capacitor is installed."
|
||||
),
|
||||
|
||||
//13
|
||||
list(
|
||||
"key" = /obj/item/stock_parts/cell,
|
||||
"action" = ITEM_MOVE_INSIDE,
|
||||
"back_key" = TOOL_SCREWDRIVER,
|
||||
"desc" = "Capacitor is secured."
|
||||
),
|
||||
|
||||
//14
|
||||
list(
|
||||
"key" = TOOL_SCREWDRIVER,
|
||||
"back_key" = TOOL_CROWBAR,
|
||||
"desc" = "The power cell is installed."
|
||||
),
|
||||
|
||||
//15
|
||||
list(
|
||||
"key" = /obj/item/stack/sheet/plasteel,
|
||||
"amount" = 5,
|
||||
@@ -650,21 +730,21 @@
|
||||
"desc" = "The power cell is secured."
|
||||
),
|
||||
|
||||
//12
|
||||
//16
|
||||
list(
|
||||
"key" = TOOL_WRENCH,
|
||||
"back_key" = TOOL_CROWBAR,
|
||||
"desc" = "Internal armor is installed."
|
||||
),
|
||||
|
||||
//13
|
||||
//17
|
||||
list(
|
||||
"key" = TOOL_WELDER,
|
||||
"back_key" = TOOL_WRENCH,
|
||||
"desc" = "Internal armor is wrenched."
|
||||
),
|
||||
|
||||
//14
|
||||
//18
|
||||
list(
|
||||
"key" = /obj/item/stack/sheet/plasteel,
|
||||
"amount" = 5,
|
||||
@@ -672,7 +752,7 @@
|
||||
"desc" = "Internal armor is welded."
|
||||
),
|
||||
|
||||
//15
|
||||
//19
|
||||
list(
|
||||
"key" = /obj/item/stack/sheet/plasteel,
|
||||
"amount" = 5,
|
||||
@@ -680,14 +760,14 @@
|
||||
"desc" = "External armor is being installed."
|
||||
),
|
||||
|
||||
//16
|
||||
//20
|
||||
list(
|
||||
"key" = TOOL_WRENCH,
|
||||
"back_key" = TOOL_CROWBAR,
|
||||
"desc" = "External armor is installed."
|
||||
),
|
||||
|
||||
//17
|
||||
//21
|
||||
list(
|
||||
"key" = TOOL_WELDER,
|
||||
"back_key" = TOOL_WRENCH,
|
||||
@@ -744,41 +824,61 @@
|
||||
else
|
||||
user.visible_message("[user] unfastens the peripherals control module.", "<span class='notice'>You unfasten the peripherals control module.</span>")
|
||||
if(10)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] secures the scanner module.", "<span class='notice'>You secure the scanner module.</span>")
|
||||
else
|
||||
user.visible_message("[user] removes the scanner module from [parent].", "<span class='notice'>You remove the scanner module from [parent].</span>")
|
||||
if(12)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] installs [I] to [parent].", "<span class='notice'>You install [I] to [parent].</span>")
|
||||
else
|
||||
user.visible_message("[user] unfastens the scanner module.", "<span class='notice'>You unfasten the scanner module.</span>")
|
||||
if(13)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] secures the capacitor.", "<span class='notice'>You secure the capacitor.</span>")
|
||||
else
|
||||
user.visible_message("[user] removes the capacitor from [parent].", "<span class='notice'>You remove the capacitor from [parent].</span>")
|
||||
if(14)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] installs [I] into [parent].", "<span class='notice'>You install [I] into [parent].</span>")
|
||||
else
|
||||
user.visible_message("[user] unfastens the capacitor.", "<span class='notice'>You unfasten the capacitor.</span>")
|
||||
if(15)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] secures the power cell.", "<span class='notice'>You secure the power cell.</span>")
|
||||
else
|
||||
user.visible_message("[user] pries the power cell from [parent].", "<span class='notice'>You pry the power cell from [parent].</span>")
|
||||
if(11)
|
||||
if(16)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] installs the internal armor layer to [parent].", "<span class='notice'>You install the internal armor layer to [parent].</span>")
|
||||
else
|
||||
user.visible_message("[user] unfastens the power cell.", "<span class='notice'>You unfasten the power cell.</span>")
|
||||
if(12)
|
||||
if(17)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] secures the internal armor layer.", "<span class='notice'>You secure the internal armor layer.</span>")
|
||||
else
|
||||
user.visible_message("[user] pries internal armor layer from [parent].", "<span class='notice'>You pry internal armor layer from [parent].</span>")
|
||||
if(13)
|
||||
if(18)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] welds the internal armor layer to [parent].", "<span class='notice'>You weld the internal armor layer to [parent].</span>")
|
||||
else
|
||||
user.visible_message("[user] unfastens the internal armor layer.", "<span class='notice'>You unfasten the internal armor layer.</span>")
|
||||
if(14)
|
||||
if(19)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] starts to install the external armor layer to [parent].", "<span class='notice'>You install the external armor layer to [parent].</span>")
|
||||
else
|
||||
user.visible_message("[user] cuts the internal armor layer from [parent].", "<span class='notice'>You cut the internal armor layer from [parent].</span>")
|
||||
if(15)
|
||||
if(20)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] installs the external reinforced armor layer to [parent].", "<span class='notice'>You install the external reinforced armor layer to [parent].</span>")
|
||||
else
|
||||
user.visible_message("[user] removes the external armor from [parent].", "<span class='notice'>You remove the external armor from [parent].</span>")
|
||||
if(16)
|
||||
if(21)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] secures the external armor layer.", "<span class='notice'>You secure the external reinforced armor layer.</span>")
|
||||
else
|
||||
user.visible_message("[user] pries external armor layer from [parent].", "<span class='notice'>You pry external armor layer from [parent].</span>")
|
||||
if(17)
|
||||
if(22)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] welds the external armor layer to [parent].", "<span class='notice'>You weld the external armor layer to [parent].</span>")
|
||||
else
|
||||
@@ -825,47 +925,63 @@
|
||||
list(
|
||||
"key" = /obj/item/bikehorn
|
||||
),
|
||||
|
||||
//6
|
||||
list(
|
||||
"key" = /obj/item/circuitboard/mecha/honker/targeting,
|
||||
"action" = ITEM_DELETE
|
||||
),
|
||||
|
||||
//7
|
||||
list(
|
||||
"key" = /obj/item/bikehorn
|
||||
),
|
||||
|
||||
//8
|
||||
list(
|
||||
"key" = /obj/item/stock_parts/cell,
|
||||
"key" = /obj/item/stock_parts/scanning_module,
|
||||
"action" = ITEM_MOVE_INSIDE
|
||||
),
|
||||
|
||||
//9
|
||||
list(
|
||||
"key" = /obj/item/bikehorn
|
||||
),
|
||||
|
||||
//10
|
||||
list(
|
||||
"key" = /obj/item/clothing/mask/gas/clown_hat,
|
||||
"action" = ITEM_DELETE
|
||||
"key" = /obj/item/stock_parts/capacitor,
|
||||
"action" = ITEM_MOVE_INSIDE
|
||||
),
|
||||
|
||||
//11
|
||||
list(
|
||||
"key" = /obj/item/bikehorn
|
||||
),
|
||||
|
||||
//12
|
||||
list(
|
||||
"key" = /obj/item/stock_parts/cell,
|
||||
"action" = ITEM_MOVE_INSIDE
|
||||
),
|
||||
|
||||
//13
|
||||
list(
|
||||
"key" = /obj/item/bikehorn
|
||||
),
|
||||
|
||||
//14
|
||||
list(
|
||||
"key" = /obj/item/clothing/mask/gas/clown_hat,
|
||||
"action" = ITEM_DELETE
|
||||
),
|
||||
|
||||
//15
|
||||
list(
|
||||
"key" = /obj/item/bikehorn
|
||||
),
|
||||
|
||||
//16
|
||||
list(
|
||||
"key" = /obj/item/clothing/shoes/clown_shoes,
|
||||
"action" = ITEM_DELETE
|
||||
),
|
||||
|
||||
//13
|
||||
//17
|
||||
list(
|
||||
"key" = /obj/item/bikehorn
|
||||
),
|
||||
@@ -898,8 +1014,12 @@
|
||||
if(8)
|
||||
user.visible_message("[user] installs [I] into [parent].", "<span class='notice'>You install [I] into [parent].</span>")
|
||||
if(10)
|
||||
user.visible_message("[user] puts [I] on [parent].", "<span class='notice'>You put [I] on [parent].</span>")
|
||||
user.visible_message("[user] installs [I] into [parent].", "<span class='notice'>You install [I] into [parent].</span>")
|
||||
if(12)
|
||||
user.visible_message("[user] installs [I] into [parent].", "<span class='notice'>You install [I] into [parent].</span>")
|
||||
if(14)
|
||||
user.visible_message("[user] puts [I] on [parent].", "<span class='notice'>You put [I] on [parent].</span>")
|
||||
if(16)
|
||||
user.visible_message("[user] puts [I] on [parent].", "<span class='notice'>You put [I] on [parent].</span>")
|
||||
return TRUE
|
||||
|
||||
@@ -1629,7 +1749,7 @@
|
||||
|
||||
//9
|
||||
list(
|
||||
"key" = /obj/item/stock_parts/cell,
|
||||
"key" = /obj/item/stock_parts/scanning_module,
|
||||
"action" = ITEM_MOVE_INSIDE,
|
||||
"back_key" = TOOL_SCREWDRIVER,
|
||||
"desc" = "Peripherals control module is secured."
|
||||
@@ -1639,32 +1759,60 @@
|
||||
list(
|
||||
"key" = TOOL_SCREWDRIVER,
|
||||
"back_key" = TOOL_CROWBAR,
|
||||
"desc" = "The power cell is installed."
|
||||
"desc" = "Scanner module is installed."
|
||||
),
|
||||
|
||||
//11
|
||||
list(
|
||||
"key" = /obj/item/stock_parts/capacitor,
|
||||
"action" = ITEM_MOVE_INSIDE,
|
||||
"back_key" = TOOL_SCREWDRIVER,
|
||||
"desc" = "Scanner module is secured."
|
||||
),
|
||||
|
||||
//12
|
||||
list(
|
||||
"key" = TOOL_SCREWDRIVER,
|
||||
"back_key" = TOOL_CROWBAR,
|
||||
"desc" = "Capacitor is installed."
|
||||
),
|
||||
|
||||
//13
|
||||
list(
|
||||
"key" = /obj/item/stock_parts/cell,
|
||||
"action" = ITEM_MOVE_INSIDE,
|
||||
"back_key" = TOOL_SCREWDRIVER,
|
||||
"desc" = "Capacitor is secured."
|
||||
),
|
||||
|
||||
//14
|
||||
list(
|
||||
"key" = /obj/item/stack/sheet/metal,
|
||||
"amount" = 5,
|
||||
"back_key" = TOOL_SCREWDRIVER,
|
||||
"desc" = "The power cell is secured."
|
||||
),
|
||||
|
||||
//12
|
||||
//15
|
||||
list(
|
||||
"key" = TOOL_SCREWDRIVER,
|
||||
"back_key" = TOOL_CROWBAR,
|
||||
"desc" = "The power cell is installed."
|
||||
),
|
||||
//16
|
||||
list(
|
||||
"key" = TOOL_WRENCH,
|
||||
"back_key" = TOOL_CROWBAR,
|
||||
"desc" = "Internal armor is installed."
|
||||
),
|
||||
|
||||
//13
|
||||
//17
|
||||
list(
|
||||
"key" = TOOL_WELDER,
|
||||
"back_key" = TOOL_WRENCH,
|
||||
"desc" = "Internal armor is wrenched."
|
||||
),
|
||||
|
||||
//14
|
||||
//18
|
||||
list(
|
||||
"key" = /obj/item/stack/sheet/plasteel,
|
||||
"amount" = 5,
|
||||
@@ -1672,14 +1820,14 @@
|
||||
"desc" = "Internal armor is welded."
|
||||
),
|
||||
|
||||
//15
|
||||
//19
|
||||
list(
|
||||
"key" = TOOL_WRENCH,
|
||||
"back_key" = TOOL_CROWBAR,
|
||||
"desc" = "External armor is installed."
|
||||
),
|
||||
|
||||
//16
|
||||
//20
|
||||
list(
|
||||
"key" = TOOL_WELDER,
|
||||
"back_key" = TOOL_WRENCH,
|
||||
@@ -1736,36 +1884,56 @@
|
||||
else
|
||||
user.visible_message("[user] unfastens the peripherals control module.", "<span class='notice'>You unfasten the peripherals control module.</span>")
|
||||
if(10)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] secures the scanner module.", "<span class='notice'>You secure the scanner module.</span>")
|
||||
else
|
||||
user.visible_message("[user] removes the scanner module from [parent].", "<span class='notice'>You remove the scanner module from [parent].</span>")
|
||||
if(11)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] installs [I] to [parent].", "<span class='notice'>You install [I] to [parent].</span>")
|
||||
else
|
||||
user.visible_message("[user] unfastens the scanner module.", "<span class='notice'>You unfasten the scanner module.</span>")
|
||||
if(12)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] secures the capacitor.", "<span class='notice'>You secure the capacitor.</span>")
|
||||
else
|
||||
user.visible_message("[user] removes the capacitor from [parent].", "<span class='notice'>You remove the capacitor from [parent].</span>")
|
||||
if(13)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] installs [I] into [parent].", "<span class='notice'>You install [I] into [parent].</span>")
|
||||
else
|
||||
user.visible_message("[user] unfastens the capacitor.", "<span class='notice'>You unfasten the capacitor.</span>")
|
||||
if(14)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] secures the power cell.", "<span class='notice'>You secure the power cell.</span>")
|
||||
else
|
||||
user.visible_message("[user] pries the power cell from [parent].", "<span class='notice'>You pry the power cell from [parent].</span>")
|
||||
if(11)
|
||||
if(15)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] installs the internal armor layer to [parent].", "<span class='notice'>You install the internal armor layer to [parent].</span>")
|
||||
else
|
||||
user.visible_message("[user] unfastens the power cell.", "<span class='notice'>You unfasten the power cell.</span>")
|
||||
if(12)
|
||||
if(16)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] secures the internal armor layer.", "<span class='notice'>You secure the internal armor layer.</span>")
|
||||
else
|
||||
user.visible_message("[user] pries internal armor layer from [parent].", "<span class='notice'>You pry internal armor layer from [parent].</span>")
|
||||
if(13)
|
||||
if(17)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] welds the internal armor layer to [parent].", "<span class='notice'>You weld the internal armor layer to [parent].</span>")
|
||||
else
|
||||
user.visible_message("[user] unfastens the internal armor layer.", "<span class='notice'>You unfasten the internal armor layer.</span>")
|
||||
if(14)
|
||||
if(18)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] installs the external armor layer to [parent].", "<span class='notice'>You install the external reinforced armor layer to [parent].</span>")
|
||||
else
|
||||
user.visible_message("[user] cuts the internal armor layer from [parent].", "<span class='notice'>You cut the internal armor layer from [parent].</span>")
|
||||
if(15)
|
||||
if(19)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] secures the external armor layer.", "<span class='notice'>You secure the external reinforced armor layer.</span>")
|
||||
else
|
||||
user.visible_message("[user] pries the external armor layer from [parent].", "<span class='notice'>You pry the external armor layer from [parent].</span>")
|
||||
if(16)
|
||||
if(20)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] welds the external armor layer to [parent].", "<span class='notice'>You weld the external armor layer to [parent].</span>")
|
||||
else
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
/obj/mecha/proc/get_armour_facing(relative_dir)
|
||||
switch(relative_dir)
|
||||
if(0) // BACKSTAB!
|
||||
return facing_modifiers[BACK_ARMOUR]
|
||||
return facing_modifiers[MECHA_BACK_ARMOUR]
|
||||
if(45, 90, 270, 315)
|
||||
return facing_modifiers[SIDE_ARMOUR]
|
||||
return facing_modifiers[MECHA_SIDE_ARMOUR]
|
||||
if(225, 180, 135)
|
||||
return facing_modifiers[FRONT_ARMOUR]
|
||||
return facing_modifiers[MECHA_FRONT_ARMOUR]
|
||||
return 1 //always return non-0
|
||||
|
||||
/obj/mecha/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir)
|
||||
@@ -199,23 +199,23 @@
|
||||
else
|
||||
to_chat(user, "<span class='warning'>Maintenance protocols disabled by operator.</span>")
|
||||
else if(istype(W, /obj/item/wrench))
|
||||
if(state==1)
|
||||
state = 2
|
||||
if(construction_state==1)
|
||||
construction_state = 2
|
||||
to_chat(user, "<span class='notice'>You undo the securing bolts.</span>")
|
||||
else if(state==2)
|
||||
state = 1
|
||||
else if(construction_state==2)
|
||||
construction_state = 1
|
||||
to_chat(user, "<span class='notice'>You tighten the securing bolts.</span>")
|
||||
return
|
||||
else if(istype(W, /obj/item/crowbar))
|
||||
if(state==2)
|
||||
state = 3
|
||||
if(construction_state==2)
|
||||
construction_state = 3
|
||||
to_chat(user, "<span class='notice'>You open the hatch to the power unit.</span>")
|
||||
else if(state==3)
|
||||
state=2
|
||||
else if(construction_state==3)
|
||||
construction_state=2
|
||||
to_chat(user, "<span class='notice'>You close the hatch to the power unit.</span>")
|
||||
return
|
||||
else if(istype(W, /obj/item/stack/cable_coil))
|
||||
if(state == 3 && (internal_damage & MECHA_INT_SHORT_CIRCUIT))
|
||||
if(construction_state == 3 && (internal_damage & MECHA_INT_SHORT_CIRCUIT))
|
||||
var/obj/item/stack/cable_coil/CC = W
|
||||
if(CC.use(2))
|
||||
clearInternalDamage(MECHA_INT_SHORT_CIRCUIT)
|
||||
@@ -227,19 +227,19 @@
|
||||
if(internal_damage & MECHA_INT_TEMP_CONTROL)
|
||||
clearInternalDamage(MECHA_INT_TEMP_CONTROL)
|
||||
to_chat(user, "<span class='notice'>You repair the damaged temperature controller.</span>")
|
||||
else if(state==3 && cell)
|
||||
else if(construction_state==3 && cell)
|
||||
cell.forceMove(loc)
|
||||
cell = null
|
||||
state = 4
|
||||
construction_state = 4
|
||||
to_chat(user, "<span class='notice'>You unscrew and pry out the powercell.</span>")
|
||||
log_message("Powercell removed")
|
||||
else if(state==4 && cell)
|
||||
state=3
|
||||
else if(construction_state==4 && cell)
|
||||
construction_state=3
|
||||
to_chat(user, "<span class='notice'>You screw the cell in place.</span>")
|
||||
return
|
||||
|
||||
else if(istype(W, /obj/item/stock_parts/cell))
|
||||
if(state==4)
|
||||
if(construction_state==4)
|
||||
if(!cell)
|
||||
if(!user.transferItemToLoc(W, src))
|
||||
return
|
||||
|
||||
@@ -199,8 +199,8 @@
|
||||
</head>
|
||||
<body>
|
||||
[add_req_access?"<a href='?src=[REF(src)];req_access=1;id_card=[REF(id_card)];user=[REF(user)]'>Edit operation keycodes</a>":null]
|
||||
[maint_access?"<a href='?src=[REF(src)];maint_access=1;id_card=[REF(id_card)];user=[REF(user)]'>[(state>0) ? "Terminate" : "Initiate"] maintenance protocol</a>":null]
|
||||
[(state>0) ?"<a href='?src=[REF(src)];set_internal_tank_valve=1;user=[REF(user)]'>Set Cabin Air Pressure</a>":null]
|
||||
[maint_access?"<a href='?src=[REF(src)];maint_access=1;id_card=[REF(id_card)];user=[REF(user)]'>[(construction_state > MECHA_LOCKED) ? "Terminate" : "Initiate"] maintenance protocol</a>":null]
|
||||
[(construction_state > MECHA_LOCKED) ?"<a href='?src=[REF(src)];set_internal_tank_valve=1;user=[REF(user)]'>Set Cabin Air Pressure</a>":null]
|
||||
</body>
|
||||
</html>"}
|
||||
user << browse(., "window=exosuit_maint_console")
|
||||
@@ -231,15 +231,15 @@
|
||||
if(href_list["maint_access"] && maint_access)
|
||||
var/mob/user = afilter.getMob("user")
|
||||
if(user)
|
||||
if(state==0)
|
||||
state = 1
|
||||
if(construction_state == MECHA_LOCKED)
|
||||
construction_state = MECHA_SECURE_BOLTS
|
||||
to_chat(user, "The securing bolts are now exposed.")
|
||||
else if(state==1)
|
||||
state = 0
|
||||
else if(construction_state == MECHA_SECURE_BOLTS)
|
||||
construction_state = MECHA_LOCKED
|
||||
to_chat(user, "The securing bolts are now hidden.")
|
||||
output_maintenance_dialog(afilter.getObj("id_card"),user)
|
||||
|
||||
if(href_list["set_internal_tank_valve"] && state >=1)
|
||||
if(href_list["set_internal_tank_valve"] && construction_state)
|
||||
var/mob/user = afilter.getMob("user")
|
||||
if(user)
|
||||
var/new_pressure = input(user,"Input new output pressure","Pressure setting",internal_tank_valve) as num
|
||||
@@ -305,7 +305,7 @@
|
||||
send_byjax(src.occupant,"exosuit.browser","t_id_upload","[add_req_access?"L":"Unl"]ock ID upload panel")
|
||||
|
||||
if(href_list["toggle_maint_access"])
|
||||
if(state)
|
||||
if(construction_state)
|
||||
occupant_message("<span class='danger'>Maintenance protocols in effect</span>")
|
||||
return
|
||||
maint_access = !maint_access
|
||||
|
||||
@@ -153,6 +153,8 @@
|
||||
/area/centcom,
|
||||
/area/asteroid,
|
||||
/area/tdome,
|
||||
/area/hilbertshotel,
|
||||
/area/hilbertshotelstorage,
|
||||
/area/wizard_station
|
||||
)
|
||||
for (var/type in SPECIALS)
|
||||
|
||||
@@ -0,0 +1,92 @@
|
||||
/obj/item/chromosome
|
||||
name = "blank chromosome"
|
||||
icon = 'icons/obj/chromosomes.dmi'
|
||||
icon_state = ""
|
||||
desc = "A tube holding chromosomic data."
|
||||
force = 0
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
|
||||
var/stabilizer_coeff = 1 //lower is better, affects genetic stability
|
||||
var/synchronizer_coeff = 1 //lower is better, affects chance to backfire
|
||||
var/power_coeff = 1 //higher is better, affects "strength"
|
||||
var/energy_coeff = 1 //lower is better. affects recharge time
|
||||
|
||||
var/weight = 5
|
||||
|
||||
/obj/item/chromosome/proc/can_apply(datum/mutation/human/HM)
|
||||
if(!HM || !(HM.can_chromosome == CHROMOSOME_NONE))
|
||||
return FALSE
|
||||
if((stabilizer_coeff != 1) && (HM.stabilizer_coeff != -1)) //if the chromosome is 1, we dont change anything. If the mutation is -1, we cant change it. sorry
|
||||
return TRUE
|
||||
if((synchronizer_coeff != 1) && (HM.synchronizer_coeff != -1))
|
||||
return TRUE
|
||||
if((power_coeff != 1) && (HM.power_coeff != -1))
|
||||
return TRUE
|
||||
if((energy_coeff != 1) && (HM.energy_coeff != -1))
|
||||
return TRUE
|
||||
|
||||
/obj/item/chromosome/proc/apply(datum/mutation/human/HM)
|
||||
if(HM.stabilizer_coeff != -1)
|
||||
HM.stabilizer_coeff = stabilizer_coeff
|
||||
if(HM.synchronizer_coeff != -1)
|
||||
HM.synchronizer_coeff = synchronizer_coeff
|
||||
if(HM.power_coeff != -1)
|
||||
HM.power_coeff = power_coeff
|
||||
if(HM.energy_coeff != -1)
|
||||
HM.energy_coeff = energy_coeff
|
||||
HM.can_chromosome = 2
|
||||
HM.chromosome_name = name
|
||||
HM.modify()
|
||||
qdel(src)
|
||||
|
||||
/proc/generate_chromosome()
|
||||
var/static/list/chromosomes
|
||||
if(!chromosomes)
|
||||
chromosomes = list()
|
||||
for(var/A in subtypesof(/obj/item/chromosome))
|
||||
var/obj/item/chromosome/CM = A
|
||||
if(!initial(CM.weight))
|
||||
break
|
||||
chromosomes[A] = initial(CM.weight)
|
||||
return pickweight(chromosomes)
|
||||
|
||||
|
||||
/obj/item/chromosome/stabilizer
|
||||
name = "stabilizer chromosome"
|
||||
desc = "A chromosome that adjusts to the body to reduce genetic damage by 20%."
|
||||
icon_state = "stabilizer"
|
||||
stabilizer_coeff = 0.8
|
||||
weight = 1
|
||||
|
||||
/obj/item/chromosome/synchronizer
|
||||
name = "synchronizer chromosome"
|
||||
desc = "A chromosome that gives the mind more controle over the mutation, reducing knockback and downsides by 50%."
|
||||
icon_state = "synchronizer"
|
||||
synchronizer_coeff = 0.5
|
||||
|
||||
/obj/item/chromosome/power
|
||||
name = "power chromosome"
|
||||
desc = "A power chromosome for boosting certain mutation's power by 50%."
|
||||
icon_state = "power"
|
||||
power_coeff = 1.5
|
||||
|
||||
/obj/item/chromosome/energy
|
||||
name = "energetic chromosome"
|
||||
desc = "A chromosome that reduces cooldown on action based mutations by 50%."
|
||||
icon_state = "energy"
|
||||
energy_coeff = 0.5
|
||||
|
||||
/obj/item/chromosome/reinforcer
|
||||
name = "reinforcement chromosome"
|
||||
desc = "Renders the mutation immune to mutadone."
|
||||
icon_state = "reinforcer"
|
||||
weight = 3
|
||||
|
||||
/obj/item/chromosome/reinforcer/can_apply(datum/mutation/human/HM)
|
||||
if(!HM || !(HM.can_chromosome == CHROMOSOME_NONE))
|
||||
return FALSE
|
||||
return !HM.mutadone_proof
|
||||
|
||||
/obj/item/chromosome/reinforcer/apply(datum/mutation/human/HM)
|
||||
HM.mutadone_proof = TRUE
|
||||
..()
|
||||
@@ -65,7 +65,7 @@
|
||||
build_path = /obj/machinery/dna_scannernew
|
||||
req_components = list(
|
||||
/obj/item/stock_parts/scanning_module = 1,
|
||||
/obj/item/stock_parts/manipulator = 1,
|
||||
/obj/item/stock_parts/matter_bin = 1,
|
||||
/obj/item/stock_parts/micro_laser = 1,
|
||||
/obj/item/stack/sheet/glass = 1,
|
||||
/obj/item/stack/cable_coil = 2)
|
||||
|
||||
@@ -6,6 +6,8 @@ T-RAY
|
||||
HEALTH ANALYZER
|
||||
GAS ANALYZER
|
||||
SLIME SCANNER
|
||||
NANITE SCANNER
|
||||
GENE SCANNER
|
||||
|
||||
*/
|
||||
/obj/item/t_scanner
|
||||
@@ -291,7 +293,8 @@ SLIME SCANNER
|
||||
var/ldamage = H.return_liver_damage()
|
||||
if(ldamage > 10)
|
||||
msg += "\t<span class='alert'>[ldamage > 45 ? "Severe" : "Minor"] liver damage detected.</span>\n"
|
||||
|
||||
if(advanced && H.has_dna())
|
||||
to_chat(user, "\t<span class='info'>Genetic Stability: [H.dna.stability]%.</span>")
|
||||
// Body part damage report
|
||||
if(iscarbon(M) && mode == 1)
|
||||
var/mob/living/carbon/C = M
|
||||
@@ -757,3 +760,62 @@ SLIME SCANNER
|
||||
var/response = SEND_SIGNAL(M, COMSIG_NANITE_SCAN, user, TRUE)
|
||||
if(!response)
|
||||
to_chat(user, "<span class='info'>No nanites detected in the subject.</span>")
|
||||
|
||||
/obj/item/sequence_scanner
|
||||
name = "genetic sequence scanner"
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "gene"
|
||||
item_state = "healthanalyzer"
|
||||
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
|
||||
desc = "A hand-held scanner able to swiftly scan someone for potential mutations. Hold near a DNA console to update from their database."
|
||||
flags_1 = CONDUCT_1
|
||||
item_flags = NOBLUDGEON
|
||||
slot_flags = ITEM_SLOT_BELT
|
||||
throwforce = 3
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
throw_speed = 3
|
||||
throw_range = 7
|
||||
materials = list(MAT_METAL=200)
|
||||
var/list/discovered = list() //hit a dna console to update the scanners database
|
||||
|
||||
/obj/item/sequence_scanner/attack(mob/living/M, mob/living/carbon/human/user)
|
||||
user.visible_message("<span class='notice'>[user] has analyzed [M]'s genetic sequence.</span>")
|
||||
|
||||
add_fingerprint(user)
|
||||
|
||||
gene_scan(M, user, src)
|
||||
|
||||
/obj/item/sequence_scanner/afterattack(obj/O, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!istype(O) || !proximity)
|
||||
return
|
||||
|
||||
if(istype(O, /obj/machinery/computer/scan_consolenew))
|
||||
var/obj/machinery/computer/scan_consolenew/C = O
|
||||
if(C.stored_research)
|
||||
to_chat(user, "<span class='notice'>[name] database updated.</span>")
|
||||
discovered = C.stored_research.discovered_mutations
|
||||
else
|
||||
to_chat(user,"<span class='warning'>No database to update from.</span>")
|
||||
|
||||
/proc/gene_scan(mob/living/carbon/C, mob/living/user, obj/item/sequence_scanner/G)
|
||||
if(!iscarbon(C) || !C.has_dna())
|
||||
return
|
||||
to_chat(user, "<span class='notice'>[C.name]'s potential mutations.")
|
||||
for(var/A in C.dna.mutation_index)
|
||||
var/datum/mutation/human/HM = GET_INITIALIZED_MUTATION(A)
|
||||
var/mut_name
|
||||
if(G && (A in G.discovered))
|
||||
mut_name = "[HM.name] ([HM.alias])"
|
||||
else
|
||||
mut_name = HM.alias
|
||||
var/temp = GET_GENE_STRING(HM.type, C.dna)
|
||||
var/display
|
||||
for(var/i in 0 to length(temp) / DNA_MUTATION_BLOCKS-1)
|
||||
if(i)
|
||||
display += "-"
|
||||
display += copytext(temp, 1 + i*DNA_MUTATION_BLOCKS, DNA_MUTATION_BLOCKS*(1+i) + 1)
|
||||
|
||||
|
||||
to_chat(user, "<span class='boldnotice'>- [mut_name] > [display]</span>")
|
||||
@@ -14,33 +14,25 @@
|
||||
var/list/add_mutations = list()
|
||||
var/list/remove_mutations = list()
|
||||
|
||||
var/list/add_mutations_static = list()
|
||||
var/list/remove_mutations_static = list()
|
||||
|
||||
var/used = 0
|
||||
|
||||
/obj/item/dnainjector/attack_paw(mob/user)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/item/dnainjector/proc/prepare()
|
||||
for(var/mut_key in add_mutations_static)
|
||||
add_mutations.Add(GLOB.mutations_list[mut_key])
|
||||
for(var/mut_key in remove_mutations_static)
|
||||
remove_mutations.Add(GLOB.mutations_list[mut_key])
|
||||
|
||||
/obj/item/dnainjector/proc/inject(mob/living/carbon/M, mob/user)
|
||||
prepare()
|
||||
|
||||
if(M.has_dna() && !HAS_TRAIT(M, TRAIT_RADIMMUNE) && !HAS_TRAIT(M, TRAIT_NOCLONE))
|
||||
M.radiation += rand(20/(damage_coeff ** 2),50/(damage_coeff ** 2))
|
||||
var/log_msg = "[key_name(user)] injected [key_name(M)] with the [name]"
|
||||
for(var/datum/mutation/human/HM in remove_mutations)
|
||||
HM.force_lose(M)
|
||||
for(var/datum/mutation/human/HM in add_mutations)
|
||||
if(HM.name == RACEMUT)
|
||||
for(var/HM in remove_mutations)
|
||||
M.dna.remove_mutation(HM)
|
||||
for(var/HM in add_mutations)
|
||||
if(HM == RACEMUT)
|
||||
message_admins("[ADMIN_LOOKUPFLW(user)] injected [key_name_admin(M)] with the [name] <span class='danger'>(MONKEY)</span>")
|
||||
log_msg += " (MONKEY)"
|
||||
HM.force_give(M)
|
||||
if(M.dna.mutation_in_sequence(HM))
|
||||
M.dna.activate_mutation(HM)
|
||||
else
|
||||
M.dna.add_mutation(HM, MUT_EXTRA)
|
||||
if(fields)
|
||||
if(fields["name"] && fields["UE"] && fields["blood_type"])
|
||||
M.real_name = fields["name"]
|
||||
@@ -90,123 +82,123 @@
|
||||
/obj/item/dnainjector/antihulk
|
||||
name = "\improper DNA injector (Anti-Hulk)"
|
||||
desc = "Cures green skin."
|
||||
remove_mutations_static = list(HULK)
|
||||
remove_mutations = list(HULK)
|
||||
|
||||
/obj/item/dnainjector/hulkmut
|
||||
name = "\improper DNA injector (Hulk)"
|
||||
desc = "This will make you big and strong, but give you a bad skin condition."
|
||||
add_mutations_static = list(HULK)
|
||||
add_mutations = list(HULK)
|
||||
|
||||
/obj/item/dnainjector/xraymut
|
||||
name = "\improper DNA injector (X-ray)"
|
||||
desc = "Finally you can see what the Captain does."
|
||||
add_mutations_static = list(XRAY)
|
||||
add_mutations = list(XRAY)
|
||||
|
||||
/obj/item/dnainjector/antixray
|
||||
name = "\improper DNA injector (Anti-X-ray)"
|
||||
desc = "It will make you see harder."
|
||||
remove_mutations_static = list(XRAY)
|
||||
remove_mutations = list(XRAY)
|
||||
|
||||
/////////////////////////////////////
|
||||
/obj/item/dnainjector/antiglasses
|
||||
name = "\improper DNA injector (Anti-Glasses)"
|
||||
desc = "Toss away those glasses!"
|
||||
remove_mutations_static = list(BADSIGHT)
|
||||
remove_mutations = list(BADSIGHT)
|
||||
|
||||
/obj/item/dnainjector/glassesmut
|
||||
name = "\improper DNA injector (Glasses)"
|
||||
desc = "Will make you need dorkish glasses."
|
||||
add_mutations_static = list(BADSIGHT)
|
||||
add_mutations = list(BADSIGHT)
|
||||
|
||||
/obj/item/dnainjector/epimut
|
||||
name = "\improper DNA injector (Epi.)"
|
||||
desc = "Shake shake shake the room!"
|
||||
add_mutations_static = list(EPILEPSY)
|
||||
add_mutations = list(EPILEPSY)
|
||||
|
||||
/obj/item/dnainjector/antiepi
|
||||
name = "\improper DNA injector (Anti-Epi.)"
|
||||
desc = "Will fix you up from shaking the room."
|
||||
remove_mutations_static = list(EPILEPSY)
|
||||
remove_mutations = list(EPILEPSY)
|
||||
////////////////////////////////////
|
||||
/obj/item/dnainjector/anticough
|
||||
name = "\improper DNA injector (Anti-Cough)"
|
||||
desc = "Will stop that awful noise."
|
||||
remove_mutations_static = list(COUGH)
|
||||
remove_mutations = list(COUGH)
|
||||
|
||||
/obj/item/dnainjector/coughmut
|
||||
name = "\improper DNA injector (Cough)"
|
||||
desc = "Will bring forth a sound of horror from your throat."
|
||||
add_mutations_static = list(COUGH)
|
||||
add_mutations = list(COUGH)
|
||||
|
||||
/obj/item/dnainjector/antidwarf
|
||||
name = "\improper DNA injector (Anti-Dwarfism)"
|
||||
desc = "Helps you grow big and strong."
|
||||
remove_mutations_static = list(DWARFISM)
|
||||
remove_mutations = list(DWARFISM)
|
||||
|
||||
/obj/item/dnainjector/dwarf
|
||||
name = "\improper DNA injector (Dwarfism)"
|
||||
desc = "It's a small world after all."
|
||||
add_mutations_static = list(DWARFISM)
|
||||
add_mutations = list(DWARFISM)
|
||||
|
||||
/obj/item/dnainjector/clumsymut
|
||||
name = "\improper DNA injector (Clumsy)"
|
||||
desc = "Makes clown minions."
|
||||
add_mutations_static = list(CLOWNMUT)
|
||||
add_mutations = list(CLOWNMUT)
|
||||
|
||||
/obj/item/dnainjector/anticlumsy
|
||||
name = "\improper DNA injector (Anti-Clumsy)"
|
||||
desc = "Apply this for Security Clown."
|
||||
remove_mutations_static = list(CLOWNMUT)
|
||||
remove_mutations = list(CLOWNMUT)
|
||||
|
||||
/obj/item/dnainjector/antitour
|
||||
name = "\improper DNA injector (Anti-Tour.)"
|
||||
desc = "Will cure Tourette's."
|
||||
remove_mutations_static = list(TOURETTES)
|
||||
remove_mutations = list(TOURETTES)
|
||||
|
||||
/obj/item/dnainjector/tourmut
|
||||
name = "\improper DNA injector (Tour.)"
|
||||
desc = "Gives you a nasty case of Tourette's."
|
||||
add_mutations_static = list(TOURETTES)
|
||||
add_mutations = list(TOURETTES)
|
||||
|
||||
/obj/item/dnainjector/stuttmut
|
||||
name = "\improper DNA injector (Stutt.)"
|
||||
desc = "Makes you s-s-stuttterrr."
|
||||
add_mutations_static = list(NERVOUS)
|
||||
add_mutations = list(NERVOUS)
|
||||
|
||||
/obj/item/dnainjector/antistutt
|
||||
name = "\improper DNA injector (Anti-Stutt.)"
|
||||
desc = "Fixes that speaking impairment."
|
||||
remove_mutations_static = list(NERVOUS)
|
||||
remove_mutations = list(NERVOUS)
|
||||
|
||||
/obj/item/dnainjector/antifire
|
||||
name = "\improper DNA injector (Anti-Fire)"
|
||||
desc = "Cures fire."
|
||||
remove_mutations_static = list(COLDRES)
|
||||
remove_mutations = list(SPACEMUT)
|
||||
|
||||
/obj/item/dnainjector/firemut
|
||||
name = "\improper DNA injector (Fire)"
|
||||
desc = "Gives you fire."
|
||||
add_mutations_static = list(COLDRES)
|
||||
add_mutations = list(SPACEMUT)
|
||||
|
||||
/obj/item/dnainjector/blindmut
|
||||
name = "\improper DNA injector (Blind)"
|
||||
desc = "Makes you not see anything."
|
||||
add_mutations_static = list(BLINDMUT)
|
||||
add_mutations = list(BLINDMUT)
|
||||
|
||||
/obj/item/dnainjector/antiblind
|
||||
name = "\improper DNA injector (Anti-Blind)"
|
||||
desc = "IT'S A MIRACLE!!!"
|
||||
remove_mutations_static = list(BLINDMUT)
|
||||
remove_mutations = list(BLINDMUT)
|
||||
|
||||
/obj/item/dnainjector/antitele
|
||||
name = "\improper DNA injector (Anti-Tele.)"
|
||||
desc = "Will make you not able to control your mind."
|
||||
remove_mutations_static = list(TK)
|
||||
remove_mutations = list(TK)
|
||||
|
||||
/obj/item/dnainjector/telemut
|
||||
name = "\improper DNA injector (Tele.)"
|
||||
desc = "Super brain man!"
|
||||
add_mutations_static = list(TK)
|
||||
add_mutations = list(TK)
|
||||
|
||||
/obj/item/dnainjector/telemut/darkbundle
|
||||
name = "\improper DNA injector"
|
||||
@@ -215,100 +207,171 @@
|
||||
/obj/item/dnainjector/deafmut
|
||||
name = "\improper DNA injector (Deaf)"
|
||||
desc = "Sorry, what did you say?"
|
||||
add_mutations_static = list(DEAFMUT)
|
||||
add_mutations = list(DEAFMUT)
|
||||
|
||||
/obj/item/dnainjector/antideaf
|
||||
name = "\improper DNA injector (Anti-Deaf)"
|
||||
desc = "Will make you hear once more."
|
||||
remove_mutations_static = list(DEAFMUT)
|
||||
remove_mutations = list(DEAFMUT)
|
||||
|
||||
/obj/item/dnainjector/h2m
|
||||
name = "\improper DNA injector (Human > Monkey)"
|
||||
desc = "Will make you a flea bag."
|
||||
add_mutations_static = list(RACEMUT)
|
||||
add_mutations = list(RACEMUT)
|
||||
|
||||
/obj/item/dnainjector/m2h
|
||||
name = "\improper DNA injector (Monkey > Human)"
|
||||
desc = "Will make you...less hairy."
|
||||
remove_mutations_static = list(RACEMUT)
|
||||
remove_mutations = list(RACEMUT)
|
||||
|
||||
/obj/item/dnainjector/antichameleon
|
||||
name = "\improper DNA injector (Anti-Chameleon)"
|
||||
remove_mutations_static = list(CHAMELEON)
|
||||
remove_mutations = list(CHAMELEON)
|
||||
|
||||
/obj/item/dnainjector/chameleonmut
|
||||
name = "\improper DNA injector (Chameleon)"
|
||||
add_mutations_static = list(CHAMELEON)
|
||||
add_mutations = list(CHAMELEON)
|
||||
|
||||
/obj/item/dnainjector/antiwacky
|
||||
name = "\improper DNA injector (Anti-Wacky)"
|
||||
remove_mutations_static = list(WACKY)
|
||||
remove_mutations = list(WACKY)
|
||||
|
||||
/obj/item/dnainjector/wackymut
|
||||
name = "\improper DNA injector (Wacky)"
|
||||
add_mutations_static = list(WACKY)
|
||||
add_mutations = list(WACKY)
|
||||
|
||||
/obj/item/dnainjector/antimute
|
||||
name = "\improper DNA injector (Anti-Mute)"
|
||||
remove_mutations_static = list(MUT_MUTE)
|
||||
remove_mutations = list(MUT_MUTE)
|
||||
|
||||
/obj/item/dnainjector/mutemut
|
||||
name = "\improper DNA injector (Mute)"
|
||||
add_mutations_static = list(MUT_MUTE)
|
||||
add_mutations = list(MUT_MUTE)
|
||||
|
||||
/obj/item/dnainjector/antismile
|
||||
name = "\improper DNA injector (Anti-Smile)"
|
||||
remove_mutations_static = list(SMILE)
|
||||
remove_mutations = list(SMILE)
|
||||
|
||||
/obj/item/dnainjector/smilemut
|
||||
name = "\improper DNA injector (Smile)"
|
||||
add_mutations_static = list(SMILE)
|
||||
add_mutations = list(SMILE)
|
||||
|
||||
/obj/item/dnainjector/unintelligiblemut
|
||||
name = "\improper DNA injector (Unintelligible)"
|
||||
add_mutations_static = list(UNINTELLIGIBLE)
|
||||
add_mutations = list(UNINTELLIGIBLE)
|
||||
|
||||
/obj/item/dnainjector/antiunintelligible
|
||||
name = "\improper DNA injector (Anti-Unintelligible)"
|
||||
remove_mutations_static = list(UNINTELLIGIBLE)
|
||||
remove_mutations = list(UNINTELLIGIBLE)
|
||||
|
||||
/obj/item/dnainjector/swedishmut
|
||||
name = "\improper DNA injector (Swedish)"
|
||||
add_mutations_static = list(SWEDISH)
|
||||
add_mutations = list(SWEDISH)
|
||||
|
||||
/obj/item/dnainjector/antiswedish
|
||||
name = "\improper DNA injector (Anti-Swedish)"
|
||||
remove_mutations_static = list(SWEDISH)
|
||||
remove_mutations = list(SWEDISH)
|
||||
|
||||
/obj/item/dnainjector/chavmut
|
||||
name = "\improper DNA injector (Chav)"
|
||||
add_mutations_static = list(CHAV)
|
||||
add_mutations = list(CHAV)
|
||||
|
||||
/obj/item/dnainjector/antichav
|
||||
name = "\improper DNA injector (Anti-Chav)"
|
||||
remove_mutations_static = list(CHAV)
|
||||
remove_mutations = list(CHAV)
|
||||
|
||||
/obj/item/dnainjector/elvismut
|
||||
name = "\improper DNA injector (Elvis)"
|
||||
add_mutations_static = list(ELVIS)
|
||||
add_mutations = list(ELVIS)
|
||||
|
||||
/obj/item/dnainjector/antielvis
|
||||
name = "\improper DNA injector (Anti-Elvis)"
|
||||
remove_mutations_static = list(ELVIS)
|
||||
remove_mutations = list(ELVIS)
|
||||
|
||||
/obj/item/dnainjector/lasereyesmut
|
||||
name = "\improper DNA injector (Laser Eyes)"
|
||||
add_mutations_static = list(LASEREYES)
|
||||
add_mutations = list(LASEREYES)
|
||||
|
||||
/obj/item/dnainjector/antilasereyes
|
||||
name = "\improper DNA injector (Anti-Laser Eyes)"
|
||||
remove_mutations_static = list(LASEREYES)
|
||||
remove_mutations = list(LASEREYES)
|
||||
|
||||
/obj/item/dnainjector/thermalmut
|
||||
name = "\improper DNA injector (Thermal Vision)"
|
||||
add_mutations = list(THERMAL)
|
||||
|
||||
/obj/item/dnainjector/antithermal
|
||||
name = "\improper DNA injector (Anti-Thermal Vision)"
|
||||
remove_mutations = list(THERMAL)
|
||||
|
||||
/obj/item/dnainjector/telepathymut
|
||||
name = "\improper DNA injector (Telepathy)"
|
||||
add_mutations = list(TELEPATHY)
|
||||
|
||||
/obj/item/dnainjector/antitelepathy
|
||||
name = "\improper DNA injector (Anti-Telepathy)"
|
||||
remove_mutations = list(TELEPATHY)
|
||||
|
||||
/obj/item/dnainjector/voidmut
|
||||
name = "\improper DNA injector (Void Magnet)"
|
||||
add_mutations = list(VOID)
|
||||
|
||||
/obj/item/dnainjector/antivoid
|
||||
name = "\improper DNA injector (Anti-Void Magnet)"
|
||||
remove_mutations = list(VOID)
|
||||
|
||||
/obj/item/dnainjector/firebreathmut
|
||||
name = "\improper DNA injector (Firebreath)"
|
||||
add_mutations = list(FIREBREATH)
|
||||
|
||||
/obj/item/dnainjector/antifirebreath
|
||||
name = "\improper DNA injector (Anti-Firebreath)"
|
||||
remove_mutations = list(FIREBREATH)
|
||||
|
||||
/obj/item/dnainjector/insulatedmut
|
||||
name = "\improper DNA injector (Insulated)"
|
||||
add_mutations = list(INSULATED)
|
||||
|
||||
/obj/item/dnainjector/antiinsulated
|
||||
name = "\improper DNA injector (Anti-Insulated)"
|
||||
remove_mutations = list(INSULATED)
|
||||
|
||||
/obj/item/dnainjector/shocktouchmut
|
||||
name = "\improper DNA injector (Shock Touch)"
|
||||
add_mutations = list(SHOCKTOUCH)
|
||||
|
||||
/obj/item/dnainjector/antishocktouch
|
||||
name = "\improper DNA injector (Anti-Shock Touch)"
|
||||
remove_mutations = list(SHOCKTOUCH)
|
||||
|
||||
/obj/item/dnainjector/antenna
|
||||
name = "\improper DNA injector (Antenna)"
|
||||
add_mutations = list(ANTENNA)
|
||||
|
||||
/obj/item/dnainjector/antiantenna
|
||||
name = "\improper DNA injector (Anti-Antenna)"
|
||||
remove_mutations = list(ANTENNA)
|
||||
|
||||
/obj/item/dnainjector/paranoia
|
||||
name = "\improper DNA injector (Paranoia)"
|
||||
add_mutations = list(PARANOIA)
|
||||
|
||||
/obj/item/dnainjector/antiparanoia
|
||||
name = "\improper DNA injector (Anti-Paranoia)"
|
||||
remove_mutations = list(PARANOIA)
|
||||
|
||||
/obj/item/dnainjector/mindread
|
||||
name = "\improper DNA injector (Mindread)"
|
||||
add_mutations = list(MINDREAD)
|
||||
|
||||
/obj/item/dnainjector/antimindread
|
||||
name = "\improper DNA injector (Anti-Mindread)"
|
||||
remove_mutations = list(MINDREAD)
|
||||
|
||||
/obj/item/dnainjector/timed
|
||||
var/duration = 600
|
||||
|
||||
/obj/item/dnainjector/timed/inject(mob/living/carbon/M, mob/user)
|
||||
prepare()
|
||||
if(M.stat == DEAD) //prevents dead people from having their DNA changed
|
||||
to_chat(user, "<span class='notice'>You can't modify [M]'s DNA while [M.p_theyre()] dead.</span>")
|
||||
return FALSE
|
||||
@@ -317,23 +380,22 @@
|
||||
M.radiation += rand(20/(damage_coeff ** 2),50/(damage_coeff ** 2))
|
||||
var/log_msg = "[key_name(user)] injected [key_name(M)] with the [name]"
|
||||
var/endtime = world.time+duration
|
||||
for(var/datum/mutation/human/HM in remove_mutations)
|
||||
if(HM.name == RACEMUT)
|
||||
for(var/mutation in remove_mutations)
|
||||
if(mutation == RACEMUT)
|
||||
if(ishuman(M))
|
||||
continue
|
||||
M = HM.force_lose(M)
|
||||
M = M.dna.remove_mutation(mutation)
|
||||
else
|
||||
HM.force_lose(M)
|
||||
for(var/datum/mutation/human/HM in add_mutations)
|
||||
if((HM in M.dna.mutations) && !(M.dna.temporary_mutations[HM.name]))
|
||||
M.dna.remove_mutation(mutation)
|
||||
for(var/mutation in add_mutations)
|
||||
if(M.dna.get_mutation(mutation))
|
||||
continue //Skip permanent mutations we already have.
|
||||
if(HM.name == RACEMUT && ishuman(M))
|
||||
if(mutation == RACEMUT && ishuman(M))
|
||||
message_admins("[ADMIN_LOOKUPFLW(user)] injected [key_name_admin(M)] with the [name] <span class='danger'>(MONKEY)</span>")
|
||||
log_msg += " (MONKEY)"
|
||||
M = HM.force_give(M)
|
||||
M = M.dna.add_mutation(mutation, MUT_OTHER, endtime)
|
||||
else
|
||||
HM.force_give(M)
|
||||
M.dna.temporary_mutations[HM.name] = endtime
|
||||
M.dna.add_mutation(mutation, MUT_OTHER, endtime)
|
||||
if(fields)
|
||||
if(fields["name"] && fields["UE"] && fields["blood_type"])
|
||||
if(!M.dna.previous["name"])
|
||||
@@ -361,9 +423,41 @@
|
||||
/obj/item/dnainjector/timed/hulk
|
||||
name = "\improper DNA injector (Hulk)"
|
||||
desc = "This will make you big and strong, but give you a bad skin condition."
|
||||
add_mutations_static = list(HULK)
|
||||
add_mutations = list(HULK)
|
||||
|
||||
/obj/item/dnainjector/timed/h2m
|
||||
name = "\improper DNA injector (Human > Monkey)"
|
||||
desc = "Will make you a flea bag."
|
||||
add_mutations_static = list(RACEMUT)
|
||||
add_mutations = list(RACEMUT)
|
||||
|
||||
/obj/item/dnainjector/activator
|
||||
name = "\improper DNA activator"
|
||||
desc = "Activates the current mutation on injection, if the subject has it."
|
||||
var/doitanyway = FALSE
|
||||
var/research = FALSE //Set to true to get expended and filled injectors for chromosomes
|
||||
var/filled = FALSE
|
||||
|
||||
/obj/item/dnainjector/activator/inject(mob/living/carbon/M, mob/user)
|
||||
if(M.has_dna() && !HAS_TRAIT(M, TRAIT_RADIMMUNE) && !HAS_TRAIT(M,TRAIT_NOCLONE))
|
||||
M.radiation += rand(20/(damage_coeff ** 2),50/(damage_coeff ** 2))
|
||||
var/log_msg = "[key_name(user)] injected [key_name(M)] with the [name]"
|
||||
for(var/mutation in add_mutations)
|
||||
var/datum/mutation/human/HM = mutation
|
||||
if(istype(HM, /datum/mutation/human))
|
||||
mutation = HM.type
|
||||
if(!M.dna.activate_mutation(HM))
|
||||
if(!doitanyway)
|
||||
log_msg += "(FAILED)"
|
||||
else
|
||||
M.dna.add_mutation(HM, MUT_EXTRA)
|
||||
name = "expended [name]"
|
||||
else if(research && M.client)
|
||||
filled = TRUE
|
||||
name = "filled [name]"
|
||||
else
|
||||
name = "expended [name]"
|
||||
log_msg += "([mutation])"
|
||||
log_attack("[log_msg] [loc_name(user)]")
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@ GLOBAL_LIST_INIT(glass_recipes, list ( \
|
||||
merge_type = /obj/item/stack/sheet/glass
|
||||
grind_results = list("silicon" = 20)
|
||||
point_value = 1
|
||||
tableVariant = /obj/structure/table/glass
|
||||
|
||||
/obj/item/stack/sheet/glass/suicide_act(mob/living/carbon/user)
|
||||
user.visible_message("<span class='suicide'>[user] begins to slice [user.p_their()] neck with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
|
||||
@@ -155,6 +155,7 @@ GLOBAL_LIST_INIT(leather_recipes, list ( \
|
||||
new/datum/stack_recipe("wallet", /obj/item/storage/wallet, 1), \
|
||||
new/datum/stack_recipe("muzzle", /obj/item/clothing/mask/muzzle, 2), \
|
||||
new/datum/stack_recipe("botany gloves", /obj/item/clothing/gloves/botanic_leather, 3), \
|
||||
new/datum/stack_recipe("botany belt", /obj/item/storage/belt/botany, 4), \
|
||||
new/datum/stack_recipe("toolbelt", /obj/item/storage/belt/utility, 4), \
|
||||
new/datum/stack_recipe("leather satchel", /obj/item/storage/backpack/satchel/leather, 5), \
|
||||
new/datum/stack_recipe("bandolier", /obj/item/storage/belt/bandolier, 5), \
|
||||
|
||||
@@ -232,6 +232,7 @@ GLOBAL_LIST_INIT(gold_recipes, list ( \
|
||||
grind_results = list("silver" = 20)
|
||||
point_value = 20
|
||||
merge_type = /obj/item/stack/sheet/mineral/silver
|
||||
tableVariant = /obj/structure/table/optable
|
||||
|
||||
GLOBAL_LIST_INIT(silver_recipes, list ( \
|
||||
new/datum/stack_recipe("silver door", /obj/structure/mineral_door/silver, 10, one_per_turf = 1, on_floor = 1), \
|
||||
|
||||
@@ -107,6 +107,7 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \
|
||||
merge_type = /obj/item/stack/sheet/metal
|
||||
grind_results = list("iron" = 20)
|
||||
point_value = 2
|
||||
tableVariant = /obj/structure/table
|
||||
|
||||
/obj/item/stack/sheet/metal/ratvar_act()
|
||||
new /obj/item/stack/tile/brass(loc, amount)
|
||||
@@ -168,6 +169,7 @@ GLOBAL_LIST_INIT(plasteel_recipes, list ( \
|
||||
merge_type = /obj/item/stack/sheet/plasteel
|
||||
grind_results = list("iron" = 20, "plasma" = 20)
|
||||
point_value = 23
|
||||
tableVariant = /obj/structure/table/reinforced
|
||||
|
||||
/obj/item/stack/sheet/plasteel/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = GLOB.plasteel_recipes
|
||||
@@ -206,6 +208,7 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \
|
||||
new/datum/stack_recipe("apiary", /obj/structure/beebox, 40, time = 50),\
|
||||
new/datum/stack_recipe("tiki mask", /obj/item/clothing/mask/gas/tiki_mask, 2), \
|
||||
new/datum/stack_recipe("honey frame", /obj/item/honey_frame, 5, time = 10),\
|
||||
new/datum/stack_recipe("cross", /obj/structure/kitchenspike/cross, 10, time = 10),\
|
||||
new/datum/stack_recipe("ore box", /obj/structure/ore_box, 4, time = 50, one_per_turf = TRUE, on_floor = TRUE),\
|
||||
new/datum/stack_recipe("wooden crate", /obj/structure/closet/crate/wooden, 6, time = 50, one_per_turf = TRUE, on_floor = TRUE),\
|
||||
new/datum/stack_recipe("baseball bat", /obj/item/melee/baseball_bat, 5, time = 15),\
|
||||
@@ -474,6 +477,7 @@ GLOBAL_LIST_INIT(brass_recipes, list ( \
|
||||
novariants = FALSE
|
||||
grind_results = list("iron" = 5, "teslium" = 15, "holyoil" = 1)
|
||||
merge_type = /obj/item/stack/tile/brass
|
||||
tableVariant = /obj/structure/table/reinforced/brass
|
||||
|
||||
/obj/item/stack/tile/brass/narsie_act()
|
||||
new /obj/item/stack/sheet/runed_metal(loc, amount)
|
||||
@@ -526,6 +530,7 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \
|
||||
novariants = FALSE
|
||||
grind_results = list("iron" = 5, "copper" = 3) //we have no "tin" reagent so this is the closest thing
|
||||
merge_type = /obj/item/stack/tile/bronze
|
||||
tableVariant = /obj/structure/table/bronze
|
||||
|
||||
/obj/item/stack/tile/bronze/attack_self(mob/living/user)
|
||||
if(is_servant_of_ratvar(user)) //still lets them build with it, just gives a message
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
var/full_w_class = WEIGHT_CLASS_NORMAL //The weight class the stack should have at amount > 2/3rds max_amount
|
||||
var/novariants = TRUE //Determines whether the item should update it's sprites based on amount.
|
||||
//NOTE: When adding grind_results, the amounts should be for an INDIVIDUAL ITEM - these amounts will be multiplied by the stack size in on_grind()
|
||||
var/obj/structure/table/tableVariant // we tables now (stores table variant to be built from this stack)
|
||||
|
||||
/obj/item/stack/on_grind()
|
||||
for(var/i in 1 to grind_results.len) //This should only call if it's ground, so no need to check if grind_results exists
|
||||
|
||||
@@ -99,34 +99,118 @@
|
||||
icon_state = "tile-carpet"
|
||||
turf_type = /turf/open/floor/carpet
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/obj/item/stack/tile/carpet/fifty
|
||||
amount = 50
|
||||
tableVariant = /obj/structure/table/wood/fancy
|
||||
|
||||
/obj/item/stack/tile/carpet/black
|
||||
name = "black carpet"
|
||||
icon_state = "tile-carpet-black"
|
||||
turf_type = /turf/open/floor/carpet/black
|
||||
tableVariant = /obj/structure/table/wood/fancy/black
|
||||
|
||||
/obj/item/stack/tile/carpet/blackred
|
||||
name = "red carpet"
|
||||
icon_state = "tile-carpet-blackred"
|
||||
turf_type = /turf/open/floor/carpet/blackred
|
||||
tableVariant = /obj/structure/table/wood/fancy/blackred
|
||||
|
||||
/obj/item/stack/tile/carpet/monochrome
|
||||
name = "monochrome carpet"
|
||||
icon_state = "tile-carpet-monochrome"
|
||||
turf_type = /turf/open/floor/carpet/monochrome
|
||||
tableVariant = /obj/structure/table/wood/fancy/monochrome
|
||||
|
||||
/obj/item/stack/tile/carpet/blue
|
||||
name = "blue carpet"
|
||||
icon_state = "tile-carpet-blue"
|
||||
item_state = "tile-carpet-blue"
|
||||
turf_type = /turf/open/floor/carpet/blue
|
||||
tableVariant = /obj/structure/table/wood/fancy/blue
|
||||
|
||||
/obj/item/stack/tile/carpet/cyan
|
||||
name = "cyan carpet"
|
||||
icon_state = "tile-carpet-cyan"
|
||||
item_state = "tile-carpet-cyan"
|
||||
turf_type = /turf/open/floor/carpet/cyan
|
||||
tableVariant = /obj/structure/table/wood/fancy/cyan
|
||||
|
||||
/obj/item/stack/tile/carpet/green
|
||||
name = "green carpet"
|
||||
icon_state = "tile-carpet-green"
|
||||
item_state = "tile-carpet-green"
|
||||
turf_type = /turf/open/floor/carpet/green
|
||||
tableVariant = /obj/structure/table/wood/fancy/green
|
||||
|
||||
/obj/item/stack/tile/carpet/orange
|
||||
name = "orange carpet"
|
||||
icon_state = "tile-carpet-orange"
|
||||
item_state = "tile-carpet-orange"
|
||||
turf_type = /turf/open/floor/carpet/orange
|
||||
tableVariant = /obj/structure/table/wood/fancy/orange
|
||||
|
||||
/obj/item/stack/tile/carpet/purple
|
||||
name = "purple carpet"
|
||||
icon_state = "tile-carpet-purple"
|
||||
item_state = "tile-carpet-purple"
|
||||
turf_type = /turf/open/floor/carpet/purple
|
||||
tableVariant = /obj/structure/table/wood/fancy/purple
|
||||
|
||||
/obj/item/stack/tile/carpet/red
|
||||
name = "red carpet"
|
||||
icon_state = "tile-carpet-red"
|
||||
item_state = "tile-carpet-red"
|
||||
turf_type = /turf/open/floor/carpet/red
|
||||
tableVariant = /obj/structure/table/wood/fancy/red
|
||||
|
||||
/obj/item/stack/tile/carpet/royalblack
|
||||
name = "royal black carpet"
|
||||
icon_state = "tile-carpet-royalblack"
|
||||
item_state = "tile-carpet-royalblack"
|
||||
turf_type = /turf/open/floor/carpet/royalblack
|
||||
tableVariant = /obj/structure/table/wood/fancy/royalblack
|
||||
|
||||
/obj/item/stack/tile/carpet/royalblue
|
||||
name = "royal blue carpet"
|
||||
icon_state = "tile-carpet-royalblue"
|
||||
item_state = "tile-carpet-royalblue"
|
||||
turf_type = /turf/open/floor/carpet/royalblue
|
||||
tableVariant = /obj/structure/table/wood/fancy/royalblue
|
||||
|
||||
/obj/item/stack/tile/carpet/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/tile/carpet/black/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/tile/carpet/blackred
|
||||
name = "red carpet"
|
||||
icon_state = "tile-carpet-blackred"
|
||||
turf_type = /turf/open/floor/carpet/blackred
|
||||
|
||||
/obj/item/stack/tile/carpet/blackred/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/tile/carpet/monochrome
|
||||
name = "monochrome carpet"
|
||||
icon_state = "tile-carpet-monochrome"
|
||||
turf_type = /turf/open/floor/carpet/monochrome
|
||||
|
||||
/obj/item/stack/tile/carpet/monochrome/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/tile/carpet/blue/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/tile/carpet/cyan/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/tile/carpet/green/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/tile/carpet/orange/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/tile/carpet/purple/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/tile/carpet/red/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/tile/carpet/royalblack/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/tile/carpet/royalblue/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/tile/fakespace
|
||||
name = "astral carpet"
|
||||
singular_name = "astral carpet"
|
||||
|
||||
@@ -397,3 +397,24 @@
|
||||
GET_COMPONENT(STR, /datum/component/storage)
|
||||
STR.max_combined_w_class = INFINITY
|
||||
STR.max_items = 100
|
||||
|
||||
/*
|
||||
* Construction bag (for engineering, holds stock parts and electronics)
|
||||
*/
|
||||
|
||||
/obj/item/storage/bag/construction
|
||||
name = "construction bag"
|
||||
icon = 'icons/obj/tools.dmi'
|
||||
icon_state = "construction_bag"
|
||||
desc = "A bag for storing small construction components."
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/obj/item/storage/bag/construction/ComponentInitialize()
|
||||
. = ..()
|
||||
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
|
||||
STR.max_combined_w_class = 100
|
||||
STR.max_items = 50
|
||||
STR.max_w_class = WEIGHT_CLASS_SMALL
|
||||
STR.insert_preposition = "in"
|
||||
STR.can_hold = typecacheof(list(/obj/item/stack/ore/bluespace_crystal, /obj/item/assembly, /obj/item/stock_parts, /obj/item/reagent_containers/glass/beaker, /obj/item/stack/cable_coil, /obj/item/circuitboard, /obj/item/electronics))
|
||||
@@ -166,8 +166,6 @@
|
||||
/obj/item/clothing/glasses,
|
||||
/obj/item/wrench/medical,
|
||||
/obj/item/clothing/mask/muzzle,
|
||||
/obj/item/storage/bag/chemistry,
|
||||
/obj/item/storage/bag/bio,
|
||||
/obj/item/reagent_containers/blood,
|
||||
/obj/item/tank/internals/emergency_oxygen,
|
||||
/obj/item/gun/syringe/syndicate,
|
||||
@@ -270,7 +268,6 @@
|
||||
/obj/item/kitchen/knife,
|
||||
/obj/item/reagent_containers/hypospray,
|
||||
/obj/item/gps,
|
||||
/obj/item/storage/bag/ore,
|
||||
/obj/item/survivalcapsule,
|
||||
/obj/item/t_scanner/adv_mining_scanner,
|
||||
/obj/item/reagent_containers/pill,
|
||||
@@ -279,7 +276,6 @@
|
||||
/obj/item/reagent_containers/food/drinks,
|
||||
/obj/item/organ/regenerative_core,
|
||||
/obj/item/wormhole_jaunter,
|
||||
/obj/item/storage/bag/plants,
|
||||
/obj/item/stack/marker_beacon
|
||||
))
|
||||
|
||||
@@ -599,7 +595,7 @@
|
||||
icon_state = "bandolier-durathread"
|
||||
item_state = "bandolier-durathread"
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
|
||||
/obj/item/storage/belt/bandolier/durathread/ComponentInitialize()
|
||||
. = ..()
|
||||
GET_COMPONENT(STR, /datum/component/storage)
|
||||
@@ -776,3 +772,27 @@
|
||||
if(attack_type == PROJECTILE_ATTACK)
|
||||
final_block_chance = 0 //To thin to block bullets
|
||||
return ..()
|
||||
|
||||
/obj/item/storage/belt/botany
|
||||
name = "botany belt"
|
||||
desc = "A belt used to hold most janitorial supplies."
|
||||
icon_state = "grenadebeltold" //reusing the old grenade belt sprite, can't go wrong.
|
||||
item_state = "grenadebeltold"
|
||||
|
||||
/obj/item/storage/belt/botany/ComponentInitialize()
|
||||
. = ..()
|
||||
GET_COMPONENT(STR, /datum/component/storage)
|
||||
STR.max_items = 8
|
||||
STR.max_w_class = WEIGHT_CLASS_NORMAL
|
||||
STR.can_hold = typecacheof(list(
|
||||
/obj/item/reagent_containers/glass/beaker,
|
||||
/obj/item/reagent_containers/glass/bottle,
|
||||
/obj/item/reagent_containers/syringe,
|
||||
/obj/item/reagent_containers/spray,
|
||||
/obj/item/disk/plantgene,
|
||||
/obj/item/seeds,
|
||||
/obj/item/shovel/spade,
|
||||
/obj/item/cultivator,
|
||||
/obj/item/hatchet,
|
||||
/obj/item/plant_analyzer
|
||||
))
|
||||
|
||||
@@ -80,6 +80,7 @@
|
||||
new /obj/item/clothing/mask/gas(src)
|
||||
new /obj/item/clothing/glasses/meson/engine(src)
|
||||
new /obj/item/storage/box/emptysandbags(src)
|
||||
new /obj/item/storage/bag/construction(src)
|
||||
|
||||
|
||||
/obj/structure/closet/secure_closet/atmospherics
|
||||
|
||||
@@ -153,4 +153,91 @@
|
||||
new /obj/item/stack/rods(loc, 4)
|
||||
qdel(src)
|
||||
|
||||
#undef VIABLE_MOB_CHECK
|
||||
/obj/structure/kitchenspike/cross
|
||||
name = "cross"
|
||||
icon = 'icons/obj/cross.dmi'
|
||||
icon_state = "cross"
|
||||
desc = "Degenerates like you belong on one of these."
|
||||
anchored = TRUE
|
||||
bound_height = 64
|
||||
|
||||
/obj/structure/kitchenspike/cross/crowbar_act(mob/living/user, obj/item/I)
|
||||
if(has_buckled_mobs())
|
||||
to_chat(user, "<span class='notice'>You can't do that while something's on the cross!</span>")
|
||||
return FALSE
|
||||
if(I.use_tool(src, user, 20, volume=100))
|
||||
deconstruct()
|
||||
return TRUE
|
||||
|
||||
/obj/structure/kitchenspike/cross/deconstruct()
|
||||
new /obj/item/stack/sheet/mineral/wood(src.loc, 10)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/kitchenspike/cross/attack_hand(mob/user)
|
||||
if(VIABLE_MOB_CHECK(user.pulling) && user.a_intent == INTENT_GRAB && !has_buckled_mobs())
|
||||
var/mob/living/L = user.pulling
|
||||
if(do_mob(user, src, 120))
|
||||
if(has_buckled_mobs()) //to prevent spam/queing up attacks
|
||||
return
|
||||
if(L.buckled)
|
||||
return
|
||||
if(user.pulling != L)
|
||||
return
|
||||
playsound(src.loc, "sound/effects/crossed.ogg", 20, 1) // thanks hippie
|
||||
L.visible_message("<span class='danger'>[user] ties [L] to the cross!</span>", "<span class='userdanger'>[user] ties you to the cross!</span>")
|
||||
L.forceMove(drop_location())
|
||||
L.setDir(2)
|
||||
buckle_mob(L, force=1)
|
||||
L.pixel_y = 26
|
||||
L.overlays += image('icons/obj/cross.dmi', "lashing")
|
||||
to_chat(user, "<span class='danger'>You can't use that on the cross!</span>")
|
||||
else if (has_buckled_mobs())
|
||||
for(var/mob/living/L in buckled_mobs)
|
||||
user_unbuckle_mob(L, user)
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/structure/kitchenspike/cross/user_unbuckle_mob(mob/living/buckled_mob, mob/living/carbon/human/user)
|
||||
if(buckled_mob && buckled_mob.buckled == src)
|
||||
var/mob/living/M = buckled_mob
|
||||
if(M != user)
|
||||
M.visible_message(\
|
||||
"[user] tries to pull [M] free of the [src]!",\
|
||||
"<span class='notice'>[user.name] is trying to pull you off the [src], opening up fresh wounds!</span>",\
|
||||
"<span class='italics'>You hear rope being unraveled.</span>")
|
||||
if(!do_after(user, 300, target = src))
|
||||
if(M && M.buckled)
|
||||
M.visible_message(\
|
||||
"[user] fails to free [M]!",\
|
||||
"<span class='notice'>[user] fails to pull you off of the [src].</span>")
|
||||
return
|
||||
|
||||
else
|
||||
M.visible_message(\
|
||||
"<span class='warning'>[M] struggles to break free from the [src]!</span>",\
|
||||
"<span class='notice'>You struggle to break free from the [src], exacerbating your wounds! (Stay still for two minutes.)</span>",\
|
||||
"<span class='italics'>You hear violent scraping and struggling.</span>")
|
||||
M.adjustBruteLoss(20)
|
||||
if(!do_after(M, 1200, target = src))
|
||||
if(M && M.buckled)
|
||||
to_chat(M, "<span class='warning'>You fail to free yourself!</span>")
|
||||
return
|
||||
if(!M.buckled)
|
||||
return
|
||||
untie_mob(M)
|
||||
|
||||
/obj/structure/kitchenspike/cross/proc/untie_mob(mob/living/M)
|
||||
M.pixel_y = M.get_standard_pixel_y_offset()
|
||||
M.adjustBruteLoss(15)
|
||||
src.visible_message(text("<span class='danger'>[M] falls free of [src]!</span>"))
|
||||
unbuckle_mob(M,force=1)
|
||||
M.emote("collapse")
|
||||
M.overlays -= image('icons/obj/cross.dmi', "lashing")
|
||||
|
||||
/obj/structure/kitchenspike/cross/Destroy()
|
||||
if(has_buckled_mobs())
|
||||
for(var/mob/living/L in buckled_mobs)
|
||||
untie_mob(L)
|
||||
return ..()
|
||||
|
||||
#undef VIABLE_MOB_CHECK
|
||||
@@ -22,84 +22,22 @@
|
||||
var/framestackamount = 2
|
||||
|
||||
/obj/structure/table_frame/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/wrench))
|
||||
if(I.tool_behaviour == TOOL_WRENCH)
|
||||
to_chat(user, "<span class='notice'>You start disassembling [src]...</span>")
|
||||
I.play_tool_sound(src)
|
||||
if(I.use_tool(src, user, 30))
|
||||
playsound(src.loc, 'sound/items/deconstruct.ogg', 50, 1)
|
||||
playsound(src.loc, 'sound/items/deconstruct.ogg', 50, TRUE)
|
||||
deconstruct(TRUE)
|
||||
else if(istype(I, /obj/item/stack/sheet/plasteel))
|
||||
var/obj/item/stack/sheet/plasteel/P = I
|
||||
if(P.get_amount() < 1)
|
||||
to_chat(user, "<span class='warning'>You need one plasteel sheet to do this!</span>")
|
||||
return
|
||||
|
||||
var/obj/item/stack/material = I
|
||||
if (istype(I, /obj/item/stack) && material?.tableVariant)
|
||||
if(material.get_amount() < 1)
|
||||
to_chat(user, "<span class='warning'>You need one [material.name] sheet to do this!</span>")
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You start adding [P] to [src]...</span>")
|
||||
if(do_after(user, 50, target = src) && P.use(1))
|
||||
make_new_table(/obj/structure/table/reinforced)
|
||||
else if(istype(I, /obj/item/stack/sheet/metal))
|
||||
var/obj/item/stack/sheet/metal/M = I
|
||||
if(M.get_amount() < 1)
|
||||
to_chat(user, "<span class='warning'>You need one metal sheet to do this!</span>")
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You start adding [M] to [src]...</span>")
|
||||
if(do_after(user, 20, target = src) && M.use(1))
|
||||
make_new_table(/obj/structure/table)
|
||||
else if(istype(I, /obj/item/stack/sheet/glass))
|
||||
var/obj/item/stack/sheet/glass/G = I
|
||||
if(G.get_amount() < 1)
|
||||
to_chat(user, "<span class='warning'>You need one glass sheet to do this!</span>")
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You start adding [G] to [src]...</span>")
|
||||
if(do_after(user, 20, target = src) && G.use(1))
|
||||
make_new_table(/obj/structure/table/glass)
|
||||
else if(istype(I, /obj/item/stack/sheet/mineral/silver))
|
||||
var/obj/item/stack/sheet/mineral/silver/S = I
|
||||
if(S.get_amount() < 1)
|
||||
to_chat(user, "<span class='warning'>You need one silver sheet to do this!</span>")
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You start adding [S] to [src]...</span>")
|
||||
if(do_after(user, 20, target = src) && S.use(1))
|
||||
make_new_table(/obj/structure/table/optable)
|
||||
else if(istype(I, /obj/item/stack/tile/carpet/black))
|
||||
var/obj/item/stack/tile/carpet/black/C = I
|
||||
if(C.get_amount() < 1)
|
||||
to_chat(user, "<span class='warning'>You need one black carpet sheet to do this!</span>")
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You start adding [C] to [src]...</span>")
|
||||
if(do_after(user, 20, target = src) && C.use(1))
|
||||
make_new_table(/obj/structure/table/wood/fancy/black)
|
||||
else if(istype(I, /obj/item/stack/tile/carpet/blackred))
|
||||
var/obj/item/stack/tile/carpet/blackred/C = I
|
||||
if(C.get_amount() < 1)
|
||||
to_chat(user, "<span class='warning'>You need one red carpet sheet to do this!</span>")
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You start adding [C] to [src]...</span>")
|
||||
if(do_after(user, 20, target = src) && C.use(1))
|
||||
make_new_table(/obj/structure/table/wood/fancy/blackred)
|
||||
else if(istype(I, /obj/item/stack/tile/carpet/monochrome))
|
||||
var/obj/item/stack/tile/carpet/monochrome/C = I
|
||||
if(C.get_amount() < 1)
|
||||
to_chat(user, "<span class='warning'>You need one monochrome carpet sheet to do this!</span>")
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You start adding [C] to [src]...</span>")
|
||||
if(do_after(user, 20, target = src) && C.use(1))
|
||||
make_new_table(/obj/structure/table/wood/fancy/monochrome)
|
||||
else if(istype(I, /obj/item/stack/tile/carpet))
|
||||
var/obj/item/stack/tile/carpet/C = I
|
||||
if(C.get_amount() < 1)
|
||||
to_chat(user, "<span class='warning'>You need one carpet sheet to do this!</span>")
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You start adding [C] to [src]...</span>")
|
||||
if(do_after(user, 20, target = src) && C.use(1))
|
||||
make_new_table(/obj/structure/table/wood/fancy)
|
||||
else if(istype(I, /obj/item/stack/tile/bronze))
|
||||
var/obj/item/stack/tile/bronze/B = I
|
||||
if(B.get_amount() < 1)
|
||||
to_chat(user, "<span class='warning'>You need one bronze sheet to do this!</span>")
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You start adding [B] to [src]...</span>")
|
||||
if(do_after(user, 20, target = src) && B.use(1))
|
||||
make_new_table(/obj/structure/table/bronze)
|
||||
to_chat(user, "<span class='notice'>You start adding [material] to [src]...</span>")
|
||||
if(do_after(user, 20, target = src) && material.use(1))
|
||||
make_new_table(material.tableVariant)
|
||||
else
|
||||
return ..()
|
||||
|
||||
@@ -135,23 +73,21 @@
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/obj/structure/table_frame/wood/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/stack/sheet/mineral/wood))
|
||||
var/obj/item/stack/sheet/mineral/wood/W = I
|
||||
if(W.get_amount() < 1)
|
||||
to_chat(user, "<span class='warning'>You need one wood sheet to do this!</span>")
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You start adding [W] to [src]...</span>")
|
||||
if(do_after(user, 20, target = src) && W.use(1))
|
||||
make_new_table(/obj/structure/table/wood)
|
||||
return
|
||||
else if(istype(I, /obj/item/stack/tile/carpet))
|
||||
var/obj/item/stack/tile/carpet/C = I
|
||||
if(C.get_amount() < 1)
|
||||
to_chat(user, "<span class='warning'>You need one carpet sheet to do this!</span>")
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You start adding [C] to [src]...</span>")
|
||||
if(do_after(user, 20, target = src) && C.use(1))
|
||||
make_new_table(/obj/structure/table/wood/poker)
|
||||
if (istype(I, /obj/item/stack))
|
||||
var/obj/item/stack/material = I
|
||||
var/toConstruct // stores the table variant
|
||||
if(istype(I, /obj/item/stack/sheet/mineral/wood))
|
||||
toConstruct = /obj/structure/table/wood
|
||||
else if(istype(I, /obj/item/stack/tile/carpet))
|
||||
toConstruct = /obj/structure/table/wood/poker
|
||||
|
||||
if (toConstruct)
|
||||
if(material.get_amount() < 1)
|
||||
to_chat(user, "<span class='warning'>You need one [material.name] sheet to do this!</span>")
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You start adding [material] to [src]...</span>")
|
||||
if(do_after(user, 20, target = src) && material.use(1))
|
||||
make_new_table(toConstruct)
|
||||
else
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -115,6 +115,9 @@
|
||||
log_combat(user, pushed_mob, "placed")
|
||||
|
||||
/obj/structure/table/proc/tablepush(mob/living/user, mob/living/pushed_mob)
|
||||
if(HAS_TRAIT(user, TRAIT_PACIFISM))
|
||||
to_chat(user, "<span class='danger'>Throwing [pushed_mob] onto the table might hurt them!</span>")
|
||||
return
|
||||
var/added_passtable = FALSE
|
||||
if(!pushed_mob.pass_flags & PASSTABLE)
|
||||
added_passtable = TRUE
|
||||
@@ -125,14 +128,25 @@
|
||||
if(pushed_mob.loc != loc) //Something prevented the tabling
|
||||
return
|
||||
pushed_mob.Knockdown(40)
|
||||
pushed_mob.visible_message("<span class='danger'>[user] pushes [pushed_mob] onto [src].</span>", \
|
||||
"<span class='userdanger'>[user] pushes [pushed_mob] onto [src].</span>")
|
||||
log_combat(user, pushed_mob, "pushed")
|
||||
pushed_mob.visible_message("<span class='danger'>[user] slams [pushed_mob] onto [src]!</span>", \
|
||||
"<span class='userdanger'>[user] slams you onto [src]!</span>")
|
||||
log_combat(user, pushed_mob, "tabled", null, "onto [src]")
|
||||
if(!ishuman(pushed_mob))
|
||||
return
|
||||
var/mob/living/carbon/human/H = pushed_mob
|
||||
SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "table", /datum/mood_event/table)
|
||||
|
||||
/* You don't shove people onto a table frame.
|
||||
/obj/structure/table/shove_act(mob/living/target, mob/living/user)
|
||||
if(!target.resting)
|
||||
target.Knockdown(SHOVE_KNOCKDOWN_TABLE)
|
||||
user.visible_message("<span class='danger'>[user.name] shoves [target.name] onto \the [src]!</span>",
|
||||
"<span class='danger'>You shove [target.name] onto \the [src]!</span>", null, COMBAT_MESSAGE_RANGE)
|
||||
target.forceMove(src.loc)
|
||||
log_combat(user, target, "shoved", "onto [src] (table)")
|
||||
return TRUE
|
||||
*/
|
||||
|
||||
/obj/structure/table/attackby(obj/item/I, mob/user, params)
|
||||
if(!(flags_1 & NODECONSTRUCT_1))
|
||||
if(istype(I, /obj/item/screwdriver) && deconstruction_ready)
|
||||
@@ -258,6 +272,52 @@
|
||||
for(var/obj/item/shard/S in debris)
|
||||
S.color = NARSIE_WINDOW_COLOUR
|
||||
|
||||
/*
|
||||
* Plasmaglass tables
|
||||
*/
|
||||
/obj/structure/table/plasmaglass
|
||||
name = "plasmaglass table"
|
||||
desc = "A glasstable, but it's pink and more sturdy. What will Nanotrasen design next with plasma?"
|
||||
icon = 'icons/obj/smooth_structures/plasmaglass_table.dmi'
|
||||
icon_state = "plasmaglass_table"
|
||||
climbable = TRUE
|
||||
buildstack = /obj/item/stack/sheet/plasmaglass
|
||||
canSmoothWith = null
|
||||
max_integrity = 270
|
||||
resistance_flags = ACID_PROOF
|
||||
armor = list("melee" = 10, "bullet" = 5, "laser" = 0, "energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100)
|
||||
var/list/debris = list()
|
||||
|
||||
/obj/structure/table/plasmaglass/New()
|
||||
. = ..()
|
||||
debris += new frame
|
||||
|
||||
/obj/structure/table/plasmaglass/Destroy()
|
||||
QDEL_LIST(debris)
|
||||
. = ..()
|
||||
|
||||
/obj/structure/table/plasmaglass/proc/check_break(mob/living/M)
|
||||
return
|
||||
|
||||
/obj/structure/table/plasmaglass/deconstruct(disassembled = TRUE, wrench_disassembly = 0)
|
||||
if(!(flags_1 & NODECONSTRUCT_1))
|
||||
if(disassembled)
|
||||
..()
|
||||
return
|
||||
else
|
||||
var/turf/T = get_turf(src)
|
||||
playsound(T, "shatter", 50, 1)
|
||||
for(var/X in debris)
|
||||
var/atom/movable/AM = X
|
||||
AM.forceMove(T)
|
||||
debris -= AM
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/table/plasmaglass/narsie_act()
|
||||
color = NARSIE_WINDOW_COLOUR
|
||||
for(var/obj/item/shard/S in debris)
|
||||
S.color = NARSIE_WINDOW_COLOUR
|
||||
|
||||
/*
|
||||
* Wooden tables
|
||||
*/
|
||||
@@ -298,44 +358,83 @@
|
||||
frame = /obj/structure/table_frame
|
||||
framestack = /obj/item/stack/rods
|
||||
buildstack = /obj/item/stack/tile/carpet
|
||||
canSmoothWith = list(/obj/structure/table/wood/fancy, /obj/structure/table/wood/fancy/black, /obj/structure/table/wood/fancy/blackred, /obj/structure/table/wood/fancy/monochrome)
|
||||
canSmoothWith = list(/obj/structure/table/wood/fancy,
|
||||
/obj/structure/table/wood/fancy/black,
|
||||
/obj/structure/table/wood/fancy/blackred,
|
||||
/obj/structure/table/wood/fancy/monochrome,
|
||||
/obj/structure/table/wood/fancy/blue,
|
||||
/obj/structure/table/wood/fancy/cyan,
|
||||
/obj/structure/table/wood/fancy/green,
|
||||
/obj/structure/table/wood/fancy/orange,
|
||||
/obj/structure/table/wood/fancy/purple,
|
||||
/obj/structure/table/wood/fancy/red,
|
||||
/obj/structure/table/wood/fancy/royalblack,
|
||||
/obj/structure/table/wood/fancy/royalblue)
|
||||
var/smooth_icon = 'icons/obj/smooth_structures/fancy_table.dmi' // see Initialize()
|
||||
|
||||
/obj/structure/table/wood/fancy/New()
|
||||
// New() is used so that the /black subtype can override `icon` easily and
|
||||
// the correct value will be used by the smoothing subsystem.
|
||||
/obj/structure/table/wood/fancy/Initialize()
|
||||
. = ..()
|
||||
// Needs to be set dynamically because table smooth sprites are 32x34,
|
||||
// which the editor treats as a two-tile-tall object. The sprites are that
|
||||
// size so that the north/south corners look nice - examine the detail on
|
||||
// the sprites in the editor to see why.
|
||||
icon = 'icons/obj/smooth_structures/fancy_table.dmi'
|
||||
icon = smooth_icon
|
||||
|
||||
/obj/structure/table/wood/fancy/black
|
||||
icon_state = "fancy_table_black"
|
||||
buildstack = /obj/item/stack/tile/carpet/black
|
||||
smooth_icon = 'icons/obj/smooth_structures/fancy_table_black.dmi'
|
||||
|
||||
/obj/structure/table/wood/fancy/blackred
|
||||
icon = 'icons/obj/structures.dmi'
|
||||
icon_state = "fancy_table_blackred"
|
||||
buildstack = /obj/item/stack/tile/carpet/blackred
|
||||
|
||||
/obj/structure/table/wood/fancy/blackred/New()
|
||||
. = ..()
|
||||
icon = 'icons/obj/smooth_structures/fancy_table_blackred.dmi'
|
||||
icon_state = "fancy_table_blackred"
|
||||
buildstack = /obj/item/stack/tile/carpet/blackred
|
||||
smooth_icon = 'icons/obj/smooth_structures/fancy_table_blackred.dmi'
|
||||
|
||||
/obj/structure/table/wood/fancy/monochrome
|
||||
icon = 'icons/obj/structures.dmi'
|
||||
icon_state = "fancy_table_monochrome"
|
||||
buildstack = /obj/item/stack/tile/carpet/monochrome
|
||||
icon_state = "fancy_table_monochrome"
|
||||
buildstack = /obj/item/stack/tile/carpet/monochrome
|
||||
smooth_icon = 'icons/obj/smooth_structures/fancy_table_monochrome.dmi'
|
||||
|
||||
/obj/structure/table/wood/fancy/monochrome/New()
|
||||
. = ..()
|
||||
icon = 'icons/obj/smooth_structures/fancy_table_monochrome.dmi'
|
||||
/obj/structure/table/wood/fancy/blue
|
||||
icon_state = "fancy_table_blue"
|
||||
buildstack = /obj/item/stack/tile/carpet/blue
|
||||
smooth_icon = 'icons/obj/smooth_structures/fancy_table_blue.dmi'
|
||||
|
||||
/obj/structure/table/wood/fancy/cyan
|
||||
icon_state = "fancy_table_cyan"
|
||||
buildstack = /obj/item/stack/tile/carpet/cyan
|
||||
smooth_icon = 'icons/obj/smooth_structures/fancy_table_cyan.dmi'
|
||||
|
||||
/obj/structure/table/wood/fancy/green
|
||||
icon_state = "fancy_table_green"
|
||||
buildstack = /obj/item/stack/tile/carpet/green
|
||||
smooth_icon = 'icons/obj/smooth_structures/fancy_table_green.dmi'
|
||||
|
||||
/obj/structure/table/wood/fancy/orange
|
||||
icon_state = "fancy_table_orange"
|
||||
buildstack = /obj/item/stack/tile/carpet/orange
|
||||
smooth_icon = 'icons/obj/smooth_structures/fancy_table_orange.dmi'
|
||||
|
||||
/obj/structure/table/wood/fancy/purple
|
||||
icon_state = "fancy_table_purple"
|
||||
buildstack = /obj/item/stack/tile/carpet/purple
|
||||
smooth_icon = 'icons/obj/smooth_structures/fancy_table_purple.dmi'
|
||||
|
||||
/obj/structure/table/wood/fancy/red
|
||||
icon_state = "fancy_table_red"
|
||||
buildstack = /obj/item/stack/tile/carpet/red
|
||||
smooth_icon = 'icons/obj/smooth_structures/fancy_table_red.dmi'
|
||||
|
||||
/obj/structure/table/wood/fancy/royalblack
|
||||
icon_state = "fancy_table_royalblack"
|
||||
buildstack = /obj/item/stack/tile/carpet/royalblack
|
||||
smooth_icon = 'icons/obj/smooth_structures/fancy_table_royalblack.dmi'
|
||||
|
||||
/obj/structure/table/wood/fancy/royalblue
|
||||
icon_state = "fancy_table_royalblue"
|
||||
buildstack = /obj/item/stack/tile/carpet/royalblue
|
||||
smooth_icon = 'icons/obj/smooth_structures/fancy_table_royalblue.dmi'
|
||||
|
||||
/obj/structure/table/wood/fancy/black/New()
|
||||
. = ..()
|
||||
// Ditto above.
|
||||
icon = 'icons/obj/smooth_structures/fancy_table_black.dmi'
|
||||
/*
|
||||
* Reinforced tables
|
||||
*/
|
||||
|
||||
@@ -209,6 +209,46 @@
|
||||
icon_state = "tile-carpet-monochrome"
|
||||
canSmoothWith = list(/turf/open/floor/carpet/black, /turf/open/floor/carpet/blackred, /turf/open/floor/carpet/monochrome)
|
||||
|
||||
/turf/open/floor/carpet/blue
|
||||
icon = 'icons/turf/floors/carpet_blue.dmi'
|
||||
floor_tile = /obj/item/stack/tile/carpet/blue
|
||||
canSmoothWith = list(/turf/open/floor/carpet/blue)
|
||||
|
||||
/turf/open/floor/carpet/cyan
|
||||
icon = 'icons/turf/floors/carpet_cyan.dmi'
|
||||
floor_tile = /obj/item/stack/tile/carpet/cyan
|
||||
canSmoothWith = list(/turf/open/floor/carpet/cyan)
|
||||
|
||||
/turf/open/floor/carpet/green
|
||||
icon = 'icons/turf/floors/carpet_green.dmi'
|
||||
floor_tile = /obj/item/stack/tile/carpet/green
|
||||
canSmoothWith = list(/turf/open/floor/carpet/green)
|
||||
|
||||
/turf/open/floor/carpet/orange
|
||||
icon = 'icons/turf/floors/carpet_orange.dmi'
|
||||
floor_tile = /obj/item/stack/tile/carpet/orange
|
||||
canSmoothWith = list(/turf/open/floor/carpet/orange)
|
||||
|
||||
/turf/open/floor/carpet/purple
|
||||
icon = 'icons/turf/floors/carpet_purple.dmi'
|
||||
floor_tile = /obj/item/stack/tile/carpet/purple
|
||||
canSmoothWith = list(/turf/open/floor/carpet/purple)
|
||||
|
||||
/turf/open/floor/carpet/red
|
||||
icon = 'icons/turf/floors/carpet_red.dmi'
|
||||
floor_tile = /obj/item/stack/tile/carpet/red
|
||||
canSmoothWith = list(/turf/open/floor/carpet/red)
|
||||
|
||||
/turf/open/floor/carpet/royalblack
|
||||
icon = 'icons/turf/floors/carpet_royalblack.dmi'
|
||||
floor_tile = /obj/item/stack/tile/carpet/royalblack
|
||||
canSmoothWith = list(/turf/open/floor/carpet/royalblack)
|
||||
|
||||
/turf/open/floor/carpet/royalblue
|
||||
icon = 'icons/turf/floors/carpet_royalblue.dmi'
|
||||
floor_tile = /obj/item/stack/tile/carpet/royalblue
|
||||
canSmoothWith = list(/turf/open/floor/carpet/royalblue)
|
||||
|
||||
/turf/open/floor/carpet/narsie_act(force, ignore_mobs, probability = 20)
|
||||
. = (prob(probability) || force)
|
||||
for(var/I in src)
|
||||
|
||||
@@ -13,17 +13,14 @@
|
||||
var/mob/living/carbon/human/H = user //SHOULD always be human, because req_human = 1
|
||||
if(!istype(H)) // req_human could be done in can_sting stuff.
|
||||
return
|
||||
var/datum/mutation/human/HM = GLOB.mutations_list[CHAMELEON]
|
||||
if(HM in H.dna.mutations)
|
||||
HM.force_lose(H)
|
||||
if(H.dna.get_mutation(CHAMELEON))
|
||||
H.dna.remove_mutation(CHAMELEON)
|
||||
else
|
||||
HM.force_give(H)
|
||||
H.dna.add_mutation(CHAMELEON)
|
||||
return TRUE
|
||||
|
||||
/obj/effect/proc_holder/changeling/chameleon_skin/on_refund(mob/user)
|
||||
action.Remove(user)
|
||||
if(user.has_dna())
|
||||
var/mob/living/carbon/C = user
|
||||
var/datum/mutation/human/HM = GLOB.mutations_list[CHAMELEON]
|
||||
if(HM in C.dna.mutations)
|
||||
HM.force_lose(C)
|
||||
C.dna.remove_mutation(CHAMELEON)
|
||||
@@ -69,7 +69,7 @@
|
||||
/mob/living/simple_animal/revenant/Initialize(mapload)
|
||||
. = ..()
|
||||
AddSpell(new /obj/effect/proc_holder/spell/targeted/night_vision/revenant(null))
|
||||
AddSpell(new /obj/effect/proc_holder/spell/targeted/revenant_transmit(null))
|
||||
AddSpell(new /obj/effect/proc_holder/spell/targeted/telepathy/revenant(null))
|
||||
AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/revenant/defile(null))
|
||||
AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/revenant/overload(null))
|
||||
AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/revenant/blight(null))
|
||||
|
||||
@@ -104,35 +104,14 @@
|
||||
action_background_icon_state = "bg_revenant"
|
||||
|
||||
//Transmit: the revemant's only direct way to communicate. Sends a single message silently to a single mob
|
||||
/obj/effect/proc_holder/spell/targeted/revenant_transmit
|
||||
name = "Transmit"
|
||||
desc = "Telepathically transmits a message to the target."
|
||||
/obj/effect/proc_holder/spell/targeted/telepathy/revenant
|
||||
name = "Revenant Transmit"
|
||||
panel = "Revenant Abilities"
|
||||
charge_max = 0
|
||||
clothes_req = 0
|
||||
range = 7
|
||||
include_user = 0
|
||||
action_icon = 'icons/mob/actions/actions_revenant.dmi'
|
||||
action_icon_state = "r_transmit"
|
||||
action_background_icon_state = "bg_revenant"
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/revenant_transmit/cast(list/targets, mob/living/simple_animal/revenant/user = usr)
|
||||
for(var/mob/living/M in targets)
|
||||
var/msg = stripped_input(usr, "What do you wish to tell [M]?", null, "")
|
||||
if(!msg)
|
||||
charge_counter = charge_max
|
||||
return
|
||||
log_directed_talk(user, M, msg, LOG_SAY, "revenant whisper")
|
||||
to_chat(user, "<span class='revenboldnotice'>You transmit to [M]:</span> <span class='revennotice'>[msg]</span>")
|
||||
if(!M.anti_magic_check(FALSE, TRUE)) //hear no evil
|
||||
to_chat(M, "<span class='revenboldnotice'>You hear something behind you talking...</span> <span class='revennotice'>[msg]</span>")
|
||||
for(var/ded in GLOB.dead_mob_list)
|
||||
if(!isobserver(ded))
|
||||
continue
|
||||
var/follow_rev = FOLLOW_LINK(ded, user)
|
||||
var/follow_whispee = FOLLOW_LINK(ded, M)
|
||||
to_chat(ded, "[follow_rev] <span class='revenboldnotice'>[user] Revenant Transmit:</span> <span class='revennotice'>\"[msg]\" to</span> [follow_whispee] <span class='name'>[M]</span>")
|
||||
|
||||
notice = "revennotice"
|
||||
boldnotice = "revenboldnotice"
|
||||
|
||||
|
||||
/obj/effect/proc_holder/spell/aoe_turf/revenant
|
||||
|
||||
@@ -26,5 +26,5 @@
|
||||
return
|
||||
H.dna.add_mutation(HULK)
|
||||
H.dna.add_mutation(XRAY)
|
||||
H.dna.add_mutation(COLDRES)
|
||||
H.dna.add_mutation(SPACEMUT)
|
||||
H.dna.add_mutation(TK)
|
||||
@@ -94,7 +94,7 @@
|
||||
to_chat(user, "<B>Your wish is granted, but at a terrible cost...</B>")
|
||||
to_chat(user, "The Wish Granter punishes you for your selfishness, claiming your soul and warping your body to match the darkness in your heart.")
|
||||
user.dna.add_mutation(LASEREYES)
|
||||
user.dna.add_mutation(COLDRES)
|
||||
user.dna.add_mutation(SPACEMUT)
|
||||
user.dna.add_mutation(XRAY)
|
||||
user.set_species(/datum/species/shadow)
|
||||
if("Wealth")
|
||||
|
||||
@@ -1762,15 +1762,31 @@
|
||||
/obj/item/stack/tile/carpet/black/fifty)
|
||||
crate_name = "premium carpet crate"
|
||||
|
||||
/datum/supply_pack/service/carpet2
|
||||
name = "Premium Carpet Crate #2"
|
||||
desc = "Plasteel floor tiles getting on your nerves? These stacks of extra soft carpet will tie any room together. Contains red, and monochrome"
|
||||
cost = 1000
|
||||
contains = list(/obj/item/stack/tile/carpet/blackred/fifty,
|
||||
/datum/supply_pack/service/carpet_exotic
|
||||
name = "Exotic Carpet Crate"
|
||||
desc = "Exotic carpets straight from Space Russia, for all your decorating needs. Contains 100 tiles each of 10 different flooring patterns."
|
||||
cost = 4000
|
||||
contains = list(/obj/item/stack/tile/carpet/blue/fifty,
|
||||
/obj/item/stack/tile/carpet/blue/fifty,
|
||||
/obj/item/stack/tile/carpet/cyan/fifty,
|
||||
/obj/item/stack/tile/carpet/cyan/fifty,
|
||||
/obj/item/stack/tile/carpet/green/fifty,
|
||||
/obj/item/stack/tile/carpet/green/fifty,
|
||||
/obj/item/stack/tile/carpet/orange/fifty,
|
||||
/obj/item/stack/tile/carpet/orange/fifty,
|
||||
/obj/item/stack/tile/carpet/purple/fifty,
|
||||
/obj/item/stack/tile/carpet/purple/fifty,
|
||||
/obj/item/stack/tile/carpet/red/fifty,
|
||||
/obj/item/stack/tile/carpet/red/fifty,
|
||||
/obj/item/stack/tile/carpet/royalblue/fifty,
|
||||
/obj/item/stack/tile/carpet/royalblue/fifty,
|
||||
/obj/item/stack/tile/carpet/royalblack/fifty,
|
||||
/obj/item/stack/tile/carpet/royalblack/fifty,
|
||||
/obj/item/stack/tile/carpet/blackred/fifty,
|
||||
/obj/item/stack/tile/carpet/blackred/fifty,
|
||||
/obj/item/stack/tile/carpet/monochrome/fifty,
|
||||
/obj/item/stack/tile/carpet/monochrome/fifty)
|
||||
crate_name = "premium carpet crate #2"
|
||||
crate_name = "exotic carpet crate"
|
||||
|
||||
/datum/supply_pack/service/lightbulbs
|
||||
name = "Replacement Lights"
|
||||
|
||||
@@ -677,3 +677,11 @@ GLOBAL_LIST_EMPTY(asset_datums)
|
||||
|
||||
Insert(initial(D.id), I)
|
||||
return ..()
|
||||
|
||||
|
||||
/datum/asset/simple/genetics
|
||||
assets = list(
|
||||
"dna_discovered.gif" = 'html/dna_discovered.gif',
|
||||
"dna_undiscovered.gif" = 'html/dna_undiscovered.gif',
|
||||
"dna_extra.gif" = 'html/dna_extra.gif'
|
||||
)
|
||||
@@ -75,3 +75,9 @@
|
||||
var/datum/player_details/player_details //these persist between logins/logouts during the same round.
|
||||
|
||||
var/list/char_render_holders //Should only be a key-value list of north/south/east/west = obj/screen.
|
||||
|
||||
|
||||
var/client_keysend_amount = 0
|
||||
var/next_keysend_reset = 0
|
||||
var/next_keysend_trip_reset = 0
|
||||
var/keysend_tripped = FALSE
|
||||
@@ -88,8 +88,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
|
||||
//H13
|
||||
var/body_size = 100 //Body Size in percent
|
||||
var/body_size_alt = 0
|
||||
|
||||
var/can_get_preg = 0 //Body Size in percent
|
||||
|
||||
var/datum/species/pref_species = new /datum/species/human() //Mutant race
|
||||
var/list/features = list("mcolor" = "FFF",
|
||||
@@ -867,7 +866,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
|
||||
dat += "<b>Ghosts of Others:</b> <a href='?_src_=prefs;task=input;preference=ghostothers'>[button_name]</a><br>"
|
||||
dat += "<br>"
|
||||
dat += "<b>FPS:</b> <a href='?_src_=prefs;preference=clientfps;task=input'>[clientfps]</a><br>"
|
||||
//dat += "<b>FPS:</b> <a href='?_src_=prefs;preference=clientfps;task=input'>[clientfps]</a><br>"
|
||||
dat += "<b>Parallax (Fancy Space):</b> <a href='?_src_=prefs;preference=parallaxdown' oncontextmenu='window.location.href=\"?_src_=prefs;preference=parallaxup\";return false;'>"
|
||||
switch (parallax)
|
||||
if (PARALLAX_LOW)
|
||||
@@ -2119,8 +2118,11 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
features["has_vag"] = !features["has_vag"]
|
||||
if(features["has_vag"] == FALSE)
|
||||
features["has_womb"] = FALSE
|
||||
features["can_get_preg"] = FALSE
|
||||
if("has_womb")
|
||||
features["has_womb"] = !features["has_womb"]
|
||||
if("can_get_preg")
|
||||
features["can_get_preg"] = !features["can_get_preg"]
|
||||
if("exhibitionist")
|
||||
features["exhibitionist"] = !features["exhibitionist"]
|
||||
if("widescreenpref")
|
||||
@@ -2331,6 +2333,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
|
||||
//h13 character custom body size, make sure to set to 100% if the player hasn't choosen one yet.
|
||||
character.custom_body_size = body_size
|
||||
character.breedable = 0
|
||||
|
||||
character.gender = gender
|
||||
character.age = age
|
||||
|
||||
@@ -120,7 +120,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
S["cit_toggles"] >> cit_toggles
|
||||
S["lewdchem"] >> lewdchem
|
||||
|
||||
//try to fix any outdated data if necessary
|
||||
//try to fix any outdated data if necessfary
|
||||
if(needs_update >= 0)
|
||||
update_preferences(needs_update, S) //needs_update = savefile_version if we need an update (positive integer)
|
||||
|
||||
@@ -137,6 +137,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
toggles = sanitize_integer(toggles, 0, 65535, initial(toggles))
|
||||
clientfps = sanitize_integer(clientfps, 0, 1000, 0)
|
||||
body_size = sanitize_integer(body_size, 90, 110, 0)
|
||||
can_get_preg = sanitize_integer(body_size, 0, 1, 0)
|
||||
parallax = sanitize_integer(parallax, PARALLAX_INSANE, PARALLAX_DISABLE, null)
|
||||
ambientocclusion = sanitize_integer(ambientocclusion, 0, 1, initial(ambientocclusion))
|
||||
auto_fit_viewport = sanitize_integer(auto_fit_viewport, 0, 1, initial(auto_fit_viewport))
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
var/datum/disease/dnaspread/DS = D
|
||||
DS.strain_data["name"] = H.real_name
|
||||
DS.strain_data["UI"] = H.dna.uni_identity
|
||||
DS.strain_data["SE"] = H.dna.struc_enzymes
|
||||
DS.strain_data["SE"] = H.dna.mutation_index
|
||||
else
|
||||
D = new virus_type()
|
||||
else
|
||||
|
||||
@@ -111,6 +111,11 @@
|
||||
if(A)
|
||||
load_program(A)
|
||||
if("safety")
|
||||
if(!issilicon(usr) && !IsAdminGhost(usr))
|
||||
var/msg = "[key_name(usr)] attempted to emag the holodeck using a href they shouldn't have!"
|
||||
message_admins(msg)
|
||||
log_admin(msg)
|
||||
return
|
||||
obj_flags ^= EMAGGED
|
||||
if((obj_flags & EMAGGED) && program && emag_programs[program.name])
|
||||
emergency_shutdown()
|
||||
|
||||
@@ -164,6 +164,7 @@ Geneticist
|
||||
shoes = /obj/item/clothing/shoes/sneakers/white
|
||||
suit = /obj/item/clothing/suit/toggle/labcoat/genetics
|
||||
suit_store = /obj/item/flashlight/pen
|
||||
l_pocket = /obj/item/sequence_scanner
|
||||
|
||||
backpack = /obj/item/storage/backpack/genetics
|
||||
satchel = /obj/item/storage/backpack/satchel/gen
|
||||
|
||||
@@ -3,8 +3,42 @@
|
||||
/client/verb/keyDown(_key as text)
|
||||
set instant = TRUE
|
||||
set hidden = TRUE
|
||||
client_keysend_amount += 1
|
||||
|
||||
var/cache = client_keysend_amount
|
||||
|
||||
if(keysend_tripped && next_keysend_trip_reset <= world.time)
|
||||
keysend_tripped = FALSE
|
||||
|
||||
if(next_keysend_reset <= world.time)
|
||||
client_keysend_amount = 0
|
||||
next_keysend_reset = world.time + (1 SECONDS)
|
||||
|
||||
//The "tripped" system is to confirm that flooding is still happening after one spike
|
||||
//not entirely sure how byond commands interact in relation to lag
|
||||
//don't want to kick people if a lag spike results in a huge flood of commands being sent
|
||||
if(cache >= MAX_KEYPRESS_AUTOKICK)
|
||||
if(!keysend_tripped)
|
||||
keysend_tripped = TRUE
|
||||
next_keysend_trip_reset = world.time + (2 SECONDS)
|
||||
else
|
||||
log_admin("Client [ckey] was just autokicked for flooding keysends; likely abuse but potentially lagspike.")
|
||||
message_admins("Client [ckey] was just autokicked for flooding keysends; likely abuse but potentially lagspike.")
|
||||
QDEL_IN(src, 1)
|
||||
return
|
||||
|
||||
///Check if the key is short enough to even be a real key
|
||||
if(LAZYLEN(_key) > MAX_KEYPRESS_COMMANDLENGTH)
|
||||
to_chat(src, "<span class='userdanger'>Invalid KeyDown detected! You have been disconnected from the server automatically.</span>")
|
||||
log_admin("Client [ckey] just attempted to send an invalid keypress. Keymessage was over [MAX_KEYPRESS_COMMANDLENGTH] characters, autokicking due to likely abuse.")
|
||||
message_admins("Client [ckey] just attempted to send an invalid keypress. Keymessage was over [MAX_KEYPRESS_COMMANDLENGTH] characters, autokicking due to likely abuse.")
|
||||
QDEL_IN(src, 1)
|
||||
return
|
||||
//offset by 1 because the buffer address is 0 indexed because the math was simpler
|
||||
keys_held[current_key_address + 1] = _key
|
||||
//the time a key was pressed isn't actually used anywhere (as of 2019-9-10) but this allows easier access usage/checking
|
||||
keys_held[_key] = world.time
|
||||
current_key_address = ((current_key_address + 1) % HELD_KEY_BUFFER_LENGTH)
|
||||
var/movement = SSinput.movement_keys[_key]
|
||||
if(!(next_move_dir_sub & movement) && !keys_held["Ctrl"])
|
||||
next_move_dir_add |= movement
|
||||
@@ -35,7 +69,11 @@
|
||||
set instant = TRUE
|
||||
set hidden = TRUE
|
||||
|
||||
keys_held -= _key
|
||||
//Can't just do a remove because it would alter the length of the rolling buffer, instead search for the key then null it out if it exists
|
||||
for(var/i in 1 to HELD_KEY_BUFFER_LENGTH)
|
||||
if(keys_held[i] == _key)
|
||||
keys_held[i] = null
|
||||
break
|
||||
var/movement = SSinput.movement_keys[_key]
|
||||
if(!(next_move_dir_add & movement))
|
||||
next_move_dir_sub |= movement
|
||||
|
||||
@@ -1,9 +1,14 @@
|
||||
/client
|
||||
var/list/keys_held = list() // A list of any keys held currently
|
||||
// These next two vars are to apply movement for keypresses and releases made while move delayed.
|
||||
// Because discarding that input makes the game less responsive.
|
||||
var/next_move_dir_add // On next move, add this dir to the move that would otherwise be done
|
||||
var/next_move_dir_sub // On next move, subtract this dir from the move that would otherwise be done
|
||||
/// A rolling buffer of any keys held currently
|
||||
var/list/keys_held = list()
|
||||
///used to keep track of the current rolling buffer position
|
||||
var/current_key_address = 0
|
||||
/// These next two vars are to apply movement for keypresses and releases made while move delayed.
|
||||
/// Because discarding that input makes the game less responsive.
|
||||
/// On next move, add this dir to the move that would otherwise be done
|
||||
var/next_move_dir_add
|
||||
/// On next move, subtract this dir from the move that would otherwise be done
|
||||
var/next_move_dir_sub
|
||||
|
||||
// Set a client's focus to an object and override these procs on that object to let it handle keypresses
|
||||
|
||||
@@ -31,6 +36,12 @@
|
||||
/client/proc/set_macros()
|
||||
set waitfor = FALSE
|
||||
|
||||
|
||||
//Reset and populate the rolling buffer
|
||||
keys_held.Cut()
|
||||
for(var/i in 1 to HELD_KEY_BUFFER_LENGTH)
|
||||
keys_held += null
|
||||
|
||||
erase_all_macros()
|
||||
|
||||
var/list/macro_sets = SSinput.macro_sets
|
||||
|
||||
@@ -453,7 +453,7 @@
|
||||
|
||||
/obj/item/immortality_talisman/Initialize()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/anti_magic, TRUE, TRUE)
|
||||
AddComponent(/datum/component/anti_magic, TRUE, TRUE, TRUE)
|
||||
|
||||
/datum/action/item_action/immortality
|
||||
name = "Immortality"
|
||||
@@ -462,30 +462,45 @@
|
||||
if(cooldown < world.time)
|
||||
SSblackbox.record_feedback("amount", "immortality_talisman_uses", 1)
|
||||
cooldown = world.time + 600
|
||||
user.visible_message("<span class='danger'>[user] vanishes from reality, leaving a hole in [user.p_their()] place!</span>")
|
||||
var/obj/effect/immortality_talisman/Z = new(get_turf(src.loc))
|
||||
Z.name = "hole in reality"
|
||||
Z.desc = "It's shaped an awful lot like [user.name]."
|
||||
Z.setDir(user.dir)
|
||||
user.forceMove(Z)
|
||||
user.notransform = 1
|
||||
user.status_flags |= GODMODE
|
||||
addtimer(CALLBACK(src, .proc/return_to_reality, user, Z), 100)
|
||||
new /obj/effect/immortality_talisman(get_turf(user), user)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>[src] is not ready yet!</span>")
|
||||
|
||||
/obj/item/immortality_talisman/proc/return_to_reality(mob/user, obj/effect/immortality_talisman/Z)
|
||||
user.status_flags &= ~GODMODE
|
||||
user.notransform = 0
|
||||
user.forceMove(get_turf(Z))
|
||||
user.visible_message("<span class='danger'>[user] pops back into reality!</span>")
|
||||
Z.can_destroy = TRUE
|
||||
qdel(Z)
|
||||
|
||||
/obj/effect/immortality_talisman
|
||||
name = "hole in reality"
|
||||
desc = "It's shaped an awful lot like a person."
|
||||
icon_state = "blank"
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
var/can_destroy = FALSE
|
||||
var/vanish_description = "vanishes from reality"
|
||||
var/can_destroy = TRUE
|
||||
|
||||
/obj/effect/immortality_talisman/Initialize(mapload, mob/new_user)
|
||||
. = ..()
|
||||
if(new_user)
|
||||
vanish(new_user)
|
||||
|
||||
/obj/effect/immortality_talisman/proc/vanish(mob/user)
|
||||
user.visible_message("<span class='danger'>[user] [vanish_description], leaving a hole in [user.p_their()] place!</span>")
|
||||
|
||||
desc = "It's shaped an awful lot like [user.name]."
|
||||
setDir(user.dir)
|
||||
|
||||
user.forceMove(src)
|
||||
user.notransform = TRUE
|
||||
user.status_flags |= GODMODE
|
||||
|
||||
can_destroy = FALSE
|
||||
|
||||
addtimer(CALLBACK(src, .proc/unvanish, user), 10 SECONDS)
|
||||
|
||||
/obj/effect/immortality_talisman/proc/unvanish(mob/user)
|
||||
user.status_flags &= ~GODMODE
|
||||
user.notransform = FALSE
|
||||
user.forceMove(get_turf(src))
|
||||
|
||||
user.visible_message("<span class='danger'>[user] pops back into reality!</span>")
|
||||
can_destroy = TRUE
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/immortality_talisman/attackby()
|
||||
return
|
||||
@@ -502,6 +517,10 @@
|
||||
else
|
||||
. = ..()
|
||||
|
||||
/obj/effect/immortality_talisman/void
|
||||
vanish_description = "is dragged into the void"
|
||||
|
||||
|
||||
|
||||
//Shared Bag
|
||||
|
||||
|
||||
@@ -141,6 +141,13 @@
|
||||
ViewManifest()
|
||||
|
||||
if(href_list["SelectedJob"])
|
||||
if(!SSticker || !SSticker.IsRoundInProgress())
|
||||
var/msg = "[key_name(usr)] attempted to join the round using a href that shouldn't be available at this moment!"
|
||||
log_admin(msg)
|
||||
message_admins(msg)
|
||||
to_chat(usr, "<span class='danger'>The round is either not ready, or has already finished...</span>")
|
||||
return
|
||||
|
||||
|
||||
if(!GLOB.enter_allowed)
|
||||
to_chat(usr, "<span class='notice'>There is an administrative lock on entering the game!</span>")
|
||||
@@ -576,9 +583,10 @@
|
||||
//h13 assign your characters custom height.
|
||||
if (H.custom_body_size > 0)
|
||||
H.resize = (H.custom_body_size * 0.01)
|
||||
//Move large characters up slightly. small character dont really need this.
|
||||
H.pixel_y = min(((H.custom_body_size-100) * 0.25), 0)
|
||||
|
||||
//h13 give your starting impregchance (30%)
|
||||
if (H.breedable == TRUE)
|
||||
H.impregchance = 30
|
||||
|
||||
. = H
|
||||
new_character = .
|
||||
|
||||
@@ -603,6 +603,14 @@
|
||||
sight |= (SEE_TURFS|SEE_MOBS|SEE_OBJS)
|
||||
see_in_dark = max(see_in_dark, 8)
|
||||
|
||||
if(HAS_TRAIT(src, TRAIT_THERMAL_VISION))
|
||||
sight |= (SEE_MOBS)
|
||||
lighting_alpha = min(lighting_alpha, LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE)
|
||||
|
||||
if(HAS_TRAIT(src, TRAIT_XRAY_VISION))
|
||||
sight |= (SEE_TURFS|SEE_MOBS|SEE_OBJS)
|
||||
see_in_dark = max(see_in_dark, 8)
|
||||
|
||||
if(see_override)
|
||||
see_invisible = see_override
|
||||
. = ..()
|
||||
|
||||
@@ -317,6 +317,40 @@
|
||||
else
|
||||
return
|
||||
|
||||
|
||||
else if(check_zone(M.zone_selected) == "mouth")
|
||||
var/mob/living/carbon/human/H = src
|
||||
var/datum/species/pref_species = H.dna.species
|
||||
|
||||
M.visible_message("<span class='notice'>[M] gives [H] a boop on the nose.", \
|
||||
"<span class='notice'>You give [H] a boop on the nose!</span>")
|
||||
|
||||
if(H.dna.species.can_wag_tail(H))
|
||||
if("tail_human" in pref_species.default_features)
|
||||
if(H.dna.features["tail_human"] == "None")
|
||||
return
|
||||
else
|
||||
if(!H.dna.species.is_wagging_tail())
|
||||
H.emote("wag")
|
||||
|
||||
if("tail_lizard" in pref_species.default_features)
|
||||
if(H.dna.features["tail_lizard"] == "None")
|
||||
return
|
||||
else
|
||||
if(!H.dna.species.is_wagging_tail())
|
||||
H.emote("wag")
|
||||
|
||||
if("mam_tail" in pref_species.default_features)
|
||||
if(H.dna.features["mam_tail"] == "None")
|
||||
return
|
||||
else
|
||||
if(!H.dna.species.is_wagging_tail())
|
||||
H.emote("wag")
|
||||
|
||||
else
|
||||
return
|
||||
|
||||
|
||||
else
|
||||
M.visible_message("<span class='notice'>[M] hugs [src] to make [p_them()] feel better!</span>", \
|
||||
"<span class='notice'>You hug [src] to make [p_them()] feel better!</span>")
|
||||
|
||||
@@ -163,6 +163,8 @@
|
||||
missing -= BP.body_zone
|
||||
for(var/obj/item/I in BP.embedded_objects)
|
||||
msg += "<B>[t_He] [t_has] \a [icon2html(I, user)] [I] embedded in [t_his] [BP.name]!</B>\n"
|
||||
if(BP.broken)
|
||||
msg += "<B>[t_He] [t_has] \a [I] broken [BP.name]!</B>\n"
|
||||
|
||||
for(var/X in disabled)
|
||||
var/obj/item/bodypart/BP = X
|
||||
|
||||
@@ -673,6 +673,7 @@
|
||||
var/status = ""
|
||||
var/brutedamage = LB.brute_dam
|
||||
var/burndamage = LB.burn_dam
|
||||
var/broken = LB.broken
|
||||
if(hallucination)
|
||||
if(prob(30))
|
||||
brutedamage += rand(30,40)
|
||||
@@ -700,7 +701,8 @@
|
||||
status += LB.medium_burn_msg
|
||||
else if(burndamage > 0)
|
||||
status += LB.light_burn_msg
|
||||
|
||||
if(broken == 1)
|
||||
status = "broken"
|
||||
if(status == "")
|
||||
status = "OK"
|
||||
var/no_damage
|
||||
@@ -711,6 +713,7 @@
|
||||
for(var/obj/item/I in LB.embedded_objects)
|
||||
to_send += "\t <a href='?src=[REF(src)];embedded_object=[REF(I)];embedded_limb=[REF(LB)]' class='warning'>There is \a [I] embedded in your [LB.name]!</a>\n"
|
||||
|
||||
for(var/t in missing)
|
||||
for(var/t in missing)
|
||||
to_send += "<span class='boldannounce'>Your [parse_zone(t)] is missing!</span>\n"
|
||||
|
||||
|
||||
@@ -25,11 +25,11 @@
|
||||
var/age = 30 //Player's age
|
||||
|
||||
var/underwear = "Nude" //Which underwear the player wants
|
||||
var/undie_color = "#FFFFFF"
|
||||
var/undie_color = "FFFFFF"
|
||||
var/undershirt = "Nude" //Which undershirt the player wants
|
||||
var/shirt_color = "#FFFFFF"
|
||||
var/shirt_color = "FFFFFF"
|
||||
var/socks = "Nude" //Which socks the player wants
|
||||
var/socks_color = "#FFFFFF"
|
||||
var/socks_color = "FFFFFF"
|
||||
var/backbag = DBACKPACK //Which backpack type the player has chosen.
|
||||
var/jumpsuit_style = PREF_SUIT //suit/skirt
|
||||
|
||||
|
||||
@@ -44,6 +44,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
var/siemens_coeff = 1 //base electrocution coefficient
|
||||
var/damage_overlay_type = "human" //what kind of damage overlays (if any) appear on our species when wounded?
|
||||
var/fixed_mut_color = "" //to use MUTCOLOR with a fixed color that's independent of dna.feature["mcolor"]
|
||||
var/inert_mutation = DWARFISM //special mutation that can be found in the genepool. Dont leave empty or changing species will be a headache
|
||||
var/list/special_step_sounds //Sounds to override barefeet walkng
|
||||
var/grab_sound //Special sound for grabbing
|
||||
|
||||
@@ -317,6 +318,14 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
for(var/X in inherent_traits)
|
||||
REMOVE_TRAIT(C, X, SPECIES_TRAIT)
|
||||
|
||||
//If their inert mutation is not the same, swap it out
|
||||
if((inert_mutation != new_species.inert_mutation) && LAZYLEN(C.dna.mutation_index) && (inert_mutation in C.dna.mutation_index))
|
||||
C.dna.remove_mutation(inert_mutation)
|
||||
//keep it at the right spot, so we can't have people taking shortcuts
|
||||
var/location = C.dna.mutation_index.Find(inert_mutation)
|
||||
C.dna.mutation_index[location] = new_species.inert_mutation
|
||||
C.dna.mutation_index[new_species.inert_mutation] = create_sequence(new_species.inert_mutation)
|
||||
|
||||
SEND_SIGNAL(C, COMSIG_SPECIES_LOSS, src)
|
||||
|
||||
/datum/species/proc/handle_hair(mob/living/carbon/human/H, forced_colour)
|
||||
@@ -529,7 +538,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
var/digilegs = (DIGITIGRADE in species_traits) ? "_d" : ""
|
||||
var/mutable_appearance/MA = mutable_appearance(S.icon, "[S.icon_state][digilegs]", -BODY_LAYER)
|
||||
if(UNDIE_COLORABLE(S))
|
||||
MA.color = "[H.socks_color]"
|
||||
MA.color = "#[H.socks_color]"
|
||||
standing += MA
|
||||
|
||||
if(standing.len)
|
||||
@@ -1270,7 +1279,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
if(radiation > RAD_MOB_MUTATE)
|
||||
if(prob(1))
|
||||
to_chat(H, "<span class='danger'>You mutate!</span>")
|
||||
H.randmutb()
|
||||
H.easy_randmut(NEGATIVE+MINOR_NEGATIVE)
|
||||
H.emote("gasp")
|
||||
H.domutcheck()
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
exotic_bloodtype = "L"
|
||||
disliked_food = GRAIN | DAIRY
|
||||
liked_food = GROSS | MEAT
|
||||
inert_mutation = FIREBREATH
|
||||
|
||||
/datum/species/lizard/after_equip_job(datum/job/J, mob/living/carbon/human/H)
|
||||
H.grant_language(/datum/language/draconic)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user