Merge branch 'master' into upstream-merge-38179
This commit is contained in:
@@ -0,0 +1,990 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"b" = (
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors/unexplored)
|
||||
"c" = (
|
||||
/obj/item/clockwork/alloy_shards/small,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors/unexplored)
|
||||
"d" = (
|
||||
/obj/structure/destructible/clockwork/wall_gear,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors/unexplored)
|
||||
"e" = (
|
||||
/obj/item/stack/tile/brass,
|
||||
/turf/open/floor/clockwork{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors/unexplored)
|
||||
"f" = (
|
||||
/turf/closed/mineral/volcanic,
|
||||
/area/lavaland/surface/outdoors/unexplored)
|
||||
"g" = (
|
||||
/obj/item/clockwork/alloy_shards/medium/gear_bit,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors/unexplored)
|
||||
"h" = (
|
||||
/turf/open/floor/clockwork{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors/unexplored)
|
||||
"i" = (
|
||||
/obj/structure/grille/ratvar/broken,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors/unexplored)
|
||||
"j" = (
|
||||
/turf/closed/wall/clockwork,
|
||||
/area/lavaland/surface/outdoors/unexplored)
|
||||
"k" = (
|
||||
/obj/item/clockwork/alloy_shards/small,
|
||||
/turf/open/floor/clockwork{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors/unexplored)
|
||||
"l" = (
|
||||
/turf/open/lava/smooth/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors/unexplored)
|
||||
"m" = (
|
||||
/obj/item/clockwork/alloy_shards/medium,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors/unexplored)
|
||||
"n" = (
|
||||
/obj/item/clockwork/component/belligerent_eye/blind_eye,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors/unexplored)
|
||||
"o" = (
|
||||
/obj/item/clockwork/alloy_shards/large,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors/unexplored)
|
||||
"p" = (
|
||||
/obj/item/clockwork/alloy_shards/medium,
|
||||
/turf/open/floor/clockwork{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors/unexplored)
|
||||
"q" = (
|
||||
/obj/structure/lattice/catwalk/clockwork,
|
||||
/turf/open/lava/smooth/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors/unexplored)
|
||||
"r" = (
|
||||
/obj/structure/lattice/clockwork,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors/unexplored)
|
||||
"s" = (
|
||||
/obj/item/clockwork/alloy_shards/large,
|
||||
/turf/open/floor/clockwork{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors/unexplored)
|
||||
"t" = (
|
||||
/obj/item/stack/tile/brass,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors/unexplored)
|
||||
"u" = (
|
||||
/obj/structure/grille/ratvar,
|
||||
/turf/open/floor/clockwork{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors/unexplored)
|
||||
"v" = (
|
||||
/obj/item/clockwork/alloy_shards/medium,
|
||||
/obj/structure/lattice/clockwork,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors/unexplored)
|
||||
"w" = (
|
||||
/obj/structure/grille/ratvar/broken,
|
||||
/turf/open/floor/clockwork{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors/unexplored)
|
||||
"x" = (
|
||||
/obj/structure/destructible/clockwork/wall_gear,
|
||||
/obj/item/stack/tile/brass,
|
||||
/turf/open/floor/clockwork{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors/unexplored)
|
||||
"y" = (
|
||||
/obj/item/clockwork/component/geis_capacitor/fallen_armor,
|
||||
/turf/open/floor/clockwork{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors/unexplored)
|
||||
"z" = (
|
||||
/obj/structure/destructible/clockwork/wall_gear,
|
||||
/turf/open/floor/clockwork{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors/unexplored)
|
||||
"A" = (
|
||||
/obj/item/clockwork/alloy_shards/clockgolem_remains,
|
||||
/turf/open/floor/clockwork{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors/unexplored)
|
||||
"B" = (
|
||||
/obj/item/clockwork/weapon/ratvarian_spear,
|
||||
/turf/open/floor/clockwork{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors/unexplored)
|
||||
"C" = (
|
||||
/obj/item/clockwork/alloy_shards/medium/gear_bit,
|
||||
/turf/open/floor/clockwork{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors/unexplored)
|
||||
"D" = (
|
||||
/obj/structure/grille/ratvar,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors/unexplored)
|
||||
"E" = (
|
||||
/obj/item/clockwork/alloy_shards/clockgolem_remains,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors/unexplored)
|
||||
"F" = (
|
||||
/obj/structure/dead_ratvar,
|
||||
/turf/open/floor/clockwork{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors/unexplored)
|
||||
"G" = (
|
||||
/obj/item/stack/tile/brass/fifty,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors/unexplored)
|
||||
|
||||
(1,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
s
|
||||
h
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
o
|
||||
b
|
||||
a
|
||||
h
|
||||
b
|
||||
r
|
||||
c
|
||||
j
|
||||
x
|
||||
b
|
||||
b
|
||||
g
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
f
|
||||
b
|
||||
l
|
||||
b
|
||||
v
|
||||
b
|
||||
p
|
||||
w
|
||||
j
|
||||
j
|
||||
c
|
||||
l
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
f
|
||||
l
|
||||
l
|
||||
r
|
||||
b
|
||||
b
|
||||
l
|
||||
j
|
||||
j
|
||||
j
|
||||
p
|
||||
l
|
||||
b
|
||||
h
|
||||
c
|
||||
r
|
||||
a
|
||||
a
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
l
|
||||
l
|
||||
p
|
||||
h
|
||||
c
|
||||
l
|
||||
l
|
||||
l
|
||||
j
|
||||
l
|
||||
b
|
||||
l
|
||||
l
|
||||
D
|
||||
h
|
||||
r
|
||||
a
|
||||
a
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
h
|
||||
c
|
||||
h
|
||||
m
|
||||
l
|
||||
l
|
||||
c
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
w
|
||||
l
|
||||
l
|
||||
l
|
||||
m
|
||||
c
|
||||
h
|
||||
f
|
||||
a
|
||||
a
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
a
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
h
|
||||
b
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
c
|
||||
f
|
||||
f
|
||||
b
|
||||
a
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
a
|
||||
h
|
||||
h
|
||||
g
|
||||
c
|
||||
b
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
n
|
||||
h
|
||||
r
|
||||
l
|
||||
l
|
||||
b
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
f
|
||||
b
|
||||
a
|
||||
a
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
a
|
||||
b
|
||||
c
|
||||
b
|
||||
b
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
t
|
||||
h
|
||||
b
|
||||
h
|
||||
w
|
||||
p
|
||||
b
|
||||
g
|
||||
l
|
||||
l
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
b
|
||||
h
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
b
|
||||
b
|
||||
p
|
||||
r
|
||||
F
|
||||
b
|
||||
h
|
||||
A
|
||||
b
|
||||
l
|
||||
l
|
||||
l
|
||||
m
|
||||
l
|
||||
l
|
||||
a
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
c
|
||||
i
|
||||
j
|
||||
j
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
b
|
||||
h
|
||||
k
|
||||
h
|
||||
h
|
||||
h
|
||||
r
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
b
|
||||
a
|
||||
"}
|
||||
(12,1,1) = {"
|
||||
d
|
||||
j
|
||||
j
|
||||
j
|
||||
h
|
||||
l
|
||||
l
|
||||
b
|
||||
l
|
||||
q
|
||||
r
|
||||
h
|
||||
h
|
||||
h
|
||||
c
|
||||
q
|
||||
l
|
||||
b
|
||||
l
|
||||
l
|
||||
b
|
||||
h
|
||||
o
|
||||
a
|
||||
"}
|
||||
(13,1,1) = {"
|
||||
e
|
||||
k
|
||||
b
|
||||
l
|
||||
l
|
||||
l
|
||||
b
|
||||
p
|
||||
s
|
||||
r
|
||||
h
|
||||
h
|
||||
h
|
||||
h
|
||||
h
|
||||
h
|
||||
h
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(14,1,1) = {"
|
||||
b
|
||||
b
|
||||
b
|
||||
m
|
||||
l
|
||||
l
|
||||
l
|
||||
b
|
||||
h
|
||||
h
|
||||
k
|
||||
h
|
||||
h
|
||||
h
|
||||
h
|
||||
h
|
||||
c
|
||||
b
|
||||
l
|
||||
l
|
||||
b
|
||||
b
|
||||
h
|
||||
b
|
||||
"}
|
||||
(15,1,1) = {"
|
||||
b
|
||||
b
|
||||
b
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
h
|
||||
h
|
||||
h
|
||||
h
|
||||
h
|
||||
h
|
||||
h
|
||||
k
|
||||
B
|
||||
h
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(16,1,1) = {"
|
||||
f
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
q
|
||||
b
|
||||
h
|
||||
h
|
||||
h
|
||||
h
|
||||
h
|
||||
h
|
||||
s
|
||||
b
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
f
|
||||
f
|
||||
a
|
||||
"}
|
||||
(17,1,1) = {"
|
||||
b
|
||||
b
|
||||
b
|
||||
l
|
||||
l
|
||||
l
|
||||
b
|
||||
l
|
||||
q
|
||||
r
|
||||
h
|
||||
h
|
||||
h
|
||||
h
|
||||
h
|
||||
b
|
||||
s
|
||||
r
|
||||
l
|
||||
r
|
||||
l
|
||||
l
|
||||
b
|
||||
a
|
||||
"}
|
||||
(18,1,1) = {"
|
||||
b
|
||||
h
|
||||
l
|
||||
l
|
||||
l
|
||||
b
|
||||
b
|
||||
h
|
||||
b
|
||||
h
|
||||
h
|
||||
h
|
||||
h
|
||||
h
|
||||
r
|
||||
k
|
||||
b
|
||||
C
|
||||
r
|
||||
h
|
||||
b
|
||||
b
|
||||
m
|
||||
b
|
||||
"}
|
||||
(19,1,1) = {"
|
||||
b
|
||||
b
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
h
|
||||
b
|
||||
h
|
||||
h
|
||||
h
|
||||
h
|
||||
h
|
||||
h
|
||||
h
|
||||
r
|
||||
j
|
||||
h
|
||||
c
|
||||
h
|
||||
r
|
||||
h
|
||||
b
|
||||
b
|
||||
"}
|
||||
(20,1,1) = {"
|
||||
b
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
b
|
||||
b
|
||||
p
|
||||
h
|
||||
c
|
||||
h
|
||||
k
|
||||
h
|
||||
h
|
||||
o
|
||||
b
|
||||
l
|
||||
l
|
||||
l
|
||||
b
|
||||
E
|
||||
r
|
||||
G
|
||||
o
|
||||
"}
|
||||
(21,1,1) = {"
|
||||
g
|
||||
b
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
r
|
||||
h
|
||||
r
|
||||
h
|
||||
h
|
||||
h
|
||||
h
|
||||
y
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
j
|
||||
j
|
||||
r
|
||||
"}
|
||||
(22,1,1) = {"
|
||||
c
|
||||
c
|
||||
b
|
||||
l
|
||||
l
|
||||
b
|
||||
h
|
||||
h
|
||||
t
|
||||
b
|
||||
h
|
||||
h
|
||||
h
|
||||
h
|
||||
h
|
||||
m
|
||||
b
|
||||
l
|
||||
l
|
||||
l
|
||||
h
|
||||
j
|
||||
j
|
||||
j
|
||||
"}
|
||||
(23,1,1) = {"
|
||||
b
|
||||
h
|
||||
m
|
||||
n
|
||||
b
|
||||
h
|
||||
l
|
||||
o
|
||||
j
|
||||
u
|
||||
r
|
||||
p
|
||||
h
|
||||
r
|
||||
h
|
||||
b
|
||||
l
|
||||
l
|
||||
l
|
||||
b
|
||||
b
|
||||
w
|
||||
r
|
||||
b
|
||||
"}
|
||||
(24,1,1) = {"
|
||||
a
|
||||
a
|
||||
b
|
||||
b
|
||||
l
|
||||
l
|
||||
l
|
||||
j
|
||||
j
|
||||
q
|
||||
p
|
||||
h
|
||||
m
|
||||
e
|
||||
z
|
||||
j
|
||||
j
|
||||
l
|
||||
l
|
||||
c
|
||||
l
|
||||
l
|
||||
b
|
||||
a
|
||||
"}
|
||||
(25,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
j
|
||||
l
|
||||
l
|
||||
b
|
||||
h
|
||||
r
|
||||
x
|
||||
h
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(26,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
c
|
||||
b
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
g
|
||||
q
|
||||
b
|
||||
h
|
||||
l
|
||||
l
|
||||
l
|
||||
c
|
||||
m
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(27,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
h
|
||||
b
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(28,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
c
|
||||
b
|
||||
l
|
||||
b
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
b
|
||||
l
|
||||
f
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(29,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
b
|
||||
f
|
||||
c
|
||||
b
|
||||
l
|
||||
c
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
c
|
||||
o
|
||||
l
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(30,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
g
|
||||
c
|
||||
b
|
||||
l
|
||||
l
|
||||
b
|
||||
m
|
||||
l
|
||||
b
|
||||
l
|
||||
f
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(31,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
l
|
||||
b
|
||||
a
|
||||
b
|
||||
l
|
||||
c
|
||||
f
|
||||
f
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(32,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
c
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
@@ -5,7 +5,6 @@
|
||||
#ifndef LOWMEMORYMODE
|
||||
#ifdef ALL_MAPS
|
||||
#include "map_files\Mining\Lavaland.dmm"
|
||||
#include "map_files\generic\City_of_Cogs.dmm"
|
||||
#include "map_files\debug\runtimestation.dmm"
|
||||
#include "map_files\Deltastation\DeltaStation2.dmm"
|
||||
#include "map_files\MetaStation\MetaStation.dmm"
|
||||
|
||||
+2598
-3670
File diff suppressed because it is too large
Load Diff
@@ -15401,9 +15401,7 @@
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/machinery/airlock_sensor{
|
||||
id_tag = "incinerator_airlock_sensor";
|
||||
master_tag = "incinerator_airlock_control";
|
||||
/obj/machinery/airlock_sensor/incinerator_atmos{
|
||||
pixel_y = 24
|
||||
},
|
||||
/turf/open/floor/engine,
|
||||
@@ -15960,10 +15958,7 @@
|
||||
},
|
||||
/area/security/execution/education)
|
||||
"aNO" = (
|
||||
/obj/machinery/door/poddoor{
|
||||
id = "turbinevent";
|
||||
name = "Turbine Vent"
|
||||
},
|
||||
/obj/machinery/door/poddoor/incinerator_atmos_main,
|
||||
/turf/open/floor/engine/vacuum,
|
||||
/area/maintenance/disposal/incinerator)
|
||||
"aNP" = (
|
||||
@@ -15997,9 +15992,7 @@
|
||||
/turf/open/floor/engine/vacuum,
|
||||
/area/maintenance/disposal/incinerator)
|
||||
"aNR" = (
|
||||
/obj/machinery/igniter{
|
||||
id = "Incinerator"
|
||||
},
|
||||
/obj/machinery/igniter/incinerator_atmos,
|
||||
/obj/structure/cable{
|
||||
icon_state = "4-8"
|
||||
},
|
||||
@@ -16011,14 +16004,7 @@
|
||||
/area/maintenance/disposal/incinerator)
|
||||
"aNS" = (
|
||||
/obj/effect/mapping_helpers/airlock/locked,
|
||||
/obj/machinery/door/airlock/public/glass{
|
||||
autoclose = 0;
|
||||
frequency = 1449;
|
||||
heat_proof = 1;
|
||||
id_tag = "incinerator_airlock_exterior";
|
||||
name = "Incinerator Exterior Airlock";
|
||||
req_access_txt = "12"
|
||||
},
|
||||
/obj/machinery/door/airlock/public/glass/incinerator/atmos_exterior,
|
||||
/obj/structure/cable{
|
||||
icon_state = "4-8"
|
||||
},
|
||||
@@ -16033,23 +16019,14 @@
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume{
|
||||
dir = 2;
|
||||
frequency = 1449;
|
||||
id = "incinerator_airlock_pump"
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_atmos{
|
||||
dir = 2
|
||||
},
|
||||
/turf/open/floor/engine,
|
||||
/area/maintenance/disposal/incinerator)
|
||||
"aNU" = (
|
||||
/obj/effect/mapping_helpers/airlock/locked,
|
||||
/obj/machinery/door/airlock/public/glass{
|
||||
autoclose = 0;
|
||||
frequency = 1449;
|
||||
heat_proof = 1;
|
||||
id_tag = "incinerator_airlock_interior";
|
||||
name = "Incinerator Interior Airlock";
|
||||
req_access_txt = "12"
|
||||
},
|
||||
/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior,
|
||||
/obj/structure/cable{
|
||||
icon_state = "4-8"
|
||||
},
|
||||
@@ -16057,16 +16034,8 @@
|
||||
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/embedded_controller/radio/airlock_controller{
|
||||
airpump_tag = "incinerator_airlock_pump";
|
||||
exterior_door_tag = "incinerator_airlock_exterior";
|
||||
id_tag = "incinerator_airlock_control";
|
||||
interior_door_tag = "incinerator_airlock_interior";
|
||||
name = "Incinerator Access Console";
|
||||
pixel_y = 27;
|
||||
req_access_txt = "12";
|
||||
sanitize_external = 1;
|
||||
sensor_tag = "incinerator_airlock_sensor"
|
||||
/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_atmos{
|
||||
pixel_y = 27
|
||||
},
|
||||
/turf/open/floor/engine,
|
||||
/area/maintenance/disposal/incinerator)
|
||||
@@ -16735,24 +16704,17 @@
|
||||
/turf/open/floor/engine,
|
||||
/area/maintenance/disposal/incinerator)
|
||||
"aPA" = (
|
||||
/obj/machinery/button/ignition{
|
||||
id = "Incinerator";
|
||||
/obj/machinery/button/ignition/incinerator/atmos{
|
||||
pixel_x = 8;
|
||||
pixel_y = -36
|
||||
},
|
||||
/obj/machinery/button/door{
|
||||
id = "turbinevent";
|
||||
name = "Turbine Vent Control";
|
||||
/obj/machinery/button/door/incinerator_vent_atmos_main{
|
||||
pixel_x = -8;
|
||||
pixel_y = -36;
|
||||
req_access_txt = "12"
|
||||
pixel_y = -36
|
||||
},
|
||||
/obj/machinery/button/door{
|
||||
id = "auxincineratorvent";
|
||||
name = "Auxiliary Vent Control";
|
||||
/obj/machinery/button/door/incinerator_vent_atmos_aux{
|
||||
pixel_x = -8;
|
||||
pixel_y = -24;
|
||||
req_access_txt = "12"
|
||||
pixel_y = -24
|
||||
},
|
||||
/obj/machinery/computer/turbine_computer{
|
||||
dir = 1;
|
||||
@@ -17622,10 +17584,7 @@
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/maintenance/disposal/incinerator)
|
||||
"aRo" = (
|
||||
/obj/machinery/door/poddoor{
|
||||
id = "auxincineratorvent";
|
||||
name = "Incineration Chamber Vent"
|
||||
},
|
||||
/obj/machinery/door/poddoor/incinerator_atmos_aux,
|
||||
/turf/open/floor/engine/vacuum,
|
||||
/area/maintenance/disposal/incinerator)
|
||||
"aRp" = (
|
||||
@@ -72556,7 +72515,7 @@
|
||||
/obj/item/pen,
|
||||
/obj/machinery/door/window/southleft{
|
||||
name = "Research Lab Desk";
|
||||
req_access_txt = "7"
|
||||
req_one_access_txt = "7;29"
|
||||
},
|
||||
/obj/machinery/door/poddoor/shutters/preopen{
|
||||
id = "rndlab1";
|
||||
@@ -76089,7 +76048,7 @@
|
||||
/obj/machinery/door/window/southleft{
|
||||
dir = 4;
|
||||
name = "Research Lab Desk";
|
||||
req_access_txt = "7"
|
||||
req_one_access_txt = "7;29"
|
||||
},
|
||||
/obj/machinery/door/window/westleft,
|
||||
/obj/effect/turf_decal/delivery,
|
||||
@@ -76754,7 +76713,7 @@
|
||||
/obj/machinery/door/window/southleft{
|
||||
dir = 8;
|
||||
name = "Research Lab Desk";
|
||||
req_access_txt = "7"
|
||||
req_one_access_txt = "7;29"
|
||||
},
|
||||
/obj/machinery/door/poddoor/shutters/preopen{
|
||||
id = "rndlab2";
|
||||
@@ -82923,7 +82882,6 @@
|
||||
/obj/machinery/atmospherics/components/unary/portables_connector/visible{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/window/spawner/north,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 5
|
||||
},
|
||||
@@ -83693,6 +83651,9 @@
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/portable_atmospherics/pump{
|
||||
name = "Lil Pump"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/mixing)
|
||||
"dxQ" = (
|
||||
@@ -84469,7 +84430,6 @@
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/portable_atmospherics/canister,
|
||||
/obj/structure/window/spawner,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 6
|
||||
},
|
||||
@@ -84989,7 +84949,6 @@
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 10
|
||||
},
|
||||
/obj/structure/window/spawner,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/mixing)
|
||||
"dAD" = (
|
||||
@@ -85787,6 +85746,9 @@
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 5
|
||||
},
|
||||
/obj/item/radio/intercom{
|
||||
pixel_x = -26
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/mixing)
|
||||
"dCb" = (
|
||||
@@ -86384,7 +86346,6 @@
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 9
|
||||
},
|
||||
/obj/structure/window/spawner/north,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/mixing)
|
||||
"dDt" = (
|
||||
@@ -86891,6 +86852,7 @@
|
||||
/obj/structure/sign/poster/official/science{
|
||||
pixel_x = 32
|
||||
},
|
||||
/obj/machinery/portable_atmospherics/scrubber,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/mixing)
|
||||
"dEv" = (
|
||||
@@ -87473,6 +87435,7 @@
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/portable_atmospherics/pump,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/mixing)
|
||||
"dFM" = (
|
||||
@@ -92690,12 +92653,6 @@
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/port/aft)
|
||||
"dQF" = (
|
||||
/obj/machinery/droneDispenser,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/maintenance/port/aft)
|
||||
"dQG" = (
|
||||
/obj/structure/table,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
@@ -99679,14 +99636,7 @@
|
||||
},
|
||||
/area/science/mixing)
|
||||
"fpQ" = (
|
||||
/obj/machinery/door/airlock/research/glass{
|
||||
autoclose = 0;
|
||||
frequency = 1449;
|
||||
heat_proof = 1;
|
||||
id_tag = "tox_airlock_interior";
|
||||
name = "Mixing Room Interior Airlock";
|
||||
req_access_txt = "8"
|
||||
},
|
||||
/obj/machinery/door/airlock/research/glass/incinerator/toxmix_interior,
|
||||
/obj/effect/mapping_helpers/airlock/locked,
|
||||
/turf/open/floor/engine,
|
||||
/area/science/mixing)
|
||||
@@ -99714,9 +99664,7 @@
|
||||
/obj/machinery/atmospherics/components/binary/pump/on{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/airlock_sensor{
|
||||
id_tag = "tox_airlock_sensor";
|
||||
master_tag = "tox_airlock_control";
|
||||
/obj/machinery/airlock_sensor/incinerator_toxmix{
|
||||
pixel_x = -24
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
@@ -99951,17 +99899,13 @@
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/button/ignition{
|
||||
id = "herrington_memorial_toxigniter";
|
||||
/obj/machinery/button/ignition/incinerator/toxmix{
|
||||
pixel_x = -6;
|
||||
pixel_y = 30
|
||||
},
|
||||
/obj/machinery/button/door{
|
||||
id = "mixvent";
|
||||
/obj/machinery/button/door/incinerator_vent_toxmix{
|
||||
pixel_x = 8;
|
||||
pixel_y = 30;
|
||||
req_one_access = null;
|
||||
req_one_access_txt = "8"
|
||||
pixel_y = 30
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/camera{
|
||||
@@ -100048,7 +99992,7 @@
|
||||
/obj/machinery/autolathe,
|
||||
/obj/machinery/door/window/southleft{
|
||||
name = "Research Lab Desk";
|
||||
req_access_txt = "7"
|
||||
req_one_access_txt = "7;29"
|
||||
},
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/door/poddoor/shutters/preopen{
|
||||
@@ -100066,10 +100010,8 @@
|
||||
},
|
||||
/area/science/mixing)
|
||||
"lyU" = (
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume{
|
||||
dir = 8;
|
||||
frequency = 1449;
|
||||
id = "tox_airlock_pump"
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_toxmix{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/engine,
|
||||
/area/science/mixing)
|
||||
@@ -100144,14 +100086,8 @@
|
||||
/area/science/circuit)
|
||||
"mkm" = (
|
||||
/obj/machinery/atmospherics/components/binary/valve,
|
||||
/obj/machinery/embedded_controller/radio/airlock_controller{
|
||||
airpump_tag = "tox_airlock_pump";
|
||||
exterior_door_tag = "tox_airlock_exterior";
|
||||
id_tag = "tox_airlock_control";
|
||||
interior_door_tag = "tox_airlock_interior";
|
||||
pixel_y = 26;
|
||||
sanitize_external = 1;
|
||||
sensor_tag = "tox_airlock_sensor"
|
||||
/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_toxmix{
|
||||
pixel_y = 26
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/plasteel/vault{
|
||||
@@ -100207,15 +100143,7 @@
|
||||
},
|
||||
/area/science/mixing)
|
||||
"oIE" = (
|
||||
/obj/machinery/door/airlock/research/glass{
|
||||
autoclose = 0;
|
||||
frequency = 1449;
|
||||
heat_proof = 1;
|
||||
id_tag = "tox_airlock_exterior";
|
||||
name = "Mixing Room Exterior Airlock";
|
||||
req_one_access = "8";
|
||||
req_one_access_txt = "0"
|
||||
},
|
||||
/obj/machinery/door/airlock/research/glass/incinerator/toxmix_exterior,
|
||||
/obj/effect/mapping_helpers/airlock/locked,
|
||||
/turf/open/floor/engine,
|
||||
/area/science/mixing)
|
||||
@@ -100255,9 +100183,7 @@
|
||||
},
|
||||
/area/science/research)
|
||||
"oYI" = (
|
||||
/obj/machinery/igniter{
|
||||
id = "herrington_memorial_toxigniter"
|
||||
},
|
||||
/obj/machinery/igniter/incinerator_toxmix,
|
||||
/turf/open/floor/engine/vacuum,
|
||||
/area/science/mixing)
|
||||
"oZC" = (
|
||||
@@ -100360,9 +100286,7 @@
|
||||
/turf/open/floor/engine/vacuum,
|
||||
/area/science/mixing)
|
||||
"svv" = (
|
||||
/obj/machinery/door/poddoor{
|
||||
id = "mixvent"
|
||||
},
|
||||
/obj/machinery/door/poddoor/incinerator_toxmix,
|
||||
/turf/open/floor/engine/vacuum,
|
||||
/area/science/mixing)
|
||||
"tmi" = (
|
||||
@@ -134175,7 +134099,7 @@ dNC
|
||||
dNC
|
||||
dOT
|
||||
dPM
|
||||
dQF
|
||||
dOb
|
||||
dRE
|
||||
dSC
|
||||
dTA
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"aaa" = (
|
||||
/turf/open/space/basic,
|
||||
/area/space)
|
||||
@@ -897,6 +897,13 @@
|
||||
},
|
||||
/turf/open/floor/plasteel/floorgrime,
|
||||
/area/security/prison)
|
||||
"acx" = (
|
||||
/obj/machinery/airalarm{
|
||||
dir = 8;
|
||||
pixel_x = 24
|
||||
},
|
||||
/turf/open/floor/plasteel/floorgrime,
|
||||
/area/security/prison)
|
||||
"acy" = (
|
||||
/obj/machinery/door/airlock/external{
|
||||
name = "Escape Pod Two"
|
||||
@@ -1042,6 +1049,15 @@
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/plasteel/floorgrime,
|
||||
/area/security/prison)
|
||||
"acM" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/paper_bin{
|
||||
pixel_x = -3;
|
||||
pixel_y = 7
|
||||
},
|
||||
/obj/item/pen,
|
||||
/turf/open/floor/plasteel/floorgrime,
|
||||
/area/security/prison)
|
||||
"acN" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/reagent_containers/syringe,
|
||||
@@ -6013,6 +6029,11 @@
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/port/fore)
|
||||
"amU" = (
|
||||
/turf/open/floor/plating{
|
||||
icon_state = "platingdmg2"
|
||||
},
|
||||
/area/maintenance/port)
|
||||
"amW" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/folder,
|
||||
@@ -21724,6 +21745,18 @@
|
||||
"aUM" = (
|
||||
/turf/closed/wall,
|
||||
/area/crew_quarters/locker)
|
||||
"aUN" = (
|
||||
/obj/structure/closet/wardrobe/black,
|
||||
/turf/open/floor/plasteel/vault,
|
||||
/area/crew_quarters/locker)
|
||||
"aUO" = (
|
||||
/obj/structure/closet/wardrobe/grey,
|
||||
/turf/open/floor/plasteel/vault,
|
||||
/area/crew_quarters/locker)
|
||||
"aUP" = (
|
||||
/obj/structure/closet/wardrobe/white,
|
||||
/turf/open/floor/plasteel/vault,
|
||||
/area/crew_quarters/locker)
|
||||
"aUQ" = (
|
||||
/turf/open/floor/plasteel/vault,
|
||||
/area/crew_quarters/locker)
|
||||
@@ -25533,6 +25566,12 @@
|
||||
dir = 4
|
||||
},
|
||||
/area/security/checkpoint/engineering)
|
||||
"bcO" = (
|
||||
/obj/structure/easel,
|
||||
/turf/open/floor/plating{
|
||||
icon_state = "platingdmg3"
|
||||
},
|
||||
/area/maintenance/starboard/fore)
|
||||
"bcP" = (
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
@@ -51612,7 +51651,7 @@
|
||||
/obj/machinery/door/window/eastright{
|
||||
dir = 2;
|
||||
name = "Research and Development Desk";
|
||||
req_access_txt = "7"
|
||||
req_one_access_txt = "7;29"
|
||||
},
|
||||
/obj/machinery/door/poddoor/shutters/preopen{
|
||||
id = "research_shutters";
|
||||
@@ -52935,29 +52974,14 @@
|
||||
/area/maintenance/disposal/incinerator)
|
||||
"cja" = (
|
||||
/obj/effect/mapping_helpers/airlock/locked,
|
||||
/obj/machinery/door/airlock/public/glass{
|
||||
autoclose = 0;
|
||||
frequency = 1449;
|
||||
heat_proof = 1;
|
||||
id_tag = "incinerator_airlock_interior";
|
||||
name = "Incinerator Interior Airlock";
|
||||
req_access_txt = "12"
|
||||
},
|
||||
/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior,
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
|
||||
/obj/machinery/embedded_controller/radio/airlock_controller{
|
||||
airpump_tag = "incinerator_airlock_pump";
|
||||
exterior_door_tag = "incinerator_airlock_exterior";
|
||||
id_tag = "incinerator_airlock_control";
|
||||
interior_door_tag = "incinerator_airlock_interior";
|
||||
name = "Incinerator Access Console";
|
||||
/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_atmos{
|
||||
pixel_x = 40;
|
||||
pixel_y = 8;
|
||||
req_access_txt = "12";
|
||||
sanitize_external = 1;
|
||||
sensor_tag = "incinerator_airlock_sensor"
|
||||
pixel_y = 8
|
||||
},
|
||||
/turf/open/floor/engine,
|
||||
/area/maintenance/disposal/incinerator)
|
||||
@@ -53665,9 +53689,7 @@
|
||||
/obj/machinery/atmospherics/components/binary/pump/on{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/airlock_sensor{
|
||||
id_tag = "incinerator_airlock_sensor";
|
||||
master_tag = "incinerator_airlock_control";
|
||||
/obj/machinery/airlock_sensor/incinerator_atmos{
|
||||
pixel_x = -8;
|
||||
pixel_y = 24
|
||||
},
|
||||
@@ -53680,10 +53702,8 @@
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume{
|
||||
dir = 8;
|
||||
frequency = 1449;
|
||||
id = "incinerator_airlock_pump"
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_atmos{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/engine,
|
||||
/area/maintenance/disposal/incinerator)
|
||||
@@ -54314,8 +54334,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/starboard/aft)
|
||||
"cmb" = (
|
||||
/obj/machinery/chem_master/condimaster{
|
||||
name = "CondiMaster Neo";
|
||||
/obj/machinery/chem_master{
|
||||
pixel_x = -4
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
@@ -54328,14 +54347,7 @@
|
||||
/area/space/nearstation)
|
||||
"cmd" = (
|
||||
/obj/effect/mapping_helpers/airlock/locked,
|
||||
/obj/machinery/door/airlock/public/glass{
|
||||
autoclose = 0;
|
||||
frequency = 1449;
|
||||
heat_proof = 1;
|
||||
id_tag = "incinerator_airlock_exterior";
|
||||
name = "Incinerator Exterior Airlock";
|
||||
req_access_txt = "12"
|
||||
},
|
||||
/obj/machinery/door/airlock/public/glass/incinerator/atmos_exterior,
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
@@ -54795,9 +54807,7 @@
|
||||
/turf/open/floor/engine/vacuum,
|
||||
/area/maintenance/disposal/incinerator)
|
||||
"cne" = (
|
||||
/obj/machinery/igniter{
|
||||
id = "Incinerator"
|
||||
},
|
||||
/obj/machinery/igniter/incinerator_atmos,
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
@@ -54817,10 +54827,7 @@
|
||||
/turf/open/floor/engine/vacuum,
|
||||
/area/maintenance/disposal/incinerator)
|
||||
"cng" = (
|
||||
/obj/machinery/door/poddoor{
|
||||
id = "auxincineratorvent";
|
||||
name = "Incineration Chamber Vent"
|
||||
},
|
||||
/obj/machinery/door/poddoor/incinerator_atmos_aux,
|
||||
/turf/open/floor/engine/vacuum,
|
||||
/area/maintenance/disposal/incinerator)
|
||||
"cnh" = (
|
||||
@@ -55792,7 +55799,7 @@
|
||||
/obj/machinery/door/window/eastright{
|
||||
dir = 4;
|
||||
name = "Research and Development Desk";
|
||||
req_access_txt = "7"
|
||||
req_one_access_txt = "7;29"
|
||||
},
|
||||
/obj/item/folder/white{
|
||||
pixel_x = 4;
|
||||
@@ -56632,7 +56639,7 @@
|
||||
/obj/machinery/door/window/eastleft{
|
||||
dir = 1;
|
||||
name = "Research and Development Deliveries";
|
||||
req_access_txt = "7"
|
||||
req_one_access_txt = "7;29"
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 8
|
||||
@@ -56905,10 +56912,7 @@
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/maintenance/disposal/incinerator)
|
||||
"crf" = (
|
||||
/obj/machinery/door/poddoor{
|
||||
id = "turbinevent";
|
||||
name = "Turbine Vent"
|
||||
},
|
||||
/obj/machinery/door/poddoor/incinerator_atmos_main,
|
||||
/turf/open/floor/engine/vacuum,
|
||||
/area/maintenance/disposal/incinerator)
|
||||
"crg" = (
|
||||
@@ -63419,10 +63423,7 @@
|
||||
/turf/open/space,
|
||||
/area/science/mixing)
|
||||
"cEr" = (
|
||||
/obj/machinery/door/poddoor{
|
||||
id = "mixvent";
|
||||
name = "Mixer Room Vent"
|
||||
},
|
||||
/obj/machinery/door/poddoor/incinerator_toxmix,
|
||||
/turf/open/floor/engine/vacuum,
|
||||
/area/science/mixing)
|
||||
"cEs" = (
|
||||
@@ -63432,9 +63433,8 @@
|
||||
/turf/open/floor/engine/vacuum,
|
||||
/area/science/mixing)
|
||||
"cEt" = (
|
||||
/obj/machinery/sparker{
|
||||
/obj/machinery/sparker/toxmix{
|
||||
dir = 2;
|
||||
id = "mixingsparker";
|
||||
pixel_x = 25
|
||||
},
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxins_mixing_output{
|
||||
@@ -63449,9 +63449,7 @@
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/science/mixing)
|
||||
"cEv" = (
|
||||
/obj/machinery/airlock_sensor{
|
||||
id_tag = "tox_airlock_sensor";
|
||||
master_tag = "tox_airlock_control";
|
||||
/obj/machinery/airlock_sensor/incinerator_toxmix{
|
||||
pixel_y = 24
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
@@ -63465,14 +63463,8 @@
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/meter,
|
||||
/obj/machinery/embedded_controller/radio/airlock_controller{
|
||||
airpump_tag = "tox_airlock_pump";
|
||||
exterior_door_tag = "tox_airlock_exterior";
|
||||
id_tag = "tox_airlock_control";
|
||||
interior_door_tag = "tox_airlock_interior";
|
||||
pixel_x = -24;
|
||||
sanitize_external = 1;
|
||||
sensor_tag = "tox_airlock_sensor"
|
||||
/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_toxmix{
|
||||
pixel_x = -24
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/corner{
|
||||
dir = 1
|
||||
@@ -63864,35 +63856,19 @@
|
||||
/area/science/mixing)
|
||||
"cFo" = (
|
||||
/obj/effect/mapping_helpers/airlock/locked,
|
||||
/obj/machinery/door/airlock/research/glass{
|
||||
autoclose = 0;
|
||||
frequency = 1449;
|
||||
heat_proof = 1;
|
||||
id_tag = "tox_airlock_exterior";
|
||||
name = "Mixing Room Exterior Airlock";
|
||||
req_access_txt = "8"
|
||||
},
|
||||
/obj/machinery/door/airlock/research/glass/incinerator/toxmix_exterior,
|
||||
/turf/open/floor/engine,
|
||||
/area/science/mixing)
|
||||
"cFp" = (
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume{
|
||||
dir = 2;
|
||||
frequency = 1449;
|
||||
id = "tox_airlock_pump"
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_toxmix{
|
||||
dir = 2
|
||||
},
|
||||
/obj/effect/landmark/blobstart,
|
||||
/turf/open/floor/engine,
|
||||
/area/science/mixing)
|
||||
"cFq" = (
|
||||
/obj/effect/mapping_helpers/airlock/locked,
|
||||
/obj/machinery/door/airlock/research/glass{
|
||||
autoclose = 0;
|
||||
frequency = 1449;
|
||||
heat_proof = 1;
|
||||
id_tag = "tox_airlock_interior";
|
||||
name = "Mixing Room Interior Airlock";
|
||||
req_access_txt = "8"
|
||||
},
|
||||
/obj/machinery/door/airlock/research/glass/incinerator/toxmix_interior,
|
||||
/turf/open/floor/engine,
|
||||
/area/science/mixing)
|
||||
"cFr" = (
|
||||
@@ -64316,9 +64292,8 @@
|
||||
},
|
||||
/area/science/research)
|
||||
"cGj" = (
|
||||
/obj/machinery/sparker{
|
||||
/obj/machinery/sparker/toxmix{
|
||||
dir = 2;
|
||||
id = "mixingsparker";
|
||||
pixel_x = 25
|
||||
},
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxins_mixing_input{
|
||||
@@ -64341,15 +64316,11 @@
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/meter,
|
||||
/obj/machinery/button/door{
|
||||
id = "mixvent";
|
||||
name = "Mixing Room Vent Control";
|
||||
/obj/machinery/button/door/incinerator_vent_toxmix{
|
||||
pixel_x = -25;
|
||||
pixel_y = 5;
|
||||
req_access_txt = "7"
|
||||
pixel_y = 5
|
||||
},
|
||||
/obj/machinery/button/ignition{
|
||||
id = "mixingsparker";
|
||||
/obj/machinery/button/ignition/incinerator/toxmix{
|
||||
pixel_x = -25;
|
||||
pixel_y = -5
|
||||
},
|
||||
@@ -67097,8 +67068,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/aft)
|
||||
"cLC" = (
|
||||
/obj/machinery/button/ignition{
|
||||
id = "Incinerator";
|
||||
/obj/machinery/button/ignition/incinerator/atmos{
|
||||
pixel_x = 8;
|
||||
pixel_y = -36
|
||||
},
|
||||
@@ -67109,20 +67079,14 @@
|
||||
network = list("turbine");
|
||||
pixel_x = 29
|
||||
},
|
||||
/obj/machinery/button/door{
|
||||
id = "turbinevent";
|
||||
name = "Turbine Vent Control";
|
||||
/obj/machinery/button/door/incinerator_vent_atmos_main{
|
||||
pixel_x = -8;
|
||||
pixel_y = -36;
|
||||
req_access_txt = "12"
|
||||
pixel_y = -36
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/general/visible,
|
||||
/obj/machinery/button/door{
|
||||
id = "auxincineratorvent";
|
||||
name = "Auxiliary Vent Control";
|
||||
/obj/machinery/button/door/incinerator_vent_atmos_aux{
|
||||
pixel_x = -8;
|
||||
pixel_y = -24;
|
||||
req_access_txt = "12"
|
||||
pixel_y = -24
|
||||
},
|
||||
/obj/machinery/computer/turbine_computer{
|
||||
dir = 1;
|
||||
@@ -71412,6 +71376,10 @@
|
||||
/obj/structure/easel,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/port)
|
||||
"dbl" = (
|
||||
/obj/structure/easel,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/starboard/aft)
|
||||
"dbm" = (
|
||||
/obj/effect/landmark/event_spawn,
|
||||
/turf/open/floor/plasteel,
|
||||
@@ -76191,14 +76159,6 @@
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/security/prison)
|
||||
"hAJ" = (
|
||||
/obj/machinery/airalarm{
|
||||
dir = 8;
|
||||
pixel_x = 24
|
||||
},
|
||||
/obj/machinery/cryopod,
|
||||
/turf/open/floor/plasteel/floorgrime,
|
||||
/area/security/prison)
|
||||
"ioI" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 4
|
||||
@@ -76217,7 +76177,7 @@
|
||||
/obj/machinery/door/window/eastright{
|
||||
dir = 2;
|
||||
name = "Research and Development Desk";
|
||||
req_access_txt = "7"
|
||||
req_one_access_txt = "7;29"
|
||||
},
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/door/poddoor/shutters/preopen{
|
||||
@@ -76447,10 +76407,6 @@
|
||||
},
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/science/circuit)
|
||||
"mEW" = (
|
||||
/obj/machinery/vending/kink,
|
||||
/turf/open/floor/plasteel/vault,
|
||||
/area/crew_quarters/locker)
|
||||
"nnK" = (
|
||||
/obj/item/stack/sheet/glass/fifty,
|
||||
/obj/item/paper_bin,
|
||||
@@ -76711,12 +76667,6 @@
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/library)
|
||||
"rhY" = (
|
||||
/obj/machinery/vending/kink,
|
||||
/turf/open/floor/plating{
|
||||
icon_state = "platingdmg2"
|
||||
},
|
||||
/area/maintenance/port)
|
||||
"rzX" = (
|
||||
/obj/structure/chair/office/light{
|
||||
dir = 1;
|
||||
@@ -76930,15 +76880,6 @@
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/misc_lab)
|
||||
"vlg" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/tile/green/side,
|
||||
/turf/open/floor/plasteel/neutral/corner{
|
||||
dir = 2
|
||||
},
|
||||
/area/crew_quarters/locker)
|
||||
"vlx" = (
|
||||
/obj/machinery/vr_sleeper,
|
||||
/turf/open/floor/plasteel/neutral/corner{
|
||||
@@ -76994,7 +76935,6 @@
|
||||
/turf/closed/wall,
|
||||
/area/science/circuit)
|
||||
"wOE" = (
|
||||
/obj/machinery/droneDispenser,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/aft)
|
||||
"wPk" = (
|
||||
@@ -77083,79 +77023,6 @@
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/science/circuit)
|
||||
"AIY" = (
|
||||
/obj/machinery/computer/cryopod{
|
||||
pixel_y = -24
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/box/white/corners,
|
||||
/obj/effect/turf_decal/box/white/corners{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel/vault,
|
||||
/area/crew_quarters/locker)
|
||||
"FiY" = (
|
||||
/obj/machinery/vending/kink,
|
||||
/turf/open/floor/plating{
|
||||
icon_state = "platingdmg3"
|
||||
},
|
||||
/area/maintenance/starboard/fore)
|
||||
"KHe" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/tile/green/corner{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/neutral/corner{
|
||||
dir = 2
|
||||
},
|
||||
/area/crew_quarters/locker)
|
||||
"RbF" = (
|
||||
/obj/machinery/vending/kink,
|
||||
/obj/machinery/vending/kink,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/starboard/aft)
|
||||
"SuJ" = (
|
||||
/obj/machinery/cryopod,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 5
|
||||
},
|
||||
/turf/open/floor/plasteel/vault,
|
||||
/area/crew_quarters/locker)
|
||||
"WoM" = (
|
||||
/obj/machinery/cryopod{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/vault,
|
||||
/area/crew_quarters/locker)
|
||||
"Xvm" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/paper_bin{
|
||||
pixel_x = -3;
|
||||
pixel_y = 7
|
||||
},
|
||||
/obj/item/pen,
|
||||
/obj/machinery/computer/cryopod{
|
||||
pixel_x = 30;
|
||||
pixel_y = 6
|
||||
},
|
||||
/turf/open/floor/plasteel/floorgrime,
|
||||
/area/security/prison)
|
||||
"XMx" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/tile/green/corner,
|
||||
/turf/open/floor/plasteel/neutral/corner{
|
||||
dir = 2
|
||||
},
|
||||
/area/crew_quarters/locker)
|
||||
|
||||
(1,1,1) = {"
|
||||
aaa
|
||||
@@ -95026,7 +94893,7 @@ bHQ
|
||||
bvW
|
||||
bLg
|
||||
bLf
|
||||
rhY
|
||||
amU
|
||||
bPL
|
||||
alK
|
||||
bOf
|
||||
@@ -101641,8 +101508,8 @@ aay
|
||||
abs
|
||||
abK
|
||||
ace
|
||||
hAJ
|
||||
Xvm
|
||||
acx
|
||||
acM
|
||||
abe
|
||||
ady
|
||||
adT
|
||||
@@ -110487,7 +110354,7 @@ cGl
|
||||
cHg
|
||||
cIh
|
||||
dAh
|
||||
RbF
|
||||
dbl
|
||||
dyc
|
||||
dxQ
|
||||
dvY
|
||||
@@ -110675,8 +110542,8 @@ aOx
|
||||
aPJ
|
||||
aQT
|
||||
aOu
|
||||
XMx
|
||||
WoM
|
||||
aTt
|
||||
aUN
|
||||
aUM
|
||||
aYc
|
||||
aTC
|
||||
@@ -110932,8 +110799,8 @@ aOy
|
||||
aOt
|
||||
aQU
|
||||
aSg
|
||||
vlg
|
||||
AIY
|
||||
aTt
|
||||
aUO
|
||||
aUM
|
||||
boW
|
||||
aZt
|
||||
@@ -111189,8 +111056,8 @@ aOz
|
||||
aOu
|
||||
aQV
|
||||
aOv
|
||||
KHe
|
||||
SuJ
|
||||
aTt
|
||||
aUP
|
||||
aUM
|
||||
dCD
|
||||
aZt
|
||||
@@ -112475,7 +112342,7 @@ aPL
|
||||
aQZ
|
||||
aSh
|
||||
aTA
|
||||
mEW
|
||||
aUT
|
||||
aUM
|
||||
aYh
|
||||
aCM
|
||||
@@ -118361,7 +118228,7 @@ aaf
|
||||
aaf
|
||||
ack
|
||||
dni
|
||||
FiY
|
||||
bcO
|
||||
dnS
|
||||
dnS
|
||||
dnS
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"aaa" = (
|
||||
/turf/open/space/basic,
|
||||
/area/space)
|
||||
@@ -7629,7 +7629,6 @@
|
||||
},
|
||||
/area/teleporter)
|
||||
"aoJ" = (
|
||||
/obj/machinery/droneDispenser,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 10
|
||||
},
|
||||
@@ -14629,6 +14628,18 @@
|
||||
dir = 5
|
||||
},
|
||||
/area/crew_quarters/dorms)
|
||||
"aEL" = (
|
||||
/obj/item/twohanded/required/kirbyplants{
|
||||
icon_state = "plant-21"
|
||||
},
|
||||
/obj/machinery/status_display{
|
||||
pixel_y = -32
|
||||
},
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/plasteel/vault{
|
||||
dir = 5
|
||||
},
|
||||
/area/crew_quarters/dorms)
|
||||
"aEM" = (
|
||||
/obj/structure/closet/crate/bin,
|
||||
/obj/effect/turf_decal/bot,
|
||||
@@ -20523,7 +20534,7 @@
|
||||
/obj/item/pen,
|
||||
/obj/machinery/door/window/southleft{
|
||||
name = "Research Lab Desk";
|
||||
req_access_txt = "7"
|
||||
req_one_access_txt = "7;29"
|
||||
},
|
||||
/obj/machinery/door/poddoor/shutters/preopen{
|
||||
id = "rndlab1";
|
||||
@@ -21476,7 +21487,7 @@
|
||||
/obj/machinery/door/window/southleft{
|
||||
dir = 4;
|
||||
name = "Research Lab Desk";
|
||||
req_access_txt = "7"
|
||||
req_one_access_txt = "7;29"
|
||||
},
|
||||
/obj/machinery/door/poddoor/shutters/preopen{
|
||||
id = "rndlab1";
|
||||
@@ -35974,16 +35985,6 @@
|
||||
dir = 5
|
||||
},
|
||||
/area/engine/atmos)
|
||||
"ZwS" = (
|
||||
/obj/machinery/status_display{
|
||||
pixel_y = -32
|
||||
},
|
||||
/obj/effect/turf_decal/bot,
|
||||
/obj/machinery/vending/kink,
|
||||
/turf/open/floor/plasteel/vault{
|
||||
dir = 5
|
||||
},
|
||||
/area/crew_quarters/dorms)
|
||||
|
||||
(1,1,1) = {"
|
||||
aaa
|
||||
@@ -72590,7 +72591,7 @@ aAF
|
||||
aBO
|
||||
aCN
|
||||
aDD
|
||||
ZwS
|
||||
aEL
|
||||
awQ
|
||||
aGz
|
||||
aGM
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"aaa" = (
|
||||
/turf/open/space/basic,
|
||||
/area/space)
|
||||
@@ -3054,6 +3054,10 @@
|
||||
},
|
||||
/turf/open/space,
|
||||
/area/space/nearstation)
|
||||
"ajB" = (
|
||||
/obj/item/storage/box/mousetraps,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/department/security/brig)
|
||||
"ajC" = (
|
||||
/obj/structure/chair/stool,
|
||||
/turf/open/floor/plating,
|
||||
@@ -3448,6 +3452,10 @@
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/department/security/brig)
|
||||
"aks" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/department/security/brig)
|
||||
"akt" = (
|
||||
/obj/structure/bed,
|
||||
/obj/item/bedsheet,
|
||||
@@ -10349,6 +10357,14 @@
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/primary/central)
|
||||
"aBK" = (
|
||||
/obj/structure/table,
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/obj/item/crowbar,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/primary/central)
|
||||
"aBL" = (
|
||||
/obj/effect/spawner/structure/window/reinforced,
|
||||
/obj/machinery/door/poddoor/shutters/preopen{
|
||||
@@ -10422,6 +10438,10 @@
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/crew_quarters/dorms)
|
||||
"aBT" = (
|
||||
/obj/structure/closet/wardrobe/white,
|
||||
/turf/open/floor/plasteel/arrival,
|
||||
/area/crew_quarters/fitness/recreation)
|
||||
"aBU" = (
|
||||
/obj/structure/closet/wardrobe/mixed,
|
||||
/turf/open/floor/plasteel/arrival,
|
||||
@@ -12047,6 +12067,14 @@
|
||||
/obj/machinery/vending/snack,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/primary/central)
|
||||
"aFD" = (
|
||||
/obj/structure/table,
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/obj/item/taperecorder,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/primary/central)
|
||||
"aFE" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
@@ -12420,6 +12448,13 @@
|
||||
/obj/machinery/vending/cigarette,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/primary/central)
|
||||
"aGA" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/turf/open/floor/plating,
|
||||
/area/storage/emergency/starboard)
|
||||
"aGB" = (
|
||||
/obj/machinery/space_heater,
|
||||
/turf/open/floor/plating,
|
||||
@@ -21172,10 +21207,6 @@
|
||||
icon_state = "platingdmg3"
|
||||
},
|
||||
/area/maintenance/department/cargo)
|
||||
"bdA" = (
|
||||
/obj/machinery/droneDispenser,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/department/cargo)
|
||||
"bdB" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-4"
|
||||
@@ -25732,7 +25763,7 @@
|
||||
/obj/machinery/door/window/eastright{
|
||||
dir = 2;
|
||||
name = "Research and Development Desk";
|
||||
req_access_txt = "7"
|
||||
req_one_access_txt = "7;29"
|
||||
},
|
||||
/obj/machinery/door/poddoor/shutters/preopen{
|
||||
id = "research_shutters_2";
|
||||
@@ -31482,8 +31513,8 @@
|
||||
/obj/structure/cable{
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 4
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/science/mixing)
|
||||
@@ -32064,9 +32095,6 @@
|
||||
dir = 4
|
||||
},
|
||||
/area/science/explab)
|
||||
"bFg" = (
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/science/mixing)
|
||||
"bFh" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
|
||||
dir = 1
|
||||
@@ -32501,6 +32529,9 @@
|
||||
/area/science/mixing)
|
||||
"bGn" = (
|
||||
/obj/machinery/vending/wardrobe/science_wardrobe,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 5
|
||||
},
|
||||
/turf/open/floor/plasteel/whitepurple/side,
|
||||
/area/science/mixing)
|
||||
"bGo" = (
|
||||
@@ -32520,6 +32551,9 @@
|
||||
pixel_y = -2
|
||||
},
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/whitepurple/side,
|
||||
/area/science/mixing)
|
||||
"bGp" = (
|
||||
@@ -32544,6 +32578,9 @@
|
||||
network = list("ss13","rd")
|
||||
},
|
||||
/obj/machinery/light,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/whitepurple/side,
|
||||
/area/science/mixing)
|
||||
"bGq" = (
|
||||
@@ -32561,16 +32598,25 @@
|
||||
},
|
||||
/obj/item/assembly/timer,
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/whitepurple/side,
|
||||
/area/science/mixing)
|
||||
"bGr" = (
|
||||
/obj/structure/tank_dispenser,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/whitepurple/side,
|
||||
/area/science/mixing)
|
||||
"bGs" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 10
|
||||
},
|
||||
/turf/open/floor/plasteel/whitepurple/side,
|
||||
/area/science/mixing)
|
||||
"bGt" = (
|
||||
@@ -33023,12 +33069,8 @@
|
||||
/area/science/mixing)
|
||||
"bHz" = (
|
||||
/obj/machinery/atmospherics/components/binary/valve,
|
||||
/obj/machinery/button/door{
|
||||
id = "toxvent";
|
||||
name = "Aft Vent Control";
|
||||
pixel_y = -24;
|
||||
req_access_txt = "0";
|
||||
req_one_access_txt = "8;24"
|
||||
/obj/machinery/button/door/incinerator_vent_toxmix{
|
||||
pixel_y = -24
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 8
|
||||
@@ -33044,14 +33086,9 @@
|
||||
pixel_x = -6;
|
||||
pixel_y = -24
|
||||
},
|
||||
/obj/machinery/doorButtons/airlock_controller{
|
||||
idExterior = "tox_airlock_exterior";
|
||||
idInterior = "tox_airlock_interior";
|
||||
idSelf = "tox_access_control";
|
||||
name = "Mixing Chamber Access Console";
|
||||
/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_toxmix{
|
||||
pixel_x = 6;
|
||||
pixel_y = -26;
|
||||
req_access_txt = "0"
|
||||
pixel_y = -26
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 4
|
||||
@@ -33068,9 +33105,15 @@
|
||||
dir = 2;
|
||||
name = "Incinerator Output Pump"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/mixing)
|
||||
"bHD" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/purple/side,
|
||||
/area/science/mixing)
|
||||
"bHE" = (
|
||||
@@ -33081,6 +33124,9 @@
|
||||
/obj/effect/turf_decal/bot{
|
||||
dir = 2
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 9
|
||||
},
|
||||
/turf/open/floor/plasteel/purple/side,
|
||||
/area/science/mixing)
|
||||
"bHI" = (
|
||||
@@ -33115,6 +33161,10 @@
|
||||
},
|
||||
/turf/open/space/basic,
|
||||
/area/space/nearstation)
|
||||
"bHP" = (
|
||||
/obj/effect/decal/cleanable/cobweb,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/maintenance/department/engine)
|
||||
"bHQ" = (
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/maintenance/department/engine)
|
||||
@@ -33515,15 +33565,7 @@
|
||||
/area/science/mixing)
|
||||
"bIL" = (
|
||||
/obj/effect/mapping_helpers/airlock/locked,
|
||||
/obj/machinery/door/airlock/public/glass{
|
||||
autoclose = 0;
|
||||
frequency = 1449;
|
||||
heat_proof = 1;
|
||||
id_tag = "tox_airlock_interior";
|
||||
name = "Interior Airlock";
|
||||
req_access_txt = "8";
|
||||
req_one_access_txt = "0"
|
||||
},
|
||||
/obj/machinery/door/airlock/research/glass/incinerator/toxmix_interior,
|
||||
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
|
||||
/turf/open/floor/engine,
|
||||
/area/science/mixing)
|
||||
@@ -33954,36 +33996,33 @@
|
||||
/obj/machinery/atmospherics/components/binary/pump/on{
|
||||
dir = 2
|
||||
},
|
||||
/obj/machinery/doorButtons/access_button{
|
||||
idDoor = "tox_airlock_exterior";
|
||||
idSelf = "tox_access_control";
|
||||
layer = 3.1;
|
||||
name = "airlock control";
|
||||
pixel_x = 8;
|
||||
pixel_y = -24
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/airlock_sensor/incinerator_toxmix{
|
||||
pixel_x = -24
|
||||
},
|
||||
/turf/open/floor/engine,
|
||||
/area/science/mixing)
|
||||
"bJR" = (
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_toxmix{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/engine,
|
||||
/area/science/mixing)
|
||||
"bJS" = (
|
||||
/obj/machinery/atmospherics/components/binary/pump{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/doorButtons/access_button{
|
||||
idDoor = "tox_airlock_interior";
|
||||
idSelf = "tox_access_control";
|
||||
name = "airlock control";
|
||||
pixel_x = -8;
|
||||
pixel_y = 24
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/engine,
|
||||
/area/science/mixing)
|
||||
"bJT" = (
|
||||
@@ -34467,15 +34506,7 @@
|
||||
/area/engine/atmos)
|
||||
"bLf" = (
|
||||
/obj/effect/mapping_helpers/airlock/locked,
|
||||
/obj/machinery/door/airlock/public/glass{
|
||||
autoclose = 0;
|
||||
frequency = 1449;
|
||||
heat_proof = 1;
|
||||
id_tag = "tox_airlock_exterior";
|
||||
name = "Exterior Airlock";
|
||||
req_access_txt = "8";
|
||||
req_one_access_txt = "0"
|
||||
},
|
||||
/obj/machinery/door/airlock/research/glass/incinerator/toxmix_exterior,
|
||||
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
|
||||
dir = 1
|
||||
},
|
||||
@@ -35680,10 +35711,7 @@
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/science/mixing)
|
||||
"bOt" = (
|
||||
/obj/machinery/door/poddoor{
|
||||
id = "toxvent";
|
||||
name = "Aft Vent"
|
||||
},
|
||||
/obj/machinery/door/poddoor/incinerator_toxmix,
|
||||
/turf/open/floor/engine/vacuum,
|
||||
/area/science/mixing)
|
||||
"bOu" = (
|
||||
@@ -40308,19 +40336,13 @@
|
||||
dir = 8;
|
||||
id = "incineratorturbine"
|
||||
},
|
||||
/obj/machinery/button/door{
|
||||
id = "turbinevent";
|
||||
name = "Outtake Vent Control";
|
||||
/obj/machinery/button/door/incinerator_vent_atmos_main{
|
||||
pixel_x = 24;
|
||||
pixel_y = 6;
|
||||
req_one_access_txt = "8;24"
|
||||
pixel_y = 6
|
||||
},
|
||||
/obj/machinery/button/door{
|
||||
id = "mixvent";
|
||||
name = "Intake Vent Control";
|
||||
/obj/machinery/button/door/incinerator_vent_atmos_aux{
|
||||
pixel_x = 24;
|
||||
pixel_y = -6;
|
||||
req_one_access_txt = "8;24"
|
||||
pixel_y = -6
|
||||
},
|
||||
/turf/open/floor/plasteel/darkyellow/side{
|
||||
dir = 4
|
||||
@@ -40340,6 +40362,9 @@
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/machinery/airlock_sensor/incinerator_atmos{
|
||||
pixel_y = 22
|
||||
},
|
||||
/turf/open/floor/engine,
|
||||
/area/maintenance/disposal/incinerator)
|
||||
"bZT" = (
|
||||
@@ -40607,24 +40632,10 @@
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/effect/mapping_helpers/airlock/locked,
|
||||
/obj/machinery/door/airlock/public/glass{
|
||||
autoclose = 0;
|
||||
frequency = 1449;
|
||||
heat_proof = 1;
|
||||
id_tag = "incinerator_airlock_interior";
|
||||
name = "Turbine Interior Airlock";
|
||||
req_access_txt = "24"
|
||||
},
|
||||
/obj/machinery/embedded_controller/radio/airlock_controller{
|
||||
airpump_tag = "incinerator_airlock_pump";
|
||||
exterior_door_tag = "incinerator_airlock_exterior";
|
||||
id_tag = "incinerator_airlock_control";
|
||||
interior_door_tag = "incinerator_airlock_interior";
|
||||
name = "Incinerator Access Console";
|
||||
/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior,
|
||||
/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_atmos{
|
||||
pixel_x = -6;
|
||||
pixel_y = -26;
|
||||
sanitize_external = 1;
|
||||
sensor_tag = "incinerator_airlock_sensor"
|
||||
pixel_y = -26
|
||||
},
|
||||
/turf/open/floor/engine,
|
||||
/area/maintenance/disposal/incinerator)
|
||||
@@ -40632,10 +40643,8 @@
|
||||
/obj/structure/cable/yellow{
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume{
|
||||
dir = 2;
|
||||
frequency = 1449;
|
||||
id = "incinerator_airlock_pump"
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_atmos{
|
||||
dir = 2
|
||||
},
|
||||
/turf/open/floor/engine,
|
||||
/area/maintenance/disposal/incinerator)
|
||||
@@ -40644,23 +40653,14 @@
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/effect/mapping_helpers/airlock/locked,
|
||||
/obj/machinery/door/airlock/public/glass{
|
||||
autoclose = 0;
|
||||
frequency = 1449;
|
||||
heat_proof = 1;
|
||||
id_tag = "incinerator_airlock_exterior";
|
||||
name = "Turbine Exterior Airlock";
|
||||
req_access_txt = "24"
|
||||
},
|
||||
/obj/machinery/door/airlock/public/glass/incinerator/atmos_exterior,
|
||||
/turf/open/floor/engine,
|
||||
/area/maintenance/disposal/incinerator)
|
||||
"caO" = (
|
||||
/obj/structure/cable/yellow{
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/machinery/igniter{
|
||||
id = "Incinerator"
|
||||
},
|
||||
/obj/machinery/igniter/incinerator_atmos,
|
||||
/obj/machinery/air_sensor/atmos/incinerator_tank{
|
||||
pixel_x = 32;
|
||||
pixel_y = -32
|
||||
@@ -40697,10 +40697,7 @@
|
||||
/turf/open/floor/engine,
|
||||
/area/maintenance/disposal/incinerator)
|
||||
"caR" = (
|
||||
/obj/machinery/door/poddoor{
|
||||
id = "turbinevent";
|
||||
name = "Outtake Vent"
|
||||
},
|
||||
/obj/machinery/door/poddoor/incinerator_atmos_main,
|
||||
/turf/open/floor/engine/vacuum,
|
||||
/area/maintenance/disposal/incinerator)
|
||||
"caS" = (
|
||||
@@ -40920,8 +40917,7 @@
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/maintenance/disposal/incinerator)
|
||||
"cbC" = (
|
||||
/obj/machinery/button/ignition{
|
||||
id = "Incinerator";
|
||||
/obj/machinery/button/ignition/incinerator/atmos{
|
||||
pixel_x = 26;
|
||||
pixel_y = -6
|
||||
},
|
||||
@@ -40945,12 +40941,6 @@
|
||||
},
|
||||
/obj/machinery/light/small,
|
||||
/obj/machinery/atmospherics/pipe/simple/general/hidden,
|
||||
/obj/machinery/airlock_sensor{
|
||||
id_tag = "incinerator_airlock_sensor";
|
||||
master_tag = "incinerator_airlock_control";
|
||||
pixel_x = -26;
|
||||
pixel_y = 8
|
||||
},
|
||||
/turf/open/floor/engine,
|
||||
/area/maintenance/disposal/incinerator)
|
||||
"cbF" = (
|
||||
@@ -41194,10 +41184,7 @@
|
||||
},
|
||||
/area/maintenance/disposal/incinerator)
|
||||
"ccs" = (
|
||||
/obj/machinery/door/poddoor{
|
||||
id = "mixvent";
|
||||
name = "Intake Vent"
|
||||
},
|
||||
/obj/machinery/door/poddoor/incinerator_atmos_aux,
|
||||
/turf/open/floor/engine/vacuum,
|
||||
/area/maintenance/disposal/incinerator)
|
||||
"ccu" = (
|
||||
@@ -43077,6 +43064,19 @@
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/chapel/main/monastery)
|
||||
"cjO" = (
|
||||
/obj/effect/decal/cleanable/cobweb{
|
||||
icon_state = "cobweb2"
|
||||
},
|
||||
/obj/item/stack/sheet/glass/fifty{
|
||||
layer = 4
|
||||
},
|
||||
/obj/item/stack/sheet/metal{
|
||||
amount = 20;
|
||||
layer = 3.1
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/department/chapel/monastery)
|
||||
"cjP" = (
|
||||
/obj/item/twohanded/required/kirbyplants{
|
||||
icon_state = "plant-22"
|
||||
@@ -48013,16 +48013,6 @@
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/engine/engineering)
|
||||
"eWf" = (
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/cryopod,
|
||||
/obj/machinery/computer/cryopod{
|
||||
pixel_y = 24
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/hallway/primary/central)
|
||||
"eWi" = (
|
||||
/obj/structure/reagent_dispensers/fueltank,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
@@ -49728,6 +49718,12 @@
|
||||
icon_state = "platingdmg3"
|
||||
},
|
||||
/area/maintenance/department/engine)
|
||||
"kfh" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 9
|
||||
},
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/science/mixing)
|
||||
"kfM" = (
|
||||
/obj/structure/closet,
|
||||
/obj/machinery/light/small{
|
||||
@@ -49792,6 +49788,10 @@
|
||||
/obj/item/clothing/under/rank/clown/sexy,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/maintenance/department/crew_quarters/dorms)
|
||||
"kmn" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/science/mixing)
|
||||
"knw" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
@@ -49834,9 +49834,6 @@
|
||||
dir = 9
|
||||
},
|
||||
/area/chapel/office)
|
||||
"kwI" = (
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/mixing)
|
||||
"kxj" = (
|
||||
/obj/structure/chair/office/dark{
|
||||
dir = 1
|
||||
@@ -50731,6 +50728,12 @@
|
||||
/obj/item/stack/spacecash/c10,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/maintenance/department/crew_quarters/dorms)
|
||||
"noM" = (
|
||||
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/mixing)
|
||||
"npE" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/turf/open/floor/plating,
|
||||
@@ -50768,6 +50771,12 @@
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/construction/mining/aux_base)
|
||||
"nsD" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 6
|
||||
},
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/science/mixing)
|
||||
"ntj" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
@@ -50990,11 +50999,6 @@
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/turf/open/floor/wood,
|
||||
/area/lawoffice)
|
||||
"nSH" = (
|
||||
/obj/effect/decal/cleanable/cobweb,
|
||||
/obj/machinery/vending/kink,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/maintenance/department/engine)
|
||||
"nVU" = (
|
||||
/obj/item/twohanded/spear,
|
||||
/turf/open/floor/plating,
|
||||
@@ -51956,15 +51960,6 @@
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/crew_quarters/heads/chief)
|
||||
"qHi" = (
|
||||
/obj/structure/table,
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/obj/item/crowbar,
|
||||
/obj/item/taperecorder,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/primary/central)
|
||||
"qHI" = (
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 9
|
||||
@@ -52406,6 +52401,10 @@
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/engine/engineering)
|
||||
"rPW" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/science/mixing)
|
||||
"rSH" = (
|
||||
/obj/item/trash/can,
|
||||
/turf/open/floor/wood,
|
||||
@@ -53019,6 +53018,10 @@
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/engine/engineering)
|
||||
"ubW" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/science/mixing)
|
||||
"uek" = (
|
||||
/obj/structure/rack,
|
||||
/obj/effect/spawner/lootdrop/maintenance{
|
||||
@@ -54301,6 +54304,12 @@
|
||||
},
|
||||
/turf/open/floor/plasteel/dark/telecomms,
|
||||
/area/tcommsat/server)
|
||||
"xIx" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 5
|
||||
},
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/science/mixing)
|
||||
"xJy" = (
|
||||
/obj/structure/chair/comfy/black,
|
||||
/obj/structure/sign/plaques/atmos{
|
||||
@@ -54451,65 +54460,6 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/engine/engineering)
|
||||
"yzM" = (
|
||||
/obj/machinery/light/small,
|
||||
/obj/item/storage/box/mousetraps,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/department/security/brig)
|
||||
"Drm" = (
|
||||
/obj/effect/turf_decal/stripes/corner,
|
||||
/turf/open/floor/plasteel/green/corner,
|
||||
/area/hallway/primary/central)
|
||||
"EjC" = (
|
||||
/obj/machinery/cryopod,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/hallway/primary/central)
|
||||
"JAb" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/item/taperecorder,
|
||||
/turf/open/floor/plating,
|
||||
/area/storage/emergency/starboard)
|
||||
"KhG" = (
|
||||
/obj/machinery/vending/kink,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/department/security/brig)
|
||||
"QYc" = (
|
||||
/obj/machinery/vending/kink,
|
||||
/obj/effect/decal/cleanable/cobweb{
|
||||
icon_state = "cobweb2"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/department/chapel/monastery)
|
||||
"RST" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/green/side{
|
||||
dir = 4
|
||||
},
|
||||
/area/hallway/primary/central)
|
||||
"Xmf" = (
|
||||
/obj/item/stack/sheet/metal{
|
||||
amount = 20;
|
||||
layer = 3.1
|
||||
},
|
||||
/obj/item/stack/sheet/glass/fifty{
|
||||
layer = 4
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/department/chapel/monastery)
|
||||
"YSB" = (
|
||||
/obj/machinery/vending/kink,
|
||||
/turf/closed/wall,
|
||||
/area/storage/emergency/starboard)
|
||||
"Zud" = (
|
||||
/obj/machinery/vending/kink,
|
||||
/obj/machinery/vending/kink,
|
||||
/turf/open/floor/plasteel/arrival,
|
||||
/area/crew_quarters/fitness/recreation)
|
||||
|
||||
(1,1,1) = {"
|
||||
aaa
|
||||
@@ -70774,7 +70724,7 @@ aaa
|
||||
aaa
|
||||
ait
|
||||
aiV
|
||||
KhG
|
||||
ajB
|
||||
akr
|
||||
aiu
|
||||
ait
|
||||
@@ -71148,7 +71098,7 @@ cvw
|
||||
cvI
|
||||
ckQ
|
||||
clf
|
||||
Xmf
|
||||
cwA
|
||||
cwA
|
||||
cwS
|
||||
cjm
|
||||
@@ -71289,7 +71239,7 @@ aaa
|
||||
aiu
|
||||
aiX
|
||||
ajD
|
||||
yzM
|
||||
aks
|
||||
aiu
|
||||
ait
|
||||
ait
|
||||
@@ -71404,7 +71354,7 @@ cgG
|
||||
cfn
|
||||
ciR
|
||||
cwa
|
||||
QYc
|
||||
cjO
|
||||
ckk
|
||||
ckC
|
||||
ckR
|
||||
@@ -75730,7 +75680,7 @@ bDg
|
||||
bEj
|
||||
bFF
|
||||
bva
|
||||
nSH
|
||||
bHP
|
||||
bJb
|
||||
bJb
|
||||
bJb
|
||||
@@ -90582,12 +90532,12 @@ awd
|
||||
abI
|
||||
awd
|
||||
aAM
|
||||
qHi
|
||||
aBK
|
||||
aDa
|
||||
aEb
|
||||
Drm
|
||||
RST
|
||||
RST
|
||||
aAM
|
||||
aFD
|
||||
aDa
|
||||
aAN
|
||||
aIf
|
||||
aJe
|
||||
@@ -90843,8 +90793,8 @@ awd
|
||||
awd
|
||||
aAN
|
||||
aAN
|
||||
eWf
|
||||
EjC
|
||||
awd
|
||||
awd
|
||||
aAN
|
||||
aIg
|
||||
aJf
|
||||
@@ -91099,10 +91049,10 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aAN
|
||||
aAN
|
||||
aAN
|
||||
aAN
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
awd
|
||||
aHN
|
||||
aIU
|
||||
aJI
|
||||
@@ -91380,7 +91330,7 @@ aPY
|
||||
bau
|
||||
aLf
|
||||
aFi
|
||||
bdA
|
||||
aFi
|
||||
beI
|
||||
beI
|
||||
bgD
|
||||
@@ -92386,7 +92336,7 @@ aDd
|
||||
apX
|
||||
aEU
|
||||
aFE
|
||||
JAb
|
||||
aGA
|
||||
aHn
|
||||
aIi
|
||||
aJi
|
||||
@@ -92900,7 +92850,7 @@ com
|
||||
apX
|
||||
aET
|
||||
lKL
|
||||
YSB
|
||||
aET
|
||||
aET
|
||||
aHN
|
||||
aIU
|
||||
@@ -95002,7 +94952,7 @@ bAF
|
||||
bBK
|
||||
bCW
|
||||
bDV
|
||||
bFg
|
||||
bFh
|
||||
bGm
|
||||
bHy
|
||||
aaa
|
||||
@@ -95208,7 +95158,7 @@ axw
|
||||
ayu
|
||||
azC
|
||||
axw
|
||||
Zud
|
||||
aBT
|
||||
atn
|
||||
aEf
|
||||
aFc
|
||||
@@ -95259,7 +95209,7 @@ bAF
|
||||
bBL
|
||||
bCW
|
||||
bDW
|
||||
bFh
|
||||
kmn
|
||||
bGn
|
||||
bHy
|
||||
aaa
|
||||
@@ -96546,9 +96496,9 @@ bDa
|
||||
bEa
|
||||
bFm
|
||||
bGs
|
||||
bHy
|
||||
bHy
|
||||
bHy
|
||||
ubW
|
||||
ubW
|
||||
xIx
|
||||
bHy
|
||||
bHy
|
||||
bHy
|
||||
@@ -97574,9 +97524,9 @@ bHy
|
||||
bHy
|
||||
bHy
|
||||
bGw
|
||||
bHy
|
||||
bHy
|
||||
bHy
|
||||
nsD
|
||||
rPW
|
||||
kfh
|
||||
bHy
|
||||
bHy
|
||||
bHy
|
||||
@@ -97831,7 +97781,7 @@ bwm
|
||||
glf
|
||||
bFr
|
||||
qtA
|
||||
kwI
|
||||
khk
|
||||
bIN
|
||||
dAF
|
||||
bCV
|
||||
@@ -98601,7 +98551,7 @@ nev
|
||||
hgD
|
||||
bEf
|
||||
bFu
|
||||
khk
|
||||
noM
|
||||
bHE
|
||||
bJV
|
||||
bLh
|
||||
|
||||
+680
-673
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,4 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"b" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 8
|
||||
@@ -44,10 +44,6 @@
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/auxillary_base)
|
||||
"y" = (
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/auxillary_base)
|
||||
"z" = (
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
@@ -82,7 +78,6 @@
|
||||
/area/shuttle/auxillary_base)
|
||||
"X" = (
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Auxillary Mining Base";
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/mining_shuttle_beacon,
|
||||
@@ -142,7 +137,7 @@ P
|
||||
k
|
||||
k
|
||||
k
|
||||
y
|
||||
x
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
v
|
||||
|
||||
@@ -35,7 +35,6 @@
|
||||
/area/shuttle/auxillary_base)
|
||||
"h" = (
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Auxillary Mining Base";
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/mining_shuttle_beacon,
|
||||
@@ -147,4 +146,4 @@ g
|
||||
g
|
||||
g
|
||||
n
|
||||
"}
|
||||
"}
|
||||
@@ -411,12 +411,12 @@
|
||||
/area/shuttle/syndicate/airlock)
|
||||
"bi" = (
|
||||
/obj/structure/rack,
|
||||
/obj/item/clothing/suit/space/syndicate/black/red,
|
||||
/obj/item/clothing/head/helmet/space/syndicate/black/red,
|
||||
/obj/effect/turf_decal/bot_white,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 10
|
||||
},
|
||||
/obj/item/clothing/suit/space/syndicate,
|
||||
/obj/item/clothing/head/helmet/space/syndicate,
|
||||
/turf/open/floor/mineral/plastitanium,
|
||||
/area/shuttle/syndicate/airlock)
|
||||
"bj" = (
|
||||
|
||||
@@ -67,6 +67,7 @@
|
||||
#define ADMIN_PUNISHMENT_BSA "Bluespace Artillery Device"
|
||||
#define ADMIN_PUNISHMENT_FIREBALL "Fireball"
|
||||
#define ADMIN_PUNISHMENT_ROD "Immovable Rod"
|
||||
#define ADMIN_PUNISHMENT_SUPPLYPOD "Supply Pod"
|
||||
|
||||
#define AHELP_ACTIVE 1
|
||||
#define AHELP_CLOSED 2
|
||||
|
||||
@@ -194,6 +194,37 @@
|
||||
#define ATMOS_GAS_MONITOR_WASTE_ENGINE "engine-waste_out"
|
||||
#define ATMOS_GAS_MONITOR_WASTE_ATMOS "atmos-waste_out"
|
||||
|
||||
//AIRLOCK CONTROLLER TAGS
|
||||
|
||||
//RnD toxins burn chamber
|
||||
#define INCINERATOR_TOXMIX_IGNITER "toxmix_igniter"
|
||||
#define INCINERATOR_TOXMIX_VENT "toxmix_vent"
|
||||
#define INCINERATOR_TOXMIX_DP_VENTPUMP "toxmix_airlock_pump"
|
||||
#define INCINERATOR_TOXMIX_AIRLOCK_SENSOR "toxmix_airlock_sensor"
|
||||
#define INCINERATOR_TOXMIX_AIRLOCK_CONTROLLER "toxmix_airlock_controller"
|
||||
#define INCINERATOR_TOXMIX_AIRLOCK_INTERIOR "toxmix_airlock_interior"
|
||||
#define INCINERATOR_TOXMIX_AIRLOCK_EXTERIOR "toxmix_airlock_exterior"
|
||||
|
||||
//Atmospherics/maintenance incinerator
|
||||
#define INCINERATOR_ATMOS_IGNITER "atmos_incinerator_igniter"
|
||||
#define INCINERATOR_ATMOS_MAINVENT "atmos_incinerator_mainvent"
|
||||
#define INCINERATOR_ATMOS_AUXVENT "atmos_incinerator_auxvent"
|
||||
#define INCINERATOR_ATMOS_DP_VENTPUMP "atmos_incinerator_airlock_pump"
|
||||
#define INCINERATOR_ATMOS_AIRLOCK_SENSOR "atmos_incinerator_airlock_sensor"
|
||||
#define INCINERATOR_ATMOS_AIRLOCK_CONTROLLER "atmos_incinerator_airlock_controller"
|
||||
#define INCINERATOR_ATMOS_AIRLOCK_INTERIOR "atmos_incinerator_airlock_interior"
|
||||
#define INCINERATOR_ATMOS_AIRLOCK_EXTERIOR "atmos_incinerator_airlock_exterior"
|
||||
|
||||
//Syndicate lavaland base incinerator (lavaland_surface_syndicate_base1.dmm)
|
||||
#define INCINERATOR_SYNDICATELAVA_IGNITER "syndicatelava_igniter"
|
||||
#define INCINERATOR_SYNDICATELAVA_MAINVENT "syndicatelava_mainvent"
|
||||
#define INCINERATOR_SYNDICATELAVA_AUXVENT "syndicatelava_auxvent"
|
||||
#define INCINERATOR_SYNDICATELAVA_DP_VENTPUMP "syndicatelava_airlock_pump"
|
||||
#define INCINERATOR_SYNDICATELAVA_AIRLOCK_SENSOR "syndicatelava_airlock_sensor"
|
||||
#define INCINERATOR_SYNDICATELAVA_AIRLOCK_CONTROLLER "syndicatelava_airlock_controller"
|
||||
#define INCINERATOR_SYNDICATELAVA_AIRLOCK_INTERIOR "syndicatelava_airlock_interior"
|
||||
#define INCINERATOR_SYNDICATELAVA_AIRLOCK_EXTERIOR "syndicatelava_airlock_exterior"
|
||||
|
||||
//MULTIPIPES
|
||||
//IF YOU EVER CHANGE THESE CHANGE SPRITES TO MATCH.
|
||||
#define PIPING_LAYER_MIN 1
|
||||
|
||||
@@ -254,6 +254,8 @@ GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE
|
||||
#define ORBITRON "Orbitron"
|
||||
#define SHARE "Share Tech Mono"
|
||||
|
||||
GLOBAL_LIST_INIT(pda_styles, list(MONO, VT, ORBITRON, SHARE))
|
||||
|
||||
//Color Defines
|
||||
#define OOC_COLOR "#002eb8"
|
||||
|
||||
|
||||
@@ -26,6 +26,14 @@
|
||||
return
|
||||
next_click = world.time + 1
|
||||
|
||||
if(multicam_on)
|
||||
var/turf/T = get_turf(A)
|
||||
if(T)
|
||||
for(var/obj/screen/movable/pic_in_pic/ai/P in T.vis_locs)
|
||||
if(P.ai == src)
|
||||
P.Click(params)
|
||||
break
|
||||
|
||||
if(check_click_intercept(params,A))
|
||||
return
|
||||
|
||||
|
||||
@@ -134,6 +134,8 @@
|
||||
#define ui_ai_take_picture "SOUTH:6,WEST+12"
|
||||
#define ui_ai_view_images "SOUTH:6,WEST+13"
|
||||
#define ui_ai_sensor "SOUTH:6,WEST+14"
|
||||
#define ui_ai_multicam "SOUTH+1:6,WEST+13"
|
||||
#define ui_ai_add_multicam "SOUTH+1:6,WEST+14"
|
||||
|
||||
//Pop-up inventory
|
||||
#define ui_shoes "WEST+1:8,SOUTH:5"
|
||||
|
||||
+29
-1
@@ -164,6 +164,26 @@
|
||||
var/mob/living/silicon/S = usr
|
||||
S.toggle_sensors()
|
||||
|
||||
/obj/screen/ai/multicam
|
||||
name = "Multicamera Mode"
|
||||
icon_state = "multicam"
|
||||
|
||||
/obj/screen/ai/multicam/Click()
|
||||
if(..())
|
||||
return
|
||||
var/mob/living/silicon/ai/AI = usr
|
||||
AI.toggle_multicam()
|
||||
|
||||
/obj/screen/ai/add_multicam
|
||||
name = "New Camera"
|
||||
icon_state = "new_cam"
|
||||
|
||||
/obj/screen/ai/add_multicam/Click()
|
||||
if(..())
|
||||
return
|
||||
var/mob/living/silicon/ai/AI = usr
|
||||
AI.drop_new_multicam()
|
||||
|
||||
|
||||
/datum/hud/ai
|
||||
ui_style_icon = 'icons/mob/screen_ai.dmi'
|
||||
@@ -247,12 +267,20 @@
|
||||
using.screen_loc = ui_ai_view_images
|
||||
static_inventory += using
|
||||
|
||||
|
||||
//Medical/Security sensors
|
||||
using = new /obj/screen/ai/sensors()
|
||||
using.screen_loc = ui_ai_sensor
|
||||
static_inventory += using
|
||||
|
||||
//Multicamera mode
|
||||
using = new /obj/screen/ai/multicam()
|
||||
using.screen_loc = ui_ai_multicam
|
||||
static_inventory += using
|
||||
|
||||
//Add multicamera camera
|
||||
using = new /obj/screen/ai/add_multicam()
|
||||
using.screen_loc = ui_ai_add_multicam
|
||||
static_inventory += using
|
||||
|
||||
/mob/living/silicon/ai/create_mob_hud()
|
||||
if(client && !hud_used)
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
var/snap2grid = FALSE
|
||||
var/moved = FALSE
|
||||
var/locked = FALSE
|
||||
var/x_off = -16
|
||||
var/y_off = -16
|
||||
|
||||
//Snap Screen Object
|
||||
//Tied to the grid, snaps to the nearest turf
|
||||
@@ -42,8 +44,8 @@
|
||||
screen_loc = "[screen_loc_X[1]],[screen_loc_Y[1]]"
|
||||
|
||||
else //Normalise Pixel Values (So the object drops at the center of the mouse, not 16 pixels off)
|
||||
var/pix_X = text2num(screen_loc_X[2]) - 16
|
||||
var/pix_Y = text2num(screen_loc_Y[2]) - 16
|
||||
var/pix_X = text2num(screen_loc_X[2]) + x_off
|
||||
var/pix_Y = text2num(screen_loc_Y[2]) + y_off
|
||||
screen_loc = "[screen_loc_X[1]]:[pix_X],[screen_loc_Y[1]]:[pix_Y]"
|
||||
|
||||
moved = screen_loc
|
||||
|
||||
@@ -0,0 +1,144 @@
|
||||
/obj/screen/movable/pic_in_pic
|
||||
name = "Picture-in-picture"
|
||||
screen_loc = "CENTER"
|
||||
plane = GAME_PLANE
|
||||
var/atom/center
|
||||
var/width = 0
|
||||
var/height = 0
|
||||
var/list/shown_to = list()
|
||||
var/list/viewing_turfs = list()
|
||||
var/obj/screen/component_button/button_x
|
||||
var/obj/screen/component_button/button_expand
|
||||
var/obj/screen/component_button/button_shrink
|
||||
|
||||
var/mutable_appearance/standard_background
|
||||
var/const/max_dimensions = 10
|
||||
|
||||
/obj/screen/movable/pic_in_pic/Initialize()
|
||||
. = ..()
|
||||
make_backgrounds()
|
||||
|
||||
/obj/screen/movable/pic_in_pic/Destroy()
|
||||
for(var/C in shown_to)
|
||||
unshow_to(C)
|
||||
QDEL_NULL(button_x)
|
||||
QDEL_NULL(button_shrink)
|
||||
QDEL_NULL(button_expand)
|
||||
return ..()
|
||||
|
||||
/obj/screen/movable/pic_in_pic/component_click(obj/screen/component_button/component, params)
|
||||
if(component == button_x)
|
||||
qdel(src)
|
||||
else if(component == button_expand)
|
||||
set_view_size(width+1, height+1)
|
||||
else if(component == button_shrink)
|
||||
set_view_size(width-1, height-1)
|
||||
|
||||
/obj/screen/movable/pic_in_pic/proc/make_backgrounds()
|
||||
standard_background = new /mutable_appearance()
|
||||
standard_background.icon = 'icons/misc/pic_in_pic.dmi'
|
||||
standard_background.icon_state = "background"
|
||||
standard_background.layer = SPACE_LAYER
|
||||
|
||||
/obj/screen/movable/pic_in_pic/proc/add_buttons()
|
||||
var/static/mutable_appearance/move_tab
|
||||
if(!move_tab)
|
||||
move_tab = new /mutable_appearance()
|
||||
//all these properties are always the same, and since adding something to the overlay
|
||||
//list makes a copy, there is no reason to make a new one each call
|
||||
move_tab.icon = 'icons/misc/pic_in_pic.dmi'
|
||||
move_tab.icon_state = "move"
|
||||
move_tab.plane = HUD_PLANE
|
||||
var/matrix/M = matrix()
|
||||
M.Translate(0, (height + 0.25) * world.icon_size)
|
||||
move_tab.transform = M
|
||||
add_overlay(move_tab)
|
||||
|
||||
if(!button_x)
|
||||
button_x = new /obj/screen/component_button(null, src)
|
||||
var/mutable_appearance/MA = new /mutable_appearance()
|
||||
MA.name = "close"
|
||||
MA.icon = 'icons/misc/pic_in_pic.dmi'
|
||||
MA.icon_state = "x"
|
||||
MA.plane = HUD_PLANE
|
||||
button_x.appearance = MA
|
||||
M = matrix()
|
||||
M.Translate((max(4, width) - 0.75) * world.icon_size, (height + 0.25) * world.icon_size)
|
||||
button_x.transform = M
|
||||
vis_contents += button_x
|
||||
|
||||
if(!button_expand)
|
||||
button_expand = new /obj/screen/component_button(null, src)
|
||||
var/mutable_appearance/MA = new /mutable_appearance()
|
||||
MA.name = "expand"
|
||||
MA.icon = 'icons/misc/pic_in_pic.dmi'
|
||||
MA.icon_state = "expand"
|
||||
MA.plane = HUD_PLANE
|
||||
button_expand.appearance = MA
|
||||
M = matrix()
|
||||
M.Translate(world.icon_size, (height + 0.25) * world.icon_size)
|
||||
button_expand.transform = M
|
||||
vis_contents += button_expand
|
||||
|
||||
if(!button_shrink)
|
||||
button_shrink = new /obj/screen/component_button(null, src)
|
||||
var/mutable_appearance/MA = new /mutable_appearance()
|
||||
MA.name = "shrink"
|
||||
MA.icon = 'icons/misc/pic_in_pic.dmi'
|
||||
MA.icon_state = "shrink"
|
||||
MA.plane = HUD_PLANE
|
||||
button_shrink.appearance = MA
|
||||
M = matrix()
|
||||
M.Translate(2 * world.icon_size, (height + 0.25) * world.icon_size)
|
||||
button_shrink.transform = M
|
||||
vis_contents += button_shrink
|
||||
|
||||
/obj/screen/movable/pic_in_pic/proc/add_background()
|
||||
if((width > 0) && (height > 0))
|
||||
var/matrix/M = matrix()
|
||||
M.Scale(width + 0.5, height + 0.5)
|
||||
M.Translate((width-1)/2 * world.icon_size, (height-1)/2 * world.icon_size)
|
||||
standard_background.transform = M
|
||||
add_overlay(standard_background)
|
||||
|
||||
/obj/screen/movable/pic_in_pic/proc/set_view_size(width, height, do_refresh = TRUE)
|
||||
width = CLAMP(width, 0, max_dimensions)
|
||||
height = CLAMP(height, 0, max_dimensions)
|
||||
src.width = width
|
||||
src.height = height
|
||||
|
||||
y_off = -height * world.icon_size - 16
|
||||
|
||||
cut_overlays()
|
||||
add_background()
|
||||
add_buttons()
|
||||
if(do_refresh)
|
||||
refresh_view()
|
||||
|
||||
/obj/screen/movable/pic_in_pic/proc/set_view_center(atom/target, do_refresh = TRUE)
|
||||
center = target
|
||||
if(do_refresh)
|
||||
refresh_view()
|
||||
|
||||
/obj/screen/movable/pic_in_pic/proc/refresh_view()
|
||||
vis_contents -= viewing_turfs
|
||||
if(!width || !height)
|
||||
return
|
||||
var/turf/T = get_turf(center)
|
||||
if(!T)
|
||||
return
|
||||
var/turf/lowerleft = locate(max(1, T.x - round(width/2)), max(1, T.y - round(height/2)), T.z)
|
||||
var/turf/upperright = locate(min(world.maxx, lowerleft.x + width - 1), min(world.maxy, lowerleft.y + height - 1), lowerleft.z)
|
||||
viewing_turfs = block(lowerleft, upperright)
|
||||
vis_contents += viewing_turfs
|
||||
|
||||
|
||||
/obj/screen/movable/pic_in_pic/proc/show_to(client/C)
|
||||
if(C)
|
||||
shown_to[C] = 1
|
||||
C.screen += src
|
||||
|
||||
/obj/screen/movable/pic_in_pic/proc/unshow_to(client/C)
|
||||
if(C)
|
||||
shown_to -= C
|
||||
C.screen -= src
|
||||
@@ -30,6 +30,9 @@
|
||||
/obj/screen/orbit()
|
||||
return
|
||||
|
||||
/obj/screen/proc/component_click(obj/screen/component_button/component, params)
|
||||
return
|
||||
|
||||
/obj/screen/text
|
||||
icon = null
|
||||
icon_state = null
|
||||
@@ -604,3 +607,15 @@
|
||||
holder.screen -= src
|
||||
holder = null
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/screen/component_button
|
||||
var/obj/screen/parent
|
||||
|
||||
/obj/screen/component_button/Initialize(mapload, obj/screen/parent)
|
||||
. = ..()
|
||||
src.parent = parent
|
||||
|
||||
/obj/screen/component_button/Click(params)
|
||||
if(parent)
|
||||
parent.component_click(src, params)
|
||||
|
||||
@@ -288,6 +288,11 @@
|
||||
|
||||
/datum/config_entry/flag/shift_time_realtime
|
||||
|
||||
/datum/config_entry/keyed_number_list/antag_rep
|
||||
|
||||
/datum/config_entry/number/monkeycap
|
||||
config_entry_value = 64
|
||||
min_val = 0
|
||||
|
||||
//Cit changes - Adds config options for crew objectives and miscreants
|
||||
/datum/config_entry/flag/allow_crew_objectives
|
||||
@@ -304,4 +309,4 @@
|
||||
|
||||
/datum/config_entry/number/nightshift_finish
|
||||
config_entry_value = 6
|
||||
//End of Cit changes
|
||||
//End of Cit changes
|
||||
|
||||
@@ -6,16 +6,26 @@ SUBSYSTEM_DEF(icon_smooth)
|
||||
flags = SS_TICKER
|
||||
|
||||
var/list/smooth_queue = list()
|
||||
var/list/deferred = list()
|
||||
|
||||
/datum/controller/subsystem/icon_smooth/fire()
|
||||
while(smooth_queue.len)
|
||||
var/atom/A = smooth_queue[smooth_queue.len]
|
||||
smooth_queue.len--
|
||||
smooth_icon(A)
|
||||
var/list/cached = smooth_queue
|
||||
while(cached.len)
|
||||
var/atom/A = cached[cached.len]
|
||||
cached.len--
|
||||
if (A.flags_1 & INITIALIZED_1)
|
||||
smooth_icon(A)
|
||||
else
|
||||
deferred += A
|
||||
if (MC_TICK_CHECK)
|
||||
return
|
||||
if (!smooth_queue.len)
|
||||
can_fire = 0
|
||||
|
||||
if (!cached.len)
|
||||
if (deferred.len)
|
||||
smooth_queue = deferred
|
||||
deferred = cached
|
||||
else
|
||||
can_fire = 0
|
||||
|
||||
/datum/controller/subsystem/icon_smooth/Initialize()
|
||||
smooth_zlevel(1,TRUE)
|
||||
|
||||
@@ -422,7 +422,7 @@ SUBSYSTEM_DEF(job)
|
||||
else
|
||||
M = H
|
||||
|
||||
SSpersistence.antag_rep_change[M.client.ckey] += job.antag_rep
|
||||
SSpersistence.antag_rep_change[M.client.ckey] += job.GetAntagRep()
|
||||
|
||||
to_chat(M, "<b>You are the [rank].</b>")
|
||||
if(job)
|
||||
|
||||
@@ -121,7 +121,7 @@ SUBSYSTEM_DEF(mapping)
|
||||
z_list = SSmapping.z_list
|
||||
|
||||
#define INIT_ANNOUNCE(X) to_chat(world, "<span class='boldannounce'>[X]</span>"); log_world(X)
|
||||
/datum/controller/subsystem/mapping/proc/LoadGroup(list/errorList, name, path, files, list/traits, list/default_traits)
|
||||
/datum/controller/subsystem/mapping/proc/LoadGroup(list/errorList, name, path, files, list/traits, list/default_traits, silent = FALSE)
|
||||
var/start_time = REALTIMEOFDAY
|
||||
|
||||
if (!islist(files)) // handle single-level maps
|
||||
@@ -157,8 +157,8 @@ SUBSYSTEM_DEF(mapping)
|
||||
var/full_path = "_maps/[path]/[file]"
|
||||
if(!loader.load_map(file(full_path), 0, 0, start_z + files[file], no_changeturf = TRUE))
|
||||
errorList |= full_path
|
||||
|
||||
INIT_ANNOUNCE("Loaded [name] in [(REALTIMEOFDAY - start_time)/10]s!")
|
||||
if(!silent)
|
||||
INIT_ANNOUNCE("Loaded [name] in [(REALTIMEOFDAY - start_time)/10]s!")
|
||||
|
||||
/datum/controller/subsystem/mapping/proc/loadWorld()
|
||||
//if any of these fail, something has gone horribly, HORRIBLY, wrong
|
||||
@@ -187,9 +187,6 @@ SUBSYSTEM_DEF(mapping)
|
||||
LoadGroup(FailedZs, "Lavaland", "map_files/Mining", "Lavaland.dmm", default_traits = ZTRAITS_LAVALAND)
|
||||
else if (!isnull(config.minetype))
|
||||
INIT_ANNOUNCE("WARNING: An unknown minetype '[config.minetype]' was set! This is being ignored! Update the maploader code!")
|
||||
|
||||
// load Reebe
|
||||
LoadGroup(FailedZs, "Reebe", "map_files/generic", "City_of_Cogs.dmm", default_traits = ZTRAITS_REEBE)
|
||||
#endif
|
||||
|
||||
if(LAZYLEN(FailedZs)) //but seriously, unless the server's filesystem is messed up this will never happen
|
||||
@@ -367,14 +364,14 @@ GLOBAL_LIST_EMPTY(the_station_areas)
|
||||
away_level = template.load_new_z()
|
||||
else
|
||||
return
|
||||
|
||||
|
||||
message_admins("Admin [key_name_admin(usr)] has loaded [away_name] away mission.")
|
||||
log_admin("Admin [key_name(usr)] has loaded [away_name] away mission.")
|
||||
if(!away_level)
|
||||
message_admins("Loading [away_name] failed!")
|
||||
return
|
||||
|
||||
|
||||
|
||||
|
||||
if(GLOB.the_gateway)
|
||||
//Link any found away gate with station gate
|
||||
var/obj/machinery/gateway/centeraway/new_gate
|
||||
|
||||
@@ -564,19 +564,6 @@
|
||||
/datum/action/innate/proc/Deactivate()
|
||||
return
|
||||
|
||||
//Preset for action that call specific procs (consider innate).
|
||||
/datum/action/generic
|
||||
check_flags = 0
|
||||
var/procname
|
||||
|
||||
/datum/action/generic/Trigger()
|
||||
if(!..())
|
||||
return 0
|
||||
if(target && procname)
|
||||
call(target, procname)(usr)
|
||||
return 1
|
||||
|
||||
|
||||
//Preset for an action with a cooldown
|
||||
|
||||
/datum/action/cooldown
|
||||
|
||||
@@ -11,13 +11,16 @@
|
||||
/obj/structure/lattice,
|
||||
/obj/structure/stone_tile,
|
||||
/obj/item/projectile,
|
||||
/obj/effect/projectile,
|
||||
/obj/effect/portal,
|
||||
/obj/effect/abstract,
|
||||
/obj/effect/hotspot,
|
||||
/obj/effect/landmark,
|
||||
/obj/effect/temp_visual,
|
||||
/obj/effect/light_emitter/tendril,
|
||||
/obj/effect/collapse))
|
||||
/obj/effect/collapse,
|
||||
/obj/effect/particle_effect/ion_trails
|
||||
))
|
||||
|
||||
/datum/component/chasm/Initialize(turf/target)
|
||||
RegisterSignal(list(COMSIG_MOVABLE_CROSSED, COMSIG_ATOM_ENTERED), .proc/Entered)
|
||||
|
||||
@@ -125,7 +125,7 @@ Bonus
|
||||
symptom_delay_max = 140
|
||||
if(A.properties["stage_rate"] >= 8) //serious boom when wet
|
||||
explosion_power = 2
|
||||
if(A.properties["transmission"] >= 8) //extra chemicals
|
||||
if(A.properties["transmittable"] >= 8) //extra chemicals
|
||||
chems = TRUE
|
||||
|
||||
/datum/symptom/alkali/Activate(datum/disease/advance/A)
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
/datum/symptom/heal/starlight/Start(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
if(A.properties["transmission"] >= 6)
|
||||
if(A.properties["transmittable"] >= 6)
|
||||
nearspace_penalty = 1
|
||||
if(A.properties["stage_rate"] >= 6)
|
||||
power = 2
|
||||
@@ -358,7 +358,7 @@
|
||||
return
|
||||
if(A.properties["stage_rate"] >= 7)
|
||||
power = 2
|
||||
if(A.properties["trasmission"] >= 6)
|
||||
if(A.properties["transmittable"] >= 6)
|
||||
temp_rate = 4
|
||||
|
||||
/datum/symptom/heal/plasma/CanHeal(datum/disease/advance/A)
|
||||
@@ -425,7 +425,7 @@
|
||||
return
|
||||
if(A.properties["resistance"] >= 7)
|
||||
power = 2
|
||||
if(A.properties["trasmission"] >= 6)
|
||||
if(A.properties["transmittable"] >= 6)
|
||||
cellular_damage = TRUE
|
||||
|
||||
/datum/symptom/heal/radiation/CanHeal(datum/disease/advance/A)
|
||||
|
||||
@@ -33,10 +33,10 @@ Bonus
|
||||
/datum/symptom/fever/Start(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
if(A.properties["stage_speed"] >= 5) //dangerous cold
|
||||
if(A.properties["stage_rate"] >= 5) //dangerous cold
|
||||
power = 1.5
|
||||
unsafe = TRUE
|
||||
if(A.properties["stage_speed"] >= 10)
|
||||
if(A.properties["stage_rate"] >= 10)
|
||||
power = 2.5
|
||||
|
||||
/datum/symptom/shivering/Activate(datum/disease/advance/A)
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
if(affected_mob.notransform)
|
||||
return
|
||||
affected_mob.notransform = 1
|
||||
for(var/obj/item/W in affected_mob.get_equipped_items())
|
||||
for(var/obj/item/W in affected_mob.get_equipped_items(TRUE))
|
||||
affected_mob.dropItemToGround(W)
|
||||
for(var/obj/item/I in affected_mob.held_items)
|
||||
affected_mob.dropItemToGround(I)
|
||||
|
||||
@@ -60,9 +60,6 @@
|
||||
user.remote_control = null
|
||||
|
||||
if(!QDELETED(eye))
|
||||
if(user_good && user.client)
|
||||
for(var/datum/camerachunk/chunk in eye.visibleCameraChunks)
|
||||
chunk.remove(eye)
|
||||
qdel(eye)
|
||||
eye = null
|
||||
|
||||
@@ -205,7 +202,7 @@
|
||||
/datum/holorecord/proc/set_caller_image(mob/user)
|
||||
var/olddir = user.dir
|
||||
user.setDir(SOUTH)
|
||||
caller_image = getFlatIcon(user)
|
||||
caller_image = image(user)
|
||||
user.setDir(olddir)
|
||||
|
||||
/obj/item/disk/holodisk
|
||||
@@ -284,7 +281,7 @@
|
||||
else
|
||||
var/datum/preset_holoimage/H = new preset_image_type
|
||||
record.caller_image = H.build_image()
|
||||
|
||||
|
||||
//These build caller image from outfit and some additional data, for use by mappers for ruin holorecords
|
||||
/datum/preset_holoimage
|
||||
var/nonhuman_mobtype //Fill this if you just want something nonhuman
|
||||
@@ -303,7 +300,7 @@
|
||||
mannequin.equipOutfit(outfit_type,TRUE)
|
||||
mannequin.setDir(SOUTH)
|
||||
COMPILE_OVERLAYS(mannequin)
|
||||
. = getFlatIcon(mannequin)
|
||||
. = image(mannequin)
|
||||
unset_busy_human_dummy("HOLODISK_PRESET")
|
||||
|
||||
/obj/item/disk/holodisk/example
|
||||
@@ -347,4 +344,3 @@
|
||||
|
||||
/datum/preset_holoimage/clown
|
||||
outfit_type = /datum/outfit/job/clown
|
||||
|
||||
|
||||
@@ -115,6 +115,14 @@
|
||||
// Generates nothing but atmos runtimes and salt
|
||||
cost = 0
|
||||
|
||||
/datum/map_template/ruin/lavaland/ratvar
|
||||
name = "Dead God"
|
||||
id = "ratvar"
|
||||
description = "Ratvars final resting place."
|
||||
suffix = "lavaland_surface_dead_ratvar.dmm"
|
||||
cost = 0
|
||||
allow_duplicates = FALSE
|
||||
|
||||
/datum/map_template/ruin/lavaland/hierophant
|
||||
name = "Hierophant's Arena"
|
||||
id = "hierophant"
|
||||
|
||||
@@ -55,6 +55,9 @@
|
||||
/datum/quirk/proc/post_add() //for text, disclaimers etc. given after you spawn in with the trait
|
||||
/datum/quirk/proc/on_transfer() //code called when the trait is transferred to a new mob
|
||||
|
||||
/datum/quirk/proc/clone_data() //return additional data that should be remembered by cloning
|
||||
/datum/quirk/proc/on_clone(data) //create the quirk from clone data
|
||||
|
||||
/datum/quirk/process()
|
||||
if(QDELETED(quirk_holder))
|
||||
quirk_holder = null
|
||||
|
||||
@@ -85,7 +85,11 @@
|
||||
quirk_holder.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "family_heirloom")
|
||||
quirk_holder.SendSignal(COMSIG_ADD_MOOD_EVENT, "family_heirloom_missing", /datum/mood_event/family_heirloom_missing)
|
||||
|
||||
/datum/quirk/family_heirloom/clone_data()
|
||||
return heirloom
|
||||
|
||||
/datum/quirk/family_heirloom/on_clone(data)
|
||||
heirloom = data
|
||||
|
||||
/datum/quirk/heavy_sleeper
|
||||
name = "Heavy Sleeper"
|
||||
|
||||
@@ -425,23 +425,6 @@
|
||||
/atom/proc/update_remote_sight(mob/living/user)
|
||||
return
|
||||
|
||||
/atom/proc/add_vomit_floor(mob/living/carbon/M, toxvomit = 0)
|
||||
if(isturf(src))
|
||||
var/obj/effect/decal/cleanable/vomit/V = new /obj/effect/decal/cleanable/vomit(src, M.get_static_viruses())
|
||||
// Make toxins vomit look different
|
||||
if(toxvomit)
|
||||
V.icon_state = "vomittox_[pick(1,4)]"
|
||||
if(M.reagents)
|
||||
clear_reagents_to_vomit_pool(M,V)
|
||||
|
||||
/atom/proc/clear_reagents_to_vomit_pool(mob/living/carbon/M, obj/effect/decal/cleanable/vomit/V)
|
||||
M.reagents.trans_to(V, M.reagents.total_volume / 10)
|
||||
for(var/datum/reagent/R in M.reagents.reagent_list) //clears the stomach of anything that might be digested as food
|
||||
if(istype(R, /datum/reagent/consumable))
|
||||
var/datum/reagent/consumable/nutri_check = R
|
||||
if(nutri_check.nutriment_factor >0)
|
||||
M.reagents.remove_reagent(R.id,R.volume)
|
||||
|
||||
|
||||
//Hook for running code when a dir change occurs
|
||||
/atom/proc/setDir(newdir)
|
||||
|
||||
+14
-10
@@ -161,41 +161,45 @@
|
||||
else //Diagonal move, split it into cardinal moves
|
||||
moving_diagonally = FIRST_DIAG_STEP
|
||||
var/first_step_dir
|
||||
// The `&& moving_diagonally` checks are so that a forceMove taking
|
||||
// place due to a Crossed, Collided, etc. call will interrupt
|
||||
// the second half of the diagonal movement, or the second attempt
|
||||
// at a first half if step() fails because we hit something.
|
||||
if (direct & NORTH)
|
||||
if (direct & EAST)
|
||||
if (step(src, NORTH))
|
||||
if (step(src, NORTH) && moving_diagonally)
|
||||
first_step_dir = NORTH
|
||||
moving_diagonally = SECOND_DIAG_STEP
|
||||
. = step(src, EAST)
|
||||
else if (step(src, EAST))
|
||||
else if (moving_diagonally && step(src, EAST))
|
||||
first_step_dir = EAST
|
||||
moving_diagonally = SECOND_DIAG_STEP
|
||||
. = step(src, NORTH)
|
||||
else if (direct & WEST)
|
||||
if (step(src, NORTH))
|
||||
if (step(src, NORTH) && moving_diagonally)
|
||||
first_step_dir = NORTH
|
||||
moving_diagonally = SECOND_DIAG_STEP
|
||||
. = step(src, WEST)
|
||||
else if (step(src, WEST))
|
||||
else if (moving_diagonally && step(src, WEST))
|
||||
first_step_dir = WEST
|
||||
moving_diagonally = SECOND_DIAG_STEP
|
||||
. = step(src, NORTH)
|
||||
else if (direct & SOUTH)
|
||||
if (direct & EAST)
|
||||
if (step(src, SOUTH))
|
||||
if (step(src, SOUTH) && moving_diagonally)
|
||||
first_step_dir = SOUTH
|
||||
moving_diagonally = SECOND_DIAG_STEP
|
||||
. = step(src, EAST)
|
||||
else if (step(src, EAST))
|
||||
else if (moving_diagonally && step(src, EAST))
|
||||
first_step_dir = EAST
|
||||
moving_diagonally = SECOND_DIAG_STEP
|
||||
. = step(src, SOUTH)
|
||||
else if (direct & WEST)
|
||||
if (step(src, SOUTH))
|
||||
if (step(src, SOUTH) && moving_diagonally)
|
||||
first_step_dir = SOUTH
|
||||
moving_diagonally = SECOND_DIAG_STEP
|
||||
. = step(src, WEST)
|
||||
else if (step(src, WEST))
|
||||
else if (moving_diagonally && step(src, WEST))
|
||||
first_step_dir = WEST
|
||||
moving_diagonally = SECOND_DIAG_STEP
|
||||
. = step(src, SOUTH)
|
||||
@@ -310,8 +314,8 @@
|
||||
var/area/old_area = get_area(oldloc)
|
||||
var/area/destarea = get_area(destination)
|
||||
|
||||
|
||||
loc = destination
|
||||
moving_diagonally = 0
|
||||
|
||||
if(!same_loc)
|
||||
if(oldloc)
|
||||
@@ -558,7 +562,7 @@
|
||||
if(visual_effect_icon)
|
||||
I = image('icons/effects/effects.dmi', A, visual_effect_icon, A.layer + 0.1)
|
||||
else if(used_item)
|
||||
I = image(used_item.icon, A, used_item.icon_state, A.layer + 0.1)
|
||||
I = image(icon = used_item, loc = A, layer = A.layer + 0.1)
|
||||
|
||||
// Scale the icon.
|
||||
I.transform *= 0.75
|
||||
|
||||
@@ -143,6 +143,12 @@ Credit where due:
|
||||
var/datum/team/clockcult/main_clockcult
|
||||
|
||||
/datum/game_mode/clockwork_cult/pre_setup()
|
||||
var/list/errorList = list()
|
||||
SSmapping.LoadGroup(errorList, "Reebe", "map_files/generic", "City_of_Cogs.dmm", default_traits = ZTRAITS_REEBE, silent = TRUE)
|
||||
if(errorList.len) // reebe failed to load
|
||||
message_admins("Rebee failed to load!")
|
||||
log_game("Rebee failed to load!")
|
||||
return FALSE
|
||||
if(CONFIG_GET(flag/protect_roles_from_antagonist))
|
||||
restricted_jobs += protected_jobs
|
||||
if(CONFIG_GET(flag/protect_assistant_from_antagonist))
|
||||
|
||||
@@ -1,154 +1,164 @@
|
||||
#define AIRLOCK_CONTROL_RANGE 5
|
||||
|
||||
// This code allows for airlocks to be controlled externally by setting an id_tag and comm frequency (disables ID access)
|
||||
/obj/machinery/door/airlock
|
||||
var/id_tag
|
||||
var/frequency
|
||||
var/datum/radio_frequency/radio_connection
|
||||
|
||||
|
||||
/obj/machinery/door/airlock/receive_signal(datum/signal/signal)
|
||||
if(!signal)
|
||||
return
|
||||
|
||||
if(id_tag != signal.data["tag"] || !signal.data["command"])
|
||||
return
|
||||
|
||||
switch(signal.data["command"])
|
||||
if("open")
|
||||
open(1)
|
||||
|
||||
if("close")
|
||||
close(1)
|
||||
|
||||
if("unlock")
|
||||
locked = FALSE
|
||||
update_icon()
|
||||
|
||||
if("lock")
|
||||
locked = TRUE
|
||||
update_icon()
|
||||
|
||||
if("secure_open")
|
||||
locked = FALSE
|
||||
update_icon()
|
||||
|
||||
sleep(2)
|
||||
open(1)
|
||||
|
||||
locked = TRUE
|
||||
update_icon()
|
||||
|
||||
if("secure_close")
|
||||
locked = FALSE
|
||||
close(1)
|
||||
|
||||
locked = TRUE
|
||||
sleep(2)
|
||||
update_icon()
|
||||
|
||||
send_status()
|
||||
|
||||
|
||||
/obj/machinery/door/airlock/proc/send_status()
|
||||
if(radio_connection)
|
||||
var/datum/signal/signal = new(list(
|
||||
"tag" = id_tag,
|
||||
"timestamp" = world.time,
|
||||
"door_status" = density ? "closed" : "open",
|
||||
"lock_status" = locked ? "locked" : "unlocked"
|
||||
))
|
||||
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK)
|
||||
|
||||
|
||||
/obj/machinery/door/airlock/open(surpress_send)
|
||||
. = ..()
|
||||
if(!surpress_send)
|
||||
send_status()
|
||||
|
||||
|
||||
/obj/machinery/door/airlock/close(surpress_send)
|
||||
. = ..()
|
||||
if(!surpress_send)
|
||||
send_status()
|
||||
|
||||
|
||||
/obj/machinery/door/airlock/proc/set_frequency(new_frequency)
|
||||
SSradio.remove_object(src, frequency)
|
||||
if(new_frequency)
|
||||
frequency = new_frequency
|
||||
radio_connection = SSradio.add_object(src, frequency, RADIO_AIRLOCK)
|
||||
|
||||
/obj/machinery/door/airlock/Destroy()
|
||||
if(frequency)
|
||||
SSradio.remove_object(src,frequency)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/airlock_sensor
|
||||
icon = 'icons/obj/airlock_machines.dmi'
|
||||
icon_state = "airlock_sensor_off"
|
||||
name = "airlock sensor"
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
||||
|
||||
anchored = TRUE
|
||||
power_channel = ENVIRON
|
||||
|
||||
var/id_tag
|
||||
var/master_tag
|
||||
var/frequency = FREQ_AIRLOCK_CONTROL
|
||||
|
||||
var/datum/radio_frequency/radio_connection
|
||||
|
||||
var/on = TRUE
|
||||
var/alert = FALSE
|
||||
|
||||
|
||||
/obj/machinery/airlock_sensor/update_icon()
|
||||
if(on)
|
||||
if(alert)
|
||||
icon_state = "airlock_sensor_alert"
|
||||
else
|
||||
icon_state = "airlock_sensor_standby"
|
||||
else
|
||||
icon_state = "airlock_sensor_off"
|
||||
|
||||
/obj/machinery/airlock_sensor/attack_hand(mob/user)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
var/datum/signal/signal = new(list(
|
||||
"tag" = master_tag,
|
||||
"command" = "cycle"
|
||||
))
|
||||
|
||||
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK)
|
||||
flick("airlock_sensor_cycle", src)
|
||||
|
||||
/obj/machinery/airlock_sensor/process()
|
||||
if(on)
|
||||
var/datum/gas_mixture/air_sample = return_air()
|
||||
var/pressure = round(air_sample.return_pressure(),0.1)
|
||||
alert = (pressure < ONE_ATMOSPHERE*0.8)
|
||||
|
||||
var/datum/signal/signal = new(list(
|
||||
"tag" = id_tag,
|
||||
"timestamp" = world.time,
|
||||
"pressure" = num2text(pressure)
|
||||
))
|
||||
|
||||
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK)
|
||||
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/airlock_sensor/proc/set_frequency(new_frequency)
|
||||
SSradio.remove_object(src, frequency)
|
||||
frequency = new_frequency
|
||||
radio_connection = SSradio.add_object(src, frequency, RADIO_AIRLOCK)
|
||||
|
||||
/obj/machinery/airlock_sensor/Initialize()
|
||||
. = ..()
|
||||
set_frequency(frequency)
|
||||
|
||||
/obj/machinery/airlock_sensor/Destroy()
|
||||
SSradio.remove_object(src,frequency)
|
||||
return ..()
|
||||
#define AIRLOCK_CONTROL_RANGE 5
|
||||
|
||||
// This code allows for airlocks to be controlled externally by setting an id_tag and comm frequency (disables ID access)
|
||||
/obj/machinery/door/airlock
|
||||
var/id_tag
|
||||
var/frequency
|
||||
var/datum/radio_frequency/radio_connection
|
||||
|
||||
|
||||
/obj/machinery/door/airlock/receive_signal(datum/signal/signal)
|
||||
if(!signal)
|
||||
return
|
||||
|
||||
if(id_tag != signal.data["tag"] || !signal.data["command"])
|
||||
return
|
||||
|
||||
switch(signal.data["command"])
|
||||
if("open")
|
||||
open(1)
|
||||
|
||||
if("close")
|
||||
close(1)
|
||||
|
||||
if("unlock")
|
||||
locked = FALSE
|
||||
update_icon()
|
||||
|
||||
if("lock")
|
||||
locked = TRUE
|
||||
update_icon()
|
||||
|
||||
if("secure_open")
|
||||
locked = FALSE
|
||||
update_icon()
|
||||
|
||||
sleep(2)
|
||||
open(1)
|
||||
|
||||
locked = TRUE
|
||||
update_icon()
|
||||
|
||||
if("secure_close")
|
||||
locked = FALSE
|
||||
close(1)
|
||||
|
||||
locked = TRUE
|
||||
sleep(2)
|
||||
update_icon()
|
||||
|
||||
send_status()
|
||||
|
||||
|
||||
/obj/machinery/door/airlock/proc/send_status()
|
||||
if(radio_connection)
|
||||
var/datum/signal/signal = new(list(
|
||||
"tag" = id_tag,
|
||||
"timestamp" = world.time,
|
||||
"door_status" = density ? "closed" : "open",
|
||||
"lock_status" = locked ? "locked" : "unlocked"
|
||||
))
|
||||
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK)
|
||||
|
||||
|
||||
/obj/machinery/door/airlock/open(surpress_send)
|
||||
. = ..()
|
||||
if(!surpress_send)
|
||||
send_status()
|
||||
|
||||
|
||||
/obj/machinery/door/airlock/close(surpress_send)
|
||||
. = ..()
|
||||
if(!surpress_send)
|
||||
send_status()
|
||||
|
||||
|
||||
/obj/machinery/door/airlock/proc/set_frequency(new_frequency)
|
||||
SSradio.remove_object(src, frequency)
|
||||
if(new_frequency)
|
||||
frequency = new_frequency
|
||||
radio_connection = SSradio.add_object(src, frequency, RADIO_AIRLOCK)
|
||||
|
||||
/obj/machinery/door/airlock/Destroy()
|
||||
if(frequency)
|
||||
SSradio.remove_object(src,frequency)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/airlock_sensor
|
||||
icon = 'icons/obj/airlock_machines.dmi'
|
||||
icon_state = "airlock_sensor_off"
|
||||
name = "airlock sensor"
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
||||
|
||||
power_channel = ENVIRON
|
||||
|
||||
var/id_tag
|
||||
var/master_tag
|
||||
var/frequency = FREQ_AIRLOCK_CONTROL
|
||||
|
||||
var/datum/radio_frequency/radio_connection
|
||||
|
||||
var/on = TRUE
|
||||
var/alert = FALSE
|
||||
|
||||
/obj/machinery/airlock_sensor/incinerator_toxmix
|
||||
id_tag = INCINERATOR_TOXMIX_AIRLOCK_SENSOR
|
||||
master_tag = INCINERATOR_TOXMIX_AIRLOCK_CONTROLLER
|
||||
|
||||
/obj/machinery/airlock_sensor/incinerator_atmos
|
||||
id_tag = INCINERATOR_ATMOS_AIRLOCK_SENSOR
|
||||
master_tag = INCINERATOR_ATMOS_AIRLOCK_CONTROLLER
|
||||
|
||||
/obj/machinery/airlock_sensor/incinerator_syndicatelava
|
||||
id_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_SENSOR
|
||||
master_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_CONTROLLER
|
||||
|
||||
/obj/machinery/airlock_sensor/update_icon()
|
||||
if(on)
|
||||
if(alert)
|
||||
icon_state = "airlock_sensor_alert"
|
||||
else
|
||||
icon_state = "airlock_sensor_standby"
|
||||
else
|
||||
icon_state = "airlock_sensor_off"
|
||||
|
||||
/obj/machinery/airlock_sensor/attack_hand(mob/user)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
var/datum/signal/signal = new(list(
|
||||
"tag" = master_tag,
|
||||
"command" = "cycle"
|
||||
))
|
||||
|
||||
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK)
|
||||
flick("airlock_sensor_cycle", src)
|
||||
|
||||
/obj/machinery/airlock_sensor/process()
|
||||
if(on)
|
||||
var/datum/gas_mixture/air_sample = return_air()
|
||||
var/pressure = round(air_sample.return_pressure(),0.1)
|
||||
alert = (pressure < ONE_ATMOSPHERE*0.8)
|
||||
|
||||
var/datum/signal/signal = new(list(
|
||||
"tag" = id_tag,
|
||||
"timestamp" = world.time,
|
||||
"pressure" = num2text(pressure)
|
||||
))
|
||||
|
||||
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK)
|
||||
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/airlock_sensor/proc/set_frequency(new_frequency)
|
||||
SSradio.remove_object(src, frequency)
|
||||
frequency = new_frequency
|
||||
radio_connection = SSradio.add_object(src, frequency, RADIO_AIRLOCK)
|
||||
|
||||
/obj/machinery/airlock_sensor/Initialize()
|
||||
. = ..()
|
||||
set_frequency(frequency)
|
||||
|
||||
/obj/machinery/airlock_sensor/Destroy()
|
||||
SSradio.remove_object(src,frequency)
|
||||
return ..()
|
||||
|
||||
@@ -190,6 +190,31 @@
|
||||
device = new /obj/item/assembly/control(src)
|
||||
..()
|
||||
|
||||
/obj/machinery/button/door/incinerator_vent_toxmix
|
||||
name = "combustion chamber vent control"
|
||||
id = INCINERATOR_TOXMIX_VENT
|
||||
req_access = list(ACCESS_TOX)
|
||||
|
||||
/obj/machinery/button/door/incinerator_vent_atmos_main
|
||||
name = "turbine vent control"
|
||||
id = INCINERATOR_ATMOS_MAINVENT
|
||||
req_one_access = list(ACCESS_ATMOSPHERICS, ACCESS_MAINT_TUNNELS)
|
||||
|
||||
/obj/machinery/button/door/incinerator_vent_atmos_aux
|
||||
name = "combustion chamber vent control"
|
||||
id = INCINERATOR_ATMOS_AUXVENT
|
||||
req_one_access = list(ACCESS_ATMOSPHERICS, ACCESS_MAINT_TUNNELS)
|
||||
|
||||
/obj/machinery/button/door/incinerator_vent_syndicatelava_main
|
||||
name = "turbine vent control"
|
||||
id = INCINERATOR_SYNDICATELAVA_MAINVENT
|
||||
req_access = list(ACCESS_SYNDICATE)
|
||||
|
||||
/obj/machinery/button/door/incinerator_vent_syndicatelava_aux
|
||||
name = "combustion chamber vent control"
|
||||
id = INCINERATOR_SYNDICATELAVA_AUXVENT
|
||||
req_access = list(ACCESS_SYNDICATE)
|
||||
|
||||
/obj/machinery/button/massdriver
|
||||
name = "mass driver button"
|
||||
desc = "A remote control switch for a mass driver."
|
||||
@@ -204,6 +229,19 @@
|
||||
skin = "launcher"
|
||||
device_type = /obj/item/assembly/control/igniter
|
||||
|
||||
/obj/machinery/button/ignition/incinerator
|
||||
name = "combustion chamber ignition switch"
|
||||
desc = "A remote control switch for the combustion chamber's igniter."
|
||||
|
||||
/obj/machinery/button/ignition/incinerator/toxmix
|
||||
id = INCINERATOR_TOXMIX_IGNITER
|
||||
|
||||
/obj/machinery/button/ignition/incinerator/atmos
|
||||
id = INCINERATOR_ATMOS_IGNITER
|
||||
|
||||
/obj/machinery/button/ignition/incinerator/syndicatelava
|
||||
id = INCINERATOR_SYNDICATELAVA_IGNITER
|
||||
|
||||
/obj/machinery/button/flasher
|
||||
name = "flasher button"
|
||||
desc = "A remote control switch for a mounted flasher."
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
integrity_failure = 50
|
||||
var/list/network = list("ss13")
|
||||
var/c_tag = null
|
||||
var/c_tag_order = 999
|
||||
var/status = TRUE
|
||||
anchored = TRUE
|
||||
var/start_active = FALSE //If it ignores the random chance to start broken on round start
|
||||
@@ -36,6 +35,7 @@
|
||||
var/alarm_on = FALSE
|
||||
var/busy = FALSE
|
||||
var/emped = FALSE //Number of consecutive EMP's on this camera
|
||||
var/in_use_lights = 0
|
||||
|
||||
// Upgrades bitflag
|
||||
var/upgrades = 0
|
||||
@@ -285,7 +285,7 @@
|
||||
else if (stat & EMPED)
|
||||
icon_state = "[initial(icon_state)]emp"
|
||||
else
|
||||
icon_state = "[initial(icon_state)]"
|
||||
icon_state = "[initial(icon_state)][in_use_lights ? "_in_use" : ""]"
|
||||
|
||||
/obj/machinery/camera/proc/toggle_cam(mob/user, displaymessage = 1)
|
||||
status = !status
|
||||
|
||||
@@ -146,10 +146,6 @@
|
||||
for (var/j = 1 to i - 1)
|
||||
a = L[j]
|
||||
b = L[j + 1]
|
||||
if (a.c_tag_order != b.c_tag_order)
|
||||
if (a.c_tag_order > b.c_tag_order)
|
||||
L.Swap(j, j + 1)
|
||||
else
|
||||
if (sorttext(a.c_tag, b.c_tag) < 0)
|
||||
L.Swap(j, j + 1)
|
||||
if (sorttext(a.c_tag, b.c_tag) < 0)
|
||||
L.Swap(j, j + 1)
|
||||
return L
|
||||
|
||||
@@ -204,7 +204,8 @@
|
||||
H.faction |= factions
|
||||
|
||||
for(var/V in quirks)
|
||||
new V(H)
|
||||
var/datum/quirk/Q = new V(H)
|
||||
Q.on_clone(quirks[V])
|
||||
|
||||
H.set_cloned_appearance()
|
||||
|
||||
|
||||
@@ -51,7 +51,9 @@
|
||||
/obj/item/hot_potato/harmless/toy = 1,
|
||||
/obj/item/card/emagfake = 1,
|
||||
/obj/item/clothing/shoes/wheelys = 2,
|
||||
/obj/item/clothing/shoes/kindleKicks = 2)
|
||||
/obj/item/clothing/shoes/kindleKicks = 2,
|
||||
/obj/item/storage/belt/military/snack = 2
|
||||
)
|
||||
|
||||
light_color = LIGHT_COLOR_GREEN
|
||||
|
||||
|
||||
@@ -196,7 +196,7 @@
|
||||
icon_keyboard = "mining_key"
|
||||
network = list("mine")
|
||||
circuit = /obj/item/circuitboard/computer/mining
|
||||
|
||||
|
||||
/obj/machinery/computer/security/research
|
||||
name = "research camera console"
|
||||
desc = "Used to access the various cameras in science."
|
||||
|
||||
@@ -190,7 +190,7 @@
|
||||
else
|
||||
moveToNullspace()
|
||||
if(use_static)
|
||||
GLOB.cameranet.visibility(src)
|
||||
GLOB.cameranet.visibility(src, GetViewerClient())
|
||||
if(visible_icon)
|
||||
if(eye_user.client)
|
||||
eye_user.client.images -= user_image
|
||||
|
||||
@@ -476,7 +476,7 @@
|
||||
R.fields["quirks"] = list()
|
||||
for(var/V in mob_occupant.roundstart_quirks)
|
||||
var/datum/quirk/T = V
|
||||
R.fields["quirks"] += T.type
|
||||
R.fields["quirks"][T.type] = T.clone_data()
|
||||
|
||||
if (!isnull(mob_occupant.mind)) //Save that mind so traitors can continue traitoring after cloning.
|
||||
R.fields["mind"] = "[REF(mob_occupant.mind)]"
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
/obj/machinery/computer/communications/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
if(!is_station_level(z) && !is_centcom_level(z)) //Can only use on centcom and SS13
|
||||
if(!is_station_level(z) && !is_transit_level(z)) //Can only use in transit and on SS13
|
||||
to_chat(usr, "<span class='boldannounce'>Unable to establish a connection</span>: \black You're too far away from the station!")
|
||||
return
|
||||
usr.set_machine(src)
|
||||
|
||||
@@ -79,6 +79,20 @@
|
||||
opacity = 0
|
||||
glass = TRUE
|
||||
|
||||
/obj/machinery/door/airlock/glass/incinerator
|
||||
autoclose = FALSE
|
||||
frequency = FREQ_AIRLOCK_CONTROL
|
||||
heat_proof = TRUE
|
||||
req_access = list(ACCESS_SYNDICATE)
|
||||
|
||||
/obj/machinery/door/airlock/glass/incinerator/syndicatelava_interior
|
||||
name = "Turbine Interior Airlock"
|
||||
id_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_INTERIOR
|
||||
|
||||
/obj/machinery/door/airlock/glass/incinerator/syndicatelava_exterior
|
||||
name = "Turbine Exterior Airlock"
|
||||
id_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_EXTERIOR
|
||||
|
||||
/obj/machinery/door/airlock/command/glass
|
||||
opacity = 0
|
||||
glass = TRUE
|
||||
@@ -107,6 +121,20 @@
|
||||
opacity = 0
|
||||
glass = TRUE
|
||||
|
||||
/obj/machinery/door/airlock/research/glass/incinerator
|
||||
autoclose = FALSE
|
||||
frequency = FREQ_AIRLOCK_CONTROL
|
||||
heat_proof = TRUE
|
||||
req_access = list(ACCESS_TOX)
|
||||
|
||||
/obj/machinery/door/airlock/research/glass/incinerator/toxmix_interior
|
||||
name = "Mixing Room Interior Airlock"
|
||||
id_tag = INCINERATOR_TOXMIX_AIRLOCK_INTERIOR
|
||||
|
||||
/obj/machinery/door/airlock/research/glass/incinerator/toxmix_exterior
|
||||
name = "Mixing Room Exterior Airlock"
|
||||
id_tag = INCINERATOR_TOXMIX_AIRLOCK_EXTERIOR
|
||||
|
||||
/obj/machinery/door/airlock/mining/glass
|
||||
opacity = 0
|
||||
glass = TRUE
|
||||
@@ -287,6 +315,20 @@
|
||||
opacity = 0
|
||||
glass = TRUE
|
||||
|
||||
/obj/machinery/door/airlock/public/glass/incinerator
|
||||
autoclose = FALSE
|
||||
frequency = FREQ_AIRLOCK_CONTROL
|
||||
heat_proof = TRUE
|
||||
req_one_access = list(ACCESS_ATMOSPHERICS, ACCESS_MAINT_TUNNELS)
|
||||
|
||||
/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior
|
||||
name = "Turbine Interior Airlock"
|
||||
id_tag = INCINERATOR_ATMOS_AIRLOCK_INTERIOR
|
||||
|
||||
/obj/machinery/door/airlock/public/glass/incinerator/atmos_exterior
|
||||
name = "Turbine Exterior Airlock"
|
||||
id_tag = INCINERATOR_ATMOS_AIRLOCK_EXTERIOR
|
||||
|
||||
//////////////////////////////////
|
||||
/*
|
||||
External Airlocks
|
||||
|
||||
@@ -36,6 +36,26 @@
|
||||
else
|
||||
INVOKE_ASYNC(src, .proc/close)
|
||||
|
||||
/obj/machinery/door/poddoor/incinerator_toxmix
|
||||
name = "combustion chamber vent"
|
||||
id = INCINERATOR_TOXMIX_VENT
|
||||
|
||||
/obj/machinery/door/poddoor/incinerator_atmos_main
|
||||
name = "turbine vent"
|
||||
id = INCINERATOR_ATMOS_MAINVENT
|
||||
|
||||
/obj/machinery/door/poddoor/incinerator_atmos_aux
|
||||
name = "combustion chamber vent"
|
||||
id = INCINERATOR_ATMOS_AUXVENT
|
||||
|
||||
/obj/machinery/door/poddoor/incinerator_syndicatelava_main
|
||||
name = "turbine vent"
|
||||
id = INCINERATOR_SYNDICATELAVA_MAINVENT
|
||||
|
||||
/obj/machinery/door/poddoor/incinerator_syndicatelava_aux
|
||||
name = "combustion chamber vent"
|
||||
id = INCINERATOR_SYNDICATELAVA_AUXVENT
|
||||
|
||||
/obj/machinery/door/poddoor/CollidedWith(atom/movable/AM)
|
||||
if(density)
|
||||
return 0
|
||||
|
||||
@@ -7,11 +7,11 @@
|
||||
|
||||
/datum/computer/file/embedded_program/airlock_controller
|
||||
var/id_tag
|
||||
var/exterior_door_tag
|
||||
var/interior_door_tag
|
||||
var/airpump_tag
|
||||
var/sensor_tag
|
||||
var/sanitize_external
|
||||
var/exterior_door_tag //Burn chamber facing door
|
||||
var/interior_door_tag //Station facing door
|
||||
var/airpump_tag //See: dp_vent_pump.dm
|
||||
var/sensor_tag //See: /obj/machinery/airlock_sensor
|
||||
var/sanitize_external //Before the interior airlock opens, do we first drain all gases inside the chamber and then repressurize?
|
||||
|
||||
state = AIRLOCK_STATE_CLOSED
|
||||
var/target_state = AIRLOCK_STATE_CLOSED
|
||||
@@ -211,6 +211,33 @@
|
||||
var/sensor_tag
|
||||
var/sanitize_external
|
||||
|
||||
/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_toxmix
|
||||
name = "Incinerator Access Console"
|
||||
airpump_tag = INCINERATOR_TOXMIX_DP_VENTPUMP
|
||||
exterior_door_tag = INCINERATOR_TOXMIX_AIRLOCK_EXTERIOR
|
||||
id_tag = INCINERATOR_TOXMIX_AIRLOCK_CONTROLLER
|
||||
interior_door_tag = INCINERATOR_TOXMIX_AIRLOCK_INTERIOR
|
||||
sanitize_external = TRUE
|
||||
sensor_tag = INCINERATOR_TOXMIX_AIRLOCK_SENSOR
|
||||
|
||||
/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_atmos
|
||||
name = "Incinerator Access Console"
|
||||
airpump_tag = INCINERATOR_ATMOS_DP_VENTPUMP
|
||||
exterior_door_tag = INCINERATOR_ATMOS_AIRLOCK_EXTERIOR
|
||||
id_tag = INCINERATOR_ATMOS_AIRLOCK_CONTROLLER
|
||||
interior_door_tag = INCINERATOR_ATMOS_AIRLOCK_INTERIOR
|
||||
sanitize_external = TRUE
|
||||
sensor_tag = INCINERATOR_ATMOS_AIRLOCK_SENSOR
|
||||
|
||||
/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_syndicatelava
|
||||
name = "Incinerator Access Console"
|
||||
airpump_tag = INCINERATOR_SYNDICATELAVA_DP_VENTPUMP
|
||||
exterior_door_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_EXTERIOR
|
||||
id_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_CONTROLLER
|
||||
interior_door_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_INTERIOR
|
||||
sanitize_external = TRUE
|
||||
sensor_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_SENSOR
|
||||
|
||||
/obj/machinery/embedded_controller/radio/airlock_controller/Initialize(mapload)
|
||||
. = ..()
|
||||
if(!mapload)
|
||||
|
||||
@@ -14,6 +14,15 @@
|
||||
armor = list("melee" = 50, "bullet" = 30, "laser" = 70, "energy" = 50, "bomb" = 20, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70)
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/machinery/igniter/incinerator_toxmix
|
||||
id = INCINERATOR_TOXMIX_IGNITER
|
||||
|
||||
/obj/machinery/igniter/incinerator_atmos
|
||||
id = INCINERATOR_ATMOS_IGNITER
|
||||
|
||||
/obj/machinery/igniter/incinerator_syndicatelava
|
||||
id = INCINERATOR_SYNDICATELAVA_IGNITER
|
||||
|
||||
/obj/machinery/igniter/on
|
||||
on = TRUE
|
||||
icon_state = "igniter1"
|
||||
@@ -60,6 +69,9 @@
|
||||
anchored = TRUE
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/machinery/sparker/toxmix
|
||||
id = INCINERATOR_TOXMIX_IGNITER
|
||||
|
||||
/obj/machinery/sparker/Initialize()
|
||||
. = ..()
|
||||
spark_system = new /datum/effect_system/spark_spread
|
||||
|
||||
@@ -181,7 +181,7 @@
|
||||
|
||||
// Remove and recycle the equipped items
|
||||
if(eat_victim_items)
|
||||
for(var/obj/item/I in L.get_equipped_items())
|
||||
for(var/obj/item/I in L.get_equipped_items(TRUE))
|
||||
if(L.dropItemToGround(I))
|
||||
eat(I, sound=FALSE)
|
||||
|
||||
|
||||
@@ -2,27 +2,4 @@
|
||||
force = 30
|
||||
internal_damage_threshold = 50
|
||||
armor = list("melee" = 30, "bullet" = 30, "laser" = 15, "energy" = 20, "bomb" = 20, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
|
||||
|
||||
/obj/mecha/combat/moved_inside(mob/living/carbon/human/H)
|
||||
if(..())
|
||||
if(H.client && H.client.mouse_pointer_icon == initial(H.client.mouse_pointer_icon))
|
||||
H.client.mouse_pointer_icon = 'icons/mecha/mecha_mouse.dmi'
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
|
||||
/obj/mecha/combat/mmi_moved_inside(obj/item/mmi/mmi_as_oc,mob/user)
|
||||
if(..())
|
||||
if(occupant.client && occupant.client.mouse_pointer_icon == initial(occupant.client.mouse_pointer_icon))
|
||||
occupant.client.mouse_pointer_icon = 'icons/mecha/mecha_mouse.dmi'
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
|
||||
|
||||
/obj/mecha/combat/go_out()
|
||||
if(occupant && occupant.client && occupant.client.mouse_pointer_icon == 'icons/mecha/mecha_mouse.dmi')
|
||||
occupant.client.mouse_pointer_icon = initial(occupant.client.mouse_pointer_icon)
|
||||
..()
|
||||
|
||||
|
||||
mouse_pointer = 'icons/mecha/mecha_mouse.dmi'
|
||||
|
||||
@@ -115,6 +115,7 @@
|
||||
var/smashcooldown = 3 //deciseconds
|
||||
|
||||
var/occupant_sight_flags = 0 //sight flags to give to the occupant (e.g. mech mining scanner gives meson-like vision)
|
||||
var/mouse_pointer
|
||||
|
||||
hud_possible = list (DIAG_STAT_HUD, DIAG_BATT_HUD, DIAG_MECH_HUD, DIAG_TRACK_HUD)
|
||||
|
||||
@@ -855,6 +856,7 @@
|
||||
if(H && H.client && H in range(1))
|
||||
occupant = H
|
||||
H.forceMove(src)
|
||||
H.update_mouse_pointer()
|
||||
add_fingerprint(H)
|
||||
GrantActions(H, human_occupant=1)
|
||||
forceMove(loc)
|
||||
@@ -912,6 +914,7 @@
|
||||
brainmob.reset_perspective(src)
|
||||
brainmob.remote_control = src
|
||||
brainmob.update_canmove()
|
||||
brainmob.update_mouse_pointer()
|
||||
icon_state = initial(icon_state)
|
||||
update_icon()
|
||||
setDir(dir_in)
|
||||
@@ -981,6 +984,7 @@
|
||||
setDir(dir_in)
|
||||
|
||||
if(L && L.client)
|
||||
L.update_mouse_pointer()
|
||||
L.client.change_view(CONFIG_GET(string/default_view))
|
||||
zoom_mode = 0
|
||||
|
||||
|
||||
@@ -47,6 +47,7 @@
|
||||
/obj/effect/temp_visual/cult/turf/floor
|
||||
icon_state = "floorglow"
|
||||
duration = 5
|
||||
plane = FLOOR_PLANE
|
||||
|
||||
/obj/effect/temp_visual/cult/portal
|
||||
icon_state = "space"
|
||||
|
||||
@@ -340,7 +340,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
desc = "A brown roll of tobacco and... well, you're not quite sure. This thing's huge!"
|
||||
icon_state = "cigaroff"
|
||||
icon_on = "cigaron"
|
||||
icon_off = "cigaroff"
|
||||
icon_off = "cigaroff" //make sure to add positional sprites in icons/obj/cigarettes.dmi if you add more.
|
||||
type_butt = /obj/item/cigbutt/cigarbutt
|
||||
throw_speed = 0.5
|
||||
item_state = "cigaroff"
|
||||
@@ -492,11 +492,24 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
slot_flags = ITEM_SLOT_BELT
|
||||
var/lit = 0
|
||||
var/fancy = TRUE
|
||||
var/overlay_state
|
||||
var/overlay_list = list(
|
||||
"plain",
|
||||
"dame",
|
||||
"thirteen",
|
||||
"snake"
|
||||
)
|
||||
heat = 1500
|
||||
resistance_flags = FIRE_PROOF
|
||||
light_color = LIGHT_COLOR_FIRE
|
||||
grind_results = list("iron" = 1, "welding_fuel" = 5, "oil" = 5)
|
||||
|
||||
/obj/item/lighter/Initialize()
|
||||
. = ..()
|
||||
if(!overlay_state)
|
||||
overlay_state = pick(overlay_list)
|
||||
update_icon()
|
||||
|
||||
/obj/item/lighter/suicide_act(mob/living/carbon/user)
|
||||
if (lit)
|
||||
user.visible_message("<span class='suicide'>[user] begins holding \the [src]'s flame up to [user.p_their()] face! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
@@ -507,10 +520,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
return BRUTELOSS
|
||||
|
||||
/obj/item/lighter/update_icon()
|
||||
if(lit)
|
||||
icon_state = "[initial(icon_state)]_on"
|
||||
else
|
||||
icon_state = "[initial(icon_state)]"
|
||||
cut_overlays()
|
||||
var/mutable_appearance/lighter_overlay = mutable_appearance(icon,"lighter_overlay_[overlay_state][lit ? "-on" : ""]")
|
||||
icon_state = "[initial(icon_state)][lit ? "-on" : ""]"
|
||||
add_overlay(lighter_overlay)
|
||||
|
||||
/obj/item/lighter/ignition_effect(atom/A, mob/user)
|
||||
if(is_hot())
|
||||
@@ -597,19 +610,44 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
desc = "A cheap-as-free lighter."
|
||||
icon_state = "lighter"
|
||||
fancy = FALSE
|
||||
overlay_list = list(
|
||||
"transp",
|
||||
"tall",
|
||||
"matte",
|
||||
"zoppo" //u cant stoppo th zoppo
|
||||
)
|
||||
var/lighter_color
|
||||
var/list/color_list = list( //Same 16 color selection as electronic assemblies
|
||||
COLOR_ASSEMBLY_BLACK,
|
||||
COLOR_FLOORTILE_GRAY,
|
||||
COLOR_ASSEMBLY_BGRAY,
|
||||
COLOR_ASSEMBLY_WHITE,
|
||||
COLOR_ASSEMBLY_RED,
|
||||
COLOR_ASSEMBLY_ORANGE,
|
||||
COLOR_ASSEMBLY_BEIGE,
|
||||
COLOR_ASSEMBLY_BROWN,
|
||||
COLOR_ASSEMBLY_GOLD,
|
||||
COLOR_ASSEMBLY_YELLOW,
|
||||
COLOR_ASSEMBLY_GURKHA,
|
||||
COLOR_ASSEMBLY_LGREEN,
|
||||
COLOR_ASSEMBLY_GREEN,
|
||||
COLOR_ASSEMBLY_LBLUE,
|
||||
COLOR_ASSEMBLY_BLUE,
|
||||
COLOR_ASSEMBLY_PURPLE
|
||||
)
|
||||
|
||||
/obj/item/lighter/greyscale/Initialize()
|
||||
. = ..()
|
||||
add_atom_colour(color2hex(randomColor(1)), FIXED_COLOUR_PRIORITY)
|
||||
if(!lighter_color)
|
||||
lighter_color = pick(color_list)
|
||||
update_icon()
|
||||
|
||||
/obj/item/lighter/greyscale/update_icon()
|
||||
cut_overlays()
|
||||
var/mutable_appearance/base_overlay = mutable_appearance(icon,"[initial(icon_state)]_base")
|
||||
base_overlay.appearance_flags = RESET_COLOR //the edging doesn't change color
|
||||
if(lit)
|
||||
base_overlay.icon_state = "[initial(icon_state)]_on"
|
||||
add_overlay(base_overlay)
|
||||
var/mutable_appearance/lighter_overlay = mutable_appearance(icon,"lighter_overlay_[overlay_state][lit ? "-on" : ""]")
|
||||
icon_state = "[initial(icon_state)][lit ? "-on" : ""]"
|
||||
lighter_overlay.color = lighter_color
|
||||
add_overlay(lighter_overlay)
|
||||
|
||||
/obj/item/lighter/greyscale/ignition_effect(atom/A, mob/user)
|
||||
if(is_hot())
|
||||
@@ -619,9 +657,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
/obj/item/lighter/slime
|
||||
name = "slime zippo"
|
||||
desc = "A specialty zippo made from slimes and industry. Has a much hotter flame than normal."
|
||||
icon_state = "slimezippo"
|
||||
icon_state = "slighter"
|
||||
heat = 3000 //Blue flame!
|
||||
light_color = LIGHT_COLOR_CYAN
|
||||
overlay_state = "slime"
|
||||
grind_results = list("iron" = 1, "welding_fuel" = 5, "pyroxadone" = 5)
|
||||
|
||||
|
||||
|
||||
@@ -310,7 +310,7 @@
|
||||
/obj/item/storage/bag/tray/update_icon()
|
||||
cut_overlays()
|
||||
for(var/obj/item/I in contents)
|
||||
add_overlay(mutable_appearance(I.icon, I.icon_state))
|
||||
add_overlay(new /mutable_appearance(I))
|
||||
|
||||
/obj/item/storage/bag/tray/Entered()
|
||||
. = ..()
|
||||
|
||||
@@ -326,6 +326,53 @@
|
||||
GET_COMPONENT(STR, /datum/component/storage)
|
||||
STR.max_w_class = WEIGHT_CLASS_SMALL
|
||||
|
||||
/obj/item/storage/belt/military/snack
|
||||
name = "tactical snack rig"
|
||||
|
||||
/obj/item/storage/belt/military/snack/Initialize()
|
||||
. = ..()
|
||||
var/sponsor = pick("DonkCo", "Waffle Co.", "Roffle Co.", "Gorlax Marauders", "Tiger Cooperative")
|
||||
desc = "A set of snack-tical webbing worn by athletes of the [sponsor] VR sports division."
|
||||
|
||||
/obj/item/storage/belt/military/snack/ComponentInitialize()
|
||||
. = ..()
|
||||
GET_COMPONENT(STR, /datum/component/storage)
|
||||
STR.max_items = 6
|
||||
STR.max_w_class = WEIGHT_CLASS_SMALL
|
||||
STR.can_hold = typecacheof(list(
|
||||
/obj/item/reagent_containers/food/snacks,
|
||||
/obj/item/reagent_containers/food/drinks
|
||||
))
|
||||
|
||||
var/amount = 5
|
||||
var/rig_snacks
|
||||
while(contents.len <= amount)
|
||||
rig_snacks = pick(list(
|
||||
/obj/item/reagent_containers/food/snacks/candy,
|
||||
/obj/item/reagent_containers/food/drinks/dry_ramen,
|
||||
/obj/item/reagent_containers/food/snacks/chips,
|
||||
/obj/item/reagent_containers/food/snacks/sosjerky,
|
||||
/obj/item/reagent_containers/food/snacks/syndicake,
|
||||
/obj/item/reagent_containers/food/snacks/spacetwinkie,
|
||||
/obj/item/reagent_containers/food/snacks/cheesiehonkers,
|
||||
/obj/item/reagent_containers/food/snacks/nachos,
|
||||
/obj/item/reagent_containers/food/snacks/cheesynachos,
|
||||
/obj/item/reagent_containers/food/snacks/cubannachos,
|
||||
/obj/item/reagent_containers/food/snacks/nugget,
|
||||
/obj/item/reagent_containers/food/snacks/pastatomato,
|
||||
/obj/item/reagent_containers/food/snacks/rofflewaffles,
|
||||
/obj/item/reagent_containers/food/snacks/donkpocket,
|
||||
/obj/item/reagent_containers/food/drinks/soda_cans/cola,
|
||||
/obj/item/reagent_containers/food/drinks/soda_cans/space_mountain_wind,
|
||||
/obj/item/reagent_containers/food/drinks/soda_cans/dr_gibb,
|
||||
/obj/item/reagent_containers/food/drinks/soda_cans/starkist,
|
||||
/obj/item/reagent_containers/food/drinks/soda_cans/space_up,
|
||||
/obj/item/reagent_containers/food/drinks/soda_cans/pwr_game,
|
||||
/obj/item/reagent_containers/food/drinks/soda_cans/lemon_lime,
|
||||
/obj/item/reagent_containers/food/drinks/drinkingglass/filled/nuka_cola
|
||||
))
|
||||
new rig_snacks(src)
|
||||
|
||||
/obj/item/storage/belt/military/abductor
|
||||
name = "agent belt"
|
||||
desc = "A belt used by abductor agents."
|
||||
|
||||
@@ -154,7 +154,7 @@
|
||||
SendSignal(COMSIG_TRY_STORAGE_TAKE, W, user)
|
||||
user.put_in_hands(W)
|
||||
contents -= W
|
||||
to_chat(user, "<span class='notice'>You take a [icon_type] out of the pack.</span>")
|
||||
to_chat(user, "<span class='notice'>You take \a [W] out of the pack.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>There are no [icon_type]s left in the pack.</span>")
|
||||
|
||||
@@ -166,18 +166,20 @@
|
||||
else
|
||||
icon_state = initial(icon_state)
|
||||
add_overlay("[icon_state]_open")
|
||||
var/i = contents.len
|
||||
var/cig_position = 1
|
||||
for(var/C in contents)
|
||||
var/mutable_appearance/inserted_overlay = mutable_appearance(icon)
|
||||
inserted_overlay.pixel_x = 1 * (i - 1)
|
||||
|
||||
if(istype(C, /obj/item/lighter/greyscale))
|
||||
inserted_overlay.icon_state = "lighter_in"
|
||||
else if(istype(C, /obj/item/lighter))
|
||||
inserted_overlay.icon_state = "zippo_in"
|
||||
else
|
||||
inserted_overlay.icon_state = "cigarette"
|
||||
|
||||
inserted_overlay.icon_state = "[inserted_overlay.icon_state]_[cig_position]"
|
||||
add_overlay(inserted_overlay)
|
||||
i--
|
||||
cig_position++
|
||||
else
|
||||
cut_overlays()
|
||||
|
||||
@@ -191,7 +193,7 @@
|
||||
SendSignal(COMSIG_TRY_STORAGE_TAKE, W, M)
|
||||
M.equip_to_slot_if_possible(W, SLOT_WEAR_MASK)
|
||||
contents -= W
|
||||
to_chat(user, "<span class='notice'>You take a [icon_type] out of the pack.</span>")
|
||||
to_chat(user, "<span class='notice'>You take \a [W] out of the pack.</span>")
|
||||
else
|
||||
..()
|
||||
else
|
||||
@@ -293,22 +295,27 @@
|
||||
/obj/item/storage/fancy/cigarettes/cigars/update_icon()
|
||||
cut_overlays()
|
||||
if(fancy_open)
|
||||
add_overlay("[icon_state]_open")
|
||||
var/mutable_appearance/cigar_overlay = mutable_appearance(icon, icon_type)
|
||||
for(var/c = contents.len, c >= 1, c--)
|
||||
cigar_overlay.pixel_x = 4 * (c - 1)
|
||||
icon_state = "[initial(icon_state)]_open"
|
||||
|
||||
var/cigar_position = 1 //generate sprites for cigars in the box
|
||||
for(var/obj/item/clothing/mask/cigarette/cigar/smokes in contents)
|
||||
var/mutable_appearance/cigar_overlay = mutable_appearance(icon, "[smokes.icon_off]_[cigar_position]")
|
||||
add_overlay(cigar_overlay)
|
||||
cigar_position++
|
||||
|
||||
else
|
||||
icon_state = "cigarcase"
|
||||
icon_state = "[initial(icon_state)]"
|
||||
|
||||
/obj/item/storage/fancy/cigarettes/cigars/cohiba
|
||||
name = "\improper cohiba robusto cigar case"
|
||||
desc = "A case of imported Cohiba cigars, renowned for their strong flavor."
|
||||
icon_state = "cohibacase"
|
||||
spawn_type = /obj/item/clothing/mask/cigarette/cigar/cohiba
|
||||
|
||||
/obj/item/storage/fancy/cigarettes/cigars/havana
|
||||
name = "\improper premium havanian cigar case"
|
||||
desc = "A case of classy Havanian cigars."
|
||||
icon_state = "cohibacase"
|
||||
spawn_type = /obj/item/clothing/mask/cigarette/cigar/havana
|
||||
|
||||
/*
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
//The "BDPtarget" temp visual is created by the expressconsole, which in turn makes two things: a falling droppod animation, and the droppod itself.
|
||||
#define POD_STANDARD 0
|
||||
#define POD_BLUESPACE 1
|
||||
#define POD_CENTCOM 2
|
||||
|
||||
//------------------------------------SUPPLY POD-------------------------------------//
|
||||
/obj/structure/closet/supplypod
|
||||
@@ -18,17 +19,25 @@
|
||||
armor = list("melee" = 30, "bullet" = 50, "laser" = 50, "energy" = 100, "bomb" = 90, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 80)
|
||||
anchored = TRUE
|
||||
anchorable = FALSE
|
||||
var/generated = FALSE
|
||||
var/datum/supply_order/SupplyOrder
|
||||
var/atom/other_delivery
|
||||
|
||||
/obj/structure/closet/supplypod/bluespacepod
|
||||
name = "Bluespace Drop Pod"
|
||||
desc = "A Nanotrasen Bluespace drop pod. Teleports back to CentCom after delivery."
|
||||
icon_state = "bluespacepod"
|
||||
|
||||
/obj/structure/closet/supplypod/Initialize(mapload, datum/supply_order/so)
|
||||
/obj/structure/closet/supplypod/bluespacepod/centcompod
|
||||
name = "CentCom Drop Pod"
|
||||
desc = "A Nanotrasen Bluespace drop pod, this one has been marked with Central Command's designations. Teleports back to Centcom after delivery."
|
||||
icon_state = "centcompod"
|
||||
|
||||
/obj/structure/closet/supplypod/Initialize(mapload, var/SO)
|
||||
. = ..()
|
||||
SupplyOrder = so//uses Supply Order passed from expressconsole into BDPtarget
|
||||
if(istype(SO, /datum/supply_order))
|
||||
SupplyOrder = SO//uses Supply Order passed from expressconsole into BDPtarget
|
||||
else
|
||||
other_delivery = SO//if the object is not a supply order, we force the object in the pod
|
||||
addtimer(CALLBACK(src, .proc/open), 30)//open 3seconds after appearing
|
||||
|
||||
/obj/structure/closet/supplypod/update_icon()
|
||||
@@ -47,9 +56,10 @@
|
||||
/obj/structure/closet/supplypod/open()
|
||||
var/turf/T = get_turf(src)
|
||||
opened = TRUE
|
||||
if(!generated)
|
||||
generated = TRUE
|
||||
if(SupplyOrder)
|
||||
SupplyOrder.generate(T)//not called during populateContents as supplyorder generation requires a turf
|
||||
if(other_delivery)
|
||||
new other_delivery(T)
|
||||
update_icon()
|
||||
playsound(src, open_sound, 15, 1, -3)
|
||||
if(istype(src,/obj/structure/closet/supplypod/bluespacepod))
|
||||
@@ -66,21 +76,24 @@
|
||||
//------------------------------------FALLING SUPPLY POD-------------------------------------//
|
||||
/obj/effect/temp_visual/DPfall
|
||||
icon = 'icons/obj/2x2.dmi'
|
||||
icon_state = "supplypod_falling"
|
||||
pixel_x = -16
|
||||
pixel_y = -5
|
||||
pixel_z = 200
|
||||
desc = "Get out of the way!"
|
||||
layer = FLY_LAYER//that wasnt flying, that was falling with style!
|
||||
randomdir = FALSE
|
||||
icon_state = "supplypod_falling"
|
||||
|
||||
/obj/effect/temp_visual/DPfall/Initialize(var/dropLocation, var/podID)
|
||||
if (podID == POD_BLUESPACE)
|
||||
if (podID == POD_STANDARD)
|
||||
icon_state = "supplypod_falling"
|
||||
name = "Supply Drop Pod"
|
||||
else if (podID == POD_BLUESPACE)
|
||||
icon_state = "bluespacepod_falling"
|
||||
name = "Bluespace Drop Pod"
|
||||
else
|
||||
icon_state = "supplypod_falling"
|
||||
name = "Supply Drop Pod"
|
||||
icon_state = "centcompod_falling"
|
||||
name = "CentCom Drop Pod"
|
||||
. = ..()
|
||||
|
||||
//------------------------------------TEMPORARY_VISUAL-------------------------------------//
|
||||
@@ -91,22 +104,34 @@
|
||||
light_range = 2
|
||||
var/obj/effect/temp_visual/fallingPod
|
||||
|
||||
/obj/effect/DPtarget/Initialize(mapload, datum/supply_order/SO, var/podID)
|
||||
/obj/effect/DPtarget/Initialize(mapload, var/SO, var/podID)
|
||||
. = ..()
|
||||
addtimer(CALLBACK(src, .proc/beginLaunch, SO, podID), podID == POD_BLUESPACE ? 15 : 30)//standard pods take 3 seconds to come in, bluespace pods take 1.5
|
||||
var/delayTime = 0
|
||||
switch(podID)
|
||||
if(POD_STANDARD)
|
||||
delayTime = 30
|
||||
if(POD_BLUESPACE)
|
||||
delayTime = 15
|
||||
if(POD_CENTCOM)
|
||||
delayTime = 1
|
||||
|
||||
/obj/effect/DPtarget/proc/beginLaunch(datum/supply_order/SO, var/podID)
|
||||
addtimer(CALLBACK(src, .proc/beginLaunch, SO, podID), delayTime)//standard pods take 3 seconds to come in, bluespace pods take 1.5
|
||||
|
||||
/obj/effect/DPtarget/proc/beginLaunch(var/SO, var/podID)
|
||||
fallingPod = new /obj/effect/temp_visual/DPfall(drop_location(), podID)
|
||||
animate(fallingPod, pixel_z = 0, time = 3, easing = LINEAR_EASING)//make and animate a falling pod
|
||||
addtimer(CALLBACK(src, .proc/endLaunch, SO, podID), 3, TIMER_CLIENT_TIME)//fall 0.3seconds
|
||||
|
||||
/obj/effect/DPtarget/proc/endLaunch(datum/supply_order/SO, var/podID)
|
||||
if (podID == POD_BLUESPACE)
|
||||
/obj/effect/DPtarget/proc/endLaunch(var/SO, var/podID)
|
||||
if (podID == POD_STANDARD)
|
||||
new /obj/structure/closet/supplypod(drop_location(), SO)//pod is created
|
||||
explosion(src,0,0,2, flame_range = 3) //less advanced equipment than bluespace pod, so larger explosion when landing
|
||||
else if (podID == POD_BLUESPACE)
|
||||
new /obj/structure/closet/supplypod/bluespacepod(drop_location(), SO)//pod is created
|
||||
explosion(src,0,0,2, flame_range = 1) //explosion and camshake (shoutout to @cyberboss)
|
||||
else
|
||||
new /obj/structure/closet/supplypod(drop_location(), SO)//pod is created
|
||||
explosion(src,0,0,2, flame_range = 3) //less advanced equipment than bluespace pod, so larger explosion when landing
|
||||
new /obj/structure/closet/supplypod/bluespacepod/centcompod(drop_location(), SO)
|
||||
explosion(src,0,0,2, flame_range = 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/DPtarget/Destroy()
|
||||
@@ -120,4 +145,4 @@
|
||||
icon = 'icons/obj/module.dmi'
|
||||
icon_state = "cargodisk"
|
||||
item_state = "card-id"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
@@ -106,7 +106,11 @@
|
||||
/obj/item/stack/sheet/plasteel,
|
||||
/obj/item/stack/sheet/mineral/titanium,
|
||||
/obj/item/stack/sheet/mineral/plastitanium,
|
||||
/obj/item/stack/rods
|
||||
/obj/item/stack/rods,
|
||||
/obj/item/stack/sheet/bluespace_crystal,
|
||||
/obj/item/stack/sheet/mineral/abductor,
|
||||
/obj/item/stack/sheet/plastic,
|
||||
/obj/item/stack/sheet/mineral/wood
|
||||
)
|
||||
|
||||
for(var/i = 0, i<2, i++)
|
||||
|
||||
@@ -381,7 +381,7 @@
|
||||
obj_integrity = max_integrity
|
||||
|
||||
/obj/structure/table/bronze
|
||||
name = "brass table"
|
||||
name = "bronze table"
|
||||
desc = "A solid table made out of bronze."
|
||||
icon = 'icons/obj/smooth_structures/brass_table.dmi'
|
||||
icon_state = "brass_table"
|
||||
|
||||
@@ -243,7 +243,7 @@
|
||||
|
||||
|
||||
/turf/open/floor/bronze
|
||||
name = "clockwork floor"
|
||||
name = "bronze floor"
|
||||
desc = "Some heavy bronze tiles."
|
||||
icon = 'icons/obj/clockwork_objects.dmi'
|
||||
icon_state = "clockwork_floor"
|
||||
|
||||
@@ -119,6 +119,9 @@
|
||||
icon_state = "water"
|
||||
baseturfs = /turf/open/floor/plating/beach/water
|
||||
|
||||
/turf/open/floor/plating/beach/coastline_t/sandwater_inner
|
||||
icon_state = "sandwater_inner"
|
||||
baseturfs = /turf/open/floor/plating/beach/coastline_t/sandwater_inner
|
||||
|
||||
/turf/open/floor/plating/ironsand
|
||||
name = "iron sand"
|
||||
|
||||
@@ -438,3 +438,22 @@
|
||||
|
||||
/turf/AllowDrop()
|
||||
return TRUE
|
||||
|
||||
/turf/proc/add_vomit_floor(mob/living/carbon/M, toxvomit = 0)
|
||||
var/obj/effect/decal/cleanable/vomit/V = new /obj/effect/decal/cleanable/vomit(src, M.get_static_viruses())
|
||||
// If the vomit combined, apply toxicity and reagents to the old vomit
|
||||
if (QDELETED(V))
|
||||
V = locate() in src
|
||||
// Make toxins vomit look different
|
||||
if(toxvomit)
|
||||
V.icon_state = "vomittox_[pick(1,4)]"
|
||||
if(M.reagents)
|
||||
clear_reagents_to_vomit_pool(M,V)
|
||||
|
||||
/proc/clear_reagents_to_vomit_pool(mob/living/carbon/M, obj/effect/decal/cleanable/vomit/V)
|
||||
M.reagents.trans_to(V, M.reagents.total_volume / 10)
|
||||
for(var/datum/reagent/R in M.reagents.reagent_list) //clears the stomach of anything that might be digested as food
|
||||
if(istype(R, /datum/reagent/consumable))
|
||||
var/datum/reagent/consumable/nutri_check = R
|
||||
if(nutri_check.nutriment_factor >0)
|
||||
M.reagents.remove_reagent(R.id,R.volume)
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
body += "<body>Options panel for <b>[M]</b>"
|
||||
if(M.client)
|
||||
body += " played by <b>[M.client]</b> "
|
||||
body += "\[<A href='?_src_=holder;[HrefToken()];editrights=rank;ckey=[M.ckey]'>[M.client.holder ? M.client.holder.rank : "Player"]</A>\]"
|
||||
body += "\[<A href='?_src_=holder;[HrefToken()];editrights=[(GLOB.admin_datums[M.client.ckey] || GLOB.deadmins[M.client.ckey]) ? "rank" : "add"];ckey=[M.ckey]'>[M.client.holder ? M.client.holder.rank : "Player"]</A>\]"
|
||||
if(CONFIG_GET(flag/use_exp_tracking))
|
||||
body += "\[<A href='?_src_=holder;[HrefToken()];getplaytimewindow=[REF(M)]'>" + M.client.get_exp_living() + "</a>\]"
|
||||
|
||||
|
||||
@@ -125,6 +125,7 @@
|
||||
var/use_db
|
||||
var/task = href_list["editrights"]
|
||||
var/skip
|
||||
var/legacy_only
|
||||
if(task == "activate" || task == "deactivate" || task == "sync")
|
||||
skip = TRUE
|
||||
if(!CONFIG_GET(flag/admin_legacy_system) && CONFIG_GET(flag/protect_legacy_admins) && task == "rank")
|
||||
@@ -135,10 +136,9 @@
|
||||
if(D.rank in GLOB.protected_ranks)
|
||||
to_chat(usr, "<span class='admin prefix'>Editing the flags of this rank is blocked by server configuration.</span>")
|
||||
return
|
||||
if(CONFIG_GET(flag/load_legacy_ranks_only) && (task == "rank" || task == "permissions"))
|
||||
to_chat(usr, "<span class='admin prefix'>Database rank loading is disabled, only temporary changes can be made to an admin's rank or permissions.</span>")
|
||||
use_db = FALSE
|
||||
skip = TRUE
|
||||
if(CONFIG_GET(flag/load_legacy_ranks_only) && (task == "add" || task == "rank" || task == "permissions"))
|
||||
to_chat(usr, "<span class='admin prefix'>Database rank loading is disabled, only temporary changes can be made to a rank's permissions and permanently creating a new rank is blocked.</span>")
|
||||
legacy_only = TRUE
|
||||
if(check_rights(R_DBRANKS, FALSE))
|
||||
if(!skip)
|
||||
if(!SSdbcore.Connect())
|
||||
@@ -165,16 +165,16 @@
|
||||
return
|
||||
switch(task)
|
||||
if("add")
|
||||
admin_ckey = add_admin(null, use_db)
|
||||
admin_ckey = add_admin(admin_ckey, use_db)
|
||||
if(!admin_ckey)
|
||||
return
|
||||
change_admin_rank(admin_ckey, use_db)
|
||||
change_admin_rank(admin_ckey, use_db, null, legacy_only)
|
||||
if("remove")
|
||||
remove_admin(admin_ckey, use_db, D)
|
||||
if("rank")
|
||||
change_admin_rank(admin_ckey, use_db, D)
|
||||
change_admin_rank(admin_ckey, use_db, D, legacy_only)
|
||||
if("permissions")
|
||||
change_admin_flags(admin_ckey, use_db, D)
|
||||
change_admin_flags(admin_ckey, use_db, D, legacy_only)
|
||||
if("activate")
|
||||
force_readmin(admin_ckey, D)
|
||||
if("deactivate")
|
||||
@@ -240,9 +240,11 @@
|
||||
log_admin("[key_name(usr)] forcefully deadmined [admin_ckey]")
|
||||
D.deactivate() //after logs so the deadmined admin can see the message.
|
||||
|
||||
/datum/admins/proc/change_admin_rank(admin_ckey, use_db, datum/admins/D)
|
||||
/datum/admins/proc/change_admin_rank(admin_ckey, use_db, datum/admins/D, legacy_only)
|
||||
var/datum/admin_rank/R
|
||||
var/list/rank_names = list("*New Rank*")
|
||||
var/list/rank_names = list()
|
||||
if(!use_db || (use_db && !legacy_only))
|
||||
rank_names += "*New Rank*"
|
||||
for(R in GLOB.admin_ranks)
|
||||
if((R.rights & usr.client.holder.rank.can_edit_rights) == R.rights)
|
||||
rank_names[R.name] = R
|
||||
@@ -297,7 +299,7 @@
|
||||
message_admins("[key_name_admin(usr)] edited the admin rank of [admin_ckey] to [new_rank] [use_db ? "permanently" : "temporarily"]")
|
||||
log_admin("[key_name(usr)] edited the admin rank of [admin_ckey] to [new_rank] [use_db ? "permanently" : "temporarily"]")
|
||||
|
||||
/datum/admins/proc/change_admin_flags(admin_ckey, use_db, datum/admins/D)
|
||||
/datum/admins/proc/change_admin_flags(admin_ckey, use_db, datum/admins/D, legacy_only)
|
||||
var/new_flags = input_bitfield(usr, "Include permission flags<br>[use_db ? "This will affect ALL admins with this rank." : "This will affect only the current admin [admin_ckey]"]", "admin_flags", D.rank.include_rights, 350, 590, allowed_edit_list = usr.client.holder.rank.can_edit_rights)
|
||||
if(isnull(new_flags))
|
||||
return
|
||||
@@ -307,7 +309,7 @@
|
||||
var/new_can_edit_flags = input_bitfield(usr, "Editable permission flags<br>These are the flags this rank is allowed to edit if they have access to the permissions panel.<br>They will be unable to modify admins to a rank that has a flag not included here.<br>[use_db ? "This will affect ALL admins with this rank." : "This will affect only the current admin [admin_ckey]"]", "admin_flags", D.rank.can_edit_rights, 350, 710, allowed_edit_list = usr.client.holder.rank.can_edit_rights)
|
||||
if(isnull(new_can_edit_flags))
|
||||
return
|
||||
if(use_db)
|
||||
if(use_db || legacy_only)
|
||||
var/old_flags
|
||||
var/old_exclude_flags
|
||||
var/old_can_edit_flags
|
||||
@@ -351,6 +353,7 @@
|
||||
D.rank.rights = new_flags &= ~new_exclude_flags
|
||||
D.rank.include_rights = new_flags
|
||||
D.rank.exclude_rights = new_exclude_flags
|
||||
D.rank.can_edit_rights = new_can_edit_flags
|
||||
var/client/C = GLOB.directory[admin_ckey] //find the client with the specified ckey (if they are logged in)
|
||||
D.associate(C) //link up with the client and add verbs
|
||||
message_admins("[key_name_admin(usr)] edited the permissions of [use_db ? " rank [D.rank.name] permanently" : "[admin_ckey] temporarily"]")
|
||||
|
||||
@@ -734,14 +734,17 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention)
|
||||
if(!dresscode)
|
||||
return
|
||||
|
||||
var/delete_pocket
|
||||
var/mob/living/carbon/human/H
|
||||
if(isobserver(M))
|
||||
H = M.change_mob_type(/mob/living/carbon/human, null, null, TRUE)
|
||||
else
|
||||
H = M
|
||||
if(alert("Drop Items in Pockets? No will delete them.", "Robust quick dress shop", "Yes", "No") == "No")
|
||||
delete_pocket = TRUE
|
||||
|
||||
SSblackbox.record_feedback("tally", "admin_verb", 1, "Select Equipment") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
for (var/obj/item/I in H.get_equipped_items())
|
||||
for (var/obj/item/I in H.get_equipped_items(delete_pocket))
|
||||
qdel(I)
|
||||
if(dresscode != "Naked")
|
||||
H.equipOutfit(dresscode)
|
||||
|
||||
@@ -290,7 +290,7 @@
|
||||
|
||||
|
||||
/datum/admins/proc/equipAntagOnDummy(mob/living/carbon/human/dummy/mannequin, datum/antagonist/antag)
|
||||
for(var/I in mannequin.get_equipped_items())
|
||||
for(var/I in mannequin.get_equipped_items(TRUE))
|
||||
qdel(I)
|
||||
if (ispath(antag, /datum/antagonist/ert))
|
||||
var/datum/antagonist/ert/ert = antag
|
||||
|
||||
@@ -1277,7 +1277,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
|
||||
var/list/punishment_list = list(ADMIN_PUNISHMENT_LIGHTNING, ADMIN_PUNISHMENT_BRAINDAMAGE, ADMIN_PUNISHMENT_GIB, ADMIN_PUNISHMENT_BSA, ADMIN_PUNISHMENT_FIREBALL, ADMIN_PUNISHMENT_ROD)
|
||||
var/list/punishment_list = list(ADMIN_PUNISHMENT_LIGHTNING, ADMIN_PUNISHMENT_BRAINDAMAGE, ADMIN_PUNISHMENT_GIB, ADMIN_PUNISHMENT_BSA, ADMIN_PUNISHMENT_FIREBALL, ADMIN_PUNISHMENT_ROD, ADMIN_PUNISHMENT_SUPPLYPOD)
|
||||
|
||||
var/punishment = input("Choose a punishment", "DIVINE SMITING") as null|anything in punishment_list
|
||||
|
||||
@@ -1305,6 +1305,22 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits
|
||||
var/turf/startT = spaceDebrisStartLoc(startside, T.z)
|
||||
var/turf/endT = spaceDebrisFinishLoc(startside, T.z)
|
||||
new /obj/effect/immovablerod(startT, endT,target)
|
||||
if(ADMIN_PUNISHMENT_SUPPLYPOD)
|
||||
///////load the supply pod up with something!
|
||||
var/target_path = input(usr,"Enter typepath of an atom you'd like to send with the pod (type \"empty\" to send an empty pod):" ,"Typepath","/obj/item/reagent_containers/food/snacks/grown/harebell") as null|text
|
||||
if (isnull(target_path))
|
||||
return
|
||||
if (target_path == "empty")//if you type "abort", spawn an empty pod
|
||||
new /obj/effect/DPtarget(get_turf(target), null, POD_CENTCOM)
|
||||
return
|
||||
var/delivery = text2path(target_path)
|
||||
if(!ispath(delivery))
|
||||
delivery = pick_closest_path(target_path)
|
||||
if(!delivery)
|
||||
delivery = /obj/item/reagent_containers/food/snacks/grown/harebell
|
||||
alert("That path is not allowed.")
|
||||
//send the pod
|
||||
new /obj/effect/DPtarget(get_turf(target), delivery, POD_CENTCOM)
|
||||
|
||||
var/msg = "[key_name_admin(usr)] punished [key_name_admin(target)] with [punishment]."
|
||||
message_admins(msg)
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
icon = 'icons/turf/floors.dmi'
|
||||
icon_state = "clockwork_floor"
|
||||
layer = TURF_LAYER
|
||||
plane = FLOOR_PLANE
|
||||
|
||||
/obj/effect/clockwork/overlay/floor/bloodcult //this is used by BLOOD CULT, it shouldn't use such a path...
|
||||
icon_state = "cult"
|
||||
@@ -50,7 +50,7 @@
|
||||
user.emote("scream")
|
||||
user.apply_damage(30, BRUTE, BODY_ZONE_HEAD)
|
||||
user.adjustBrainLoss(30)
|
||||
addtimer(CALLBACK(user, /mob/living.proc/dropItemToGround), src, 1) //equipped happens before putting stuff on(but not before picking items up), 1). thus, we need to wait for it to be on before forcing it off.
|
||||
addtimer(CALLBACK(user, /mob/living.proc/dropItemToGround, src, TRUE), 1) //equipped happens before putting stuff on(but not before picking items up), 1). thus, we need to wait for it to be on before forcing it off.
|
||||
|
||||
/obj/item/clothing/head/helmet/clockwork/mob_can_equip(mob/M, mob/equipper, slot, disable_warning = 0)
|
||||
if(equipper && !is_servant_of_ratvar(equipper))
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
qdel(nullify_spell)
|
||||
return
|
||||
BS = possible_spells[entered_spell_name]
|
||||
if(QDELETED(src) || owner.incapacitated() || !BS)
|
||||
if(QDELETED(src) || owner.incapacitated() || !BS || (rune && !(locate(/obj/effect/rune/empower) in range(1, owner))) || (spells.len >= limit))
|
||||
return
|
||||
to_chat(owner,"<span class='warning'>You begin to carve unnatural symbols into your flesh!</span>")
|
||||
SEND_SOUND(owner, sound('sound/weapons/slice.ogg',0,1,10))
|
||||
@@ -271,7 +271,6 @@
|
||||
attached_action.desc += "<br><b><u>Has [attached_action.charges] use\s remaining</u></b>."
|
||||
attached_action.UpdateButtonIcon()
|
||||
if(attached_action.charges <= 0)
|
||||
remove_mousepointer(ranged_ability_user.client)
|
||||
remove_ranged_ability("<span class='cult'>You have exhausted the spell's power!</span>")
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -457,7 +457,6 @@
|
||||
new /obj/effect/temp_visual/cult/sparks(get_turf(target), ranged_ability_user.dir)
|
||||
attached_action.throwing = FALSE
|
||||
attached_action.cooldown = world.time + attached_action.base_cooldown
|
||||
remove_mousepointer(ranged_ability_user.client)
|
||||
remove_ranged_ability("<span class='cult'>A pulse of blood magic surges through you as you shift [attached_action.throwee] through time and space.</span>")
|
||||
caller.update_action_buttons_icon()
|
||||
addtimer(CALLBACK(caller, /mob.proc/update_action_buttons_icon), attached_action.base_cooldown)
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
if(!istype(H))
|
||||
return
|
||||
|
||||
for(var/obj/item/I in H.get_equipped_items())
|
||||
for(var/obj/item/I in H.get_equipped_items(TRUE))
|
||||
qdel(I)
|
||||
for(var/obj/item/I in H.held_items)
|
||||
qdel(I)
|
||||
|
||||
@@ -109,11 +109,6 @@
|
||||
revealed = FALSE
|
||||
incorporeal_move = INCORPOREAL_MOVE_JAUNT
|
||||
invisibility = INVISIBILITY_REVENANT
|
||||
if(staticOverlays.len)
|
||||
for(var/mob/living/simple_animal/drone/D in GLOB.drones_list)
|
||||
if(D && D.client && D.seeStatic)
|
||||
D.staticOverlays.Remove(staticOverlays)
|
||||
D.client.images.Remove(staticOverlays)
|
||||
to_chat(src, "<span class='revenboldnotice'>You are once more concealed.</span>")
|
||||
if(unstun_time && world.time >= unstun_time)
|
||||
unstun_time = 0
|
||||
@@ -250,15 +245,6 @@
|
||||
else
|
||||
to_chat(src, "<span class='revenwarning'>You have been revealed!</span>")
|
||||
unreveal_time = unreveal_time + time
|
||||
if(staticOverlays.len)
|
||||
for(var/mob/living/simple_animal/drone/D in GLOB.drones_list)
|
||||
if(D && D.client && D.seeStatic)
|
||||
if(D.staticChoice in staticOverlays)
|
||||
D.staticOverlays |= staticOverlays[D.staticChoice]
|
||||
D.client.images |= staticOverlays[D.staticChoice]
|
||||
else
|
||||
D.staticOverlays |= staticOverlays["static"]
|
||||
D.client.images |= staticOverlays["static"]
|
||||
update_spooky_icon()
|
||||
|
||||
/mob/living/simple_animal/revenant/proc/stun(time)
|
||||
|
||||
@@ -373,6 +373,10 @@
|
||||
to_chat(S, "<span class='warning'>Attempting to dismantle this machine would result in an immediate counterattack. Aborting.</span>")
|
||||
return FALSE
|
||||
|
||||
/obj/machinery/porta_turret_cover/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
|
||||
to_chat(S, "<span class='warning'>Attempting to dismantle this machine would result in an immediate counterattack. Aborting.</span>")
|
||||
return FALSE
|
||||
|
||||
/mob/living/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
|
||||
S.DisperseTarget(src)
|
||||
return TRUE
|
||||
@@ -405,6 +409,10 @@
|
||||
to_chat(S, "<span class='warning'>This object does not contain enough materials to work with.</span>")
|
||||
return FALSE
|
||||
|
||||
/obj/machinery/field/generator/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
|
||||
to_chat(S, "<span class='warning'>Destroying this object would cause a catastrophic chain reaction. Aborting.</span>")
|
||||
return FALSE
|
||||
|
||||
////END CTRL CLICK FOR SWARMERS////
|
||||
|
||||
/mob/living/simple_animal/hostile/swarmer/proc/Fabricate(atom/fabrication_object,fabrication_cost = 0)
|
||||
|
||||
@@ -164,7 +164,7 @@
|
||||
kill_objective.find_target()
|
||||
add_objective(kill_objective)
|
||||
else
|
||||
if(prob(15) && !(locate(/datum/objective/download in owner.objectives)))
|
||||
if(prob(15) && !(locate(/datum/objective/download) in owner.objectives) && !(owner.assigned_role in list("Research Director", "Scientist", "Roboticist")))
|
||||
var/datum/objective/download/download_objective = new
|
||||
download_objective.owner = owner
|
||||
download_objective.gen_amount_goal()
|
||||
|
||||
@@ -117,7 +117,7 @@
|
||||
if(isigniter(assembly.a_left) == isigniter(assembly.a_right))
|
||||
return
|
||||
|
||||
if((src in user.get_equipped_items()) && !user.canUnEquip(src))
|
||||
if((src in user.get_equipped_items(TRUE)) && !user.canUnEquip(src))
|
||||
to_chat(user, "<span class='warning'>[src] is stuck to you!</span>")
|
||||
return
|
||||
|
||||
|
||||
@@ -111,7 +111,7 @@
|
||||
var/list/cached_gases = air.gases //this speeds things up because accessing datum vars is slow
|
||||
var/temperature = air.temperature
|
||||
var/list/cached_results = air.reaction_results
|
||||
cached_results[id] = 0
|
||||
cached_results["fire"] = 0
|
||||
var/turf/open/location = isturf(holder) ? holder : null
|
||||
|
||||
var/burned_fuel = 0
|
||||
@@ -131,7 +131,7 @@
|
||||
ASSERT_GAS(/datum/gas/water_vapor, air) //oxygen+more-or-less hydrogen=H2O
|
||||
cached_gases[/datum/gas/water_vapor][MOLES] += burned_fuel/TRITIUM_BURN_OXY_FACTOR
|
||||
|
||||
cached_results[id] += burned_fuel
|
||||
cached_results["fire"] += burned_fuel
|
||||
|
||||
if(energy_released > 0)
|
||||
var/new_heat_capacity = air.heat_capacity()
|
||||
@@ -148,7 +148,7 @@
|
||||
item.temperature_expose(air, temperature, CELL_VOLUME)
|
||||
location.temperature_expose(air, temperature, CELL_VOLUME)
|
||||
|
||||
return cached_results[id] ? REACTING : NO_REACTION
|
||||
return cached_results["fire"] ? REACTING : NO_REACTION
|
||||
|
||||
//plasma combustion: combustion of oxygen and plasma (treated as hydrocarbons). creates hotspots. exothermic
|
||||
/datum/gas_reaction/plasmafire
|
||||
@@ -169,7 +169,7 @@
|
||||
var/list/cached_gases = air.gases //this speeds things up because accessing datum vars is slow
|
||||
var/temperature = air.temperature
|
||||
var/list/cached_results = air.reaction_results
|
||||
cached_results[id] = 0
|
||||
cached_results["fire"] = 0
|
||||
var/turf/open/location = isturf(holder) ? holder : null
|
||||
|
||||
//Handle plasma burning
|
||||
@@ -206,7 +206,7 @@
|
||||
|
||||
energy_released += FIRE_PLASMA_ENERGY_RELEASED * (plasma_burn_rate)
|
||||
|
||||
cached_results[id] += (plasma_burn_rate)*(1+oxygen_burn_rate)
|
||||
cached_results["fire"] += (plasma_burn_rate)*(1+oxygen_burn_rate)
|
||||
|
||||
if(energy_released > 0)
|
||||
var/new_heat_capacity = air.heat_capacity()
|
||||
@@ -223,7 +223,7 @@
|
||||
item.temperature_expose(air, temperature, CELL_VOLUME)
|
||||
location.temperature_expose(air, temperature, CELL_VOLUME)
|
||||
|
||||
return cached_results[id] ? REACTING : NO_REACTION
|
||||
return cached_results["fire"] ? REACTING : NO_REACTION
|
||||
|
||||
//fusion: a terrible idea that was fun but broken. Now reworked to be less broken and more interesting. Again.
|
||||
/datum/gas_reaction/fusion
|
||||
|
||||
@@ -62,6 +62,18 @@ Acts like a normal vent, but has an input AND output.
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume
|
||||
name = "large dual-port air vent"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_toxmix
|
||||
id = INCINERATOR_TOXMIX_DP_VENTPUMP
|
||||
frequency = FREQ_AIRLOCK_CONTROL
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_atmos
|
||||
id = INCINERATOR_ATMOS_DP_VENTPUMP
|
||||
frequency = FREQ_AIRLOCK_CONTROL
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_syndicatelava
|
||||
id = INCINERATOR_SYNDICATELAVA_DP_VENTPUMP
|
||||
frequency = FREQ_AIRLOCK_CONTROL
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
|
||||
@@ -520,7 +520,7 @@ GLOBAL_LIST_EMPTY(external_rsc_urls)
|
||||
if(!account_join_date)
|
||||
account_age = -1
|
||||
else
|
||||
var/datum/DBQuery/query_datediff = SSdbcore.NewQuery("SELECT DATEDIFF(Now(),[account_join_date])")
|
||||
var/datum/DBQuery/query_datediff = SSdbcore.NewQuery("SELECT DATEDIFF(Now(),'[account_join_date]')")
|
||||
if(!query_datediff.Execute())
|
||||
return
|
||||
if(query_datediff.NextRow())
|
||||
|
||||
@@ -1380,7 +1380,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
if(pickedui)
|
||||
UI_style = pickedui
|
||||
if("pda_style")
|
||||
var/pickedPDAStyle = input(user, "Choose your PDA style.", "Character Preference") as null|anything in list(MONO, SHARE, ORBITRON, VT)
|
||||
var/pickedPDAStyle = input(user, "Choose your PDA style.", "Character Preference", pda_style) as null|anything in GLOB.pda_styles
|
||||
if(pickedPDAStyle)
|
||||
pda_style = pickedPDAStyle
|
||||
if("pda_color")
|
||||
|
||||
@@ -168,7 +168,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
ghost_others = sanitize_inlist(ghost_others, GLOB.ghost_others_options, GHOST_OTHERS_DEFAULT_OPTION)
|
||||
menuoptions = SANITIZE_LIST(menuoptions)
|
||||
be_special = SANITIZE_LIST(be_special)
|
||||
pda_style = sanitize_inlist(MONO, VT, SHARE, ORBITRON)
|
||||
pda_style = sanitize_inlist(pda_style, GLOB.pda_styles, initial(pda_style))
|
||||
pda_color = sanitize_hexcolor(pda_color, 6, 1, initial(pda_color))
|
||||
|
||||
screenshake = sanitize_integer(screenshake, 0, 800, initial(screenshake))
|
||||
|
||||
@@ -151,7 +151,7 @@
|
||||
r_hand = /obj/item/twohanded/fireaxe
|
||||
|
||||
/datum/outfit/psycho/post_equip(mob/living/carbon/human/H)
|
||||
for(var/obj/item/carried_item in H.get_equipped_items())
|
||||
for(var/obj/item/carried_item in H.get_equipped_items(TRUE))
|
||||
carried_item.add_mob_blood(H)//Oh yes, there will be blood...
|
||||
for(var/obj/item/I in H.held_items)
|
||||
I.add_mob_blood(H)
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You begin recycling [EA]'s components...</span>")
|
||||
playsound(src, 'sound/items/electronic_assembly_emptying.ogg', 50, TRUE)
|
||||
if(!do_after(user, 30, target = src)) //short channel so you don't accidentally start emptying out a complex assembly
|
||||
if(!do_after(user, 30, target = src) || recycling) //short channel so you don't accidentally start emptying out a complex assembly
|
||||
return
|
||||
recycling = TRUE
|
||||
var/datum/component/material_container/mats = GetComponent(/datum/component/material_container)
|
||||
|
||||
@@ -286,6 +286,7 @@
|
||||
push_data()
|
||||
if(1)
|
||||
TR.weedlevel = 0
|
||||
TR.update_icon()
|
||||
if(2)
|
||||
if(TR.myseed) //Could be that they're just using it as a de-weeder
|
||||
TR.age = 0
|
||||
|
||||
@@ -49,6 +49,7 @@
|
||||
var/exp_type_department = ""
|
||||
|
||||
//The amount of good boy points playing this role will earn you towards a higher chance to roll antagonist next round
|
||||
//can be overriden by antag_rep.txt config
|
||||
var/antag_rep = 10
|
||||
|
||||
//Only override this proc
|
||||
@@ -67,6 +68,11 @@
|
||||
/datum/job/proc/special_check_latejoin(client/C)
|
||||
return TRUE
|
||||
|
||||
/datum/job/proc/GetAntagRep()
|
||||
. = CONFIG_GET(keyed_number_list/antag_rep)[lowertext(title)]
|
||||
if(. == null)
|
||||
return antag_rep
|
||||
|
||||
//Don't override this unless the job transforms into a non-human (Silicons do this for example)
|
||||
/datum/job/proc/equip(mob/living/carbon/human/H, visualsOnly = FALSE, announce = TRUE, latejoin = FALSE)
|
||||
if(!H)
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
playsound(loc, 'sound/items/gavel.ogg', 50, 1, -1)
|
||||
user.visible_message("<span class='notice'>[user] starts engraving a message into [T]...</span>", "<span class='notice'>You start engraving a message into [T]...</span>", "<span class='italics'>You hear a chipping sound.</span>")
|
||||
if(can_use() && do_after(user, tool_speed, target = T) && can_use()) //This looks messy but it's actually really clever!
|
||||
if(!locate(/obj/structure/chisel_message in T))
|
||||
if(!locate(/obj/structure/chisel_message) in T)
|
||||
user.visible_message("<span class='notice'>[user] leaves a message for future spacemen!</span>", "<span class='notice'>You engrave a message into [T]!</span>", "<span class='italics'>You hear a chipping sound.</span>")
|
||||
playsound(loc, 'sound/items/gavel.ogg', 50, 1, -1)
|
||||
var/obj/structure/chisel_message/M = new(T)
|
||||
|
||||
@@ -11,8 +11,6 @@
|
||||
layer = LIGHTING_LAYER
|
||||
invisibility = INVISIBILITY_LIGHTING
|
||||
|
||||
blend_mode = BLEND_ADD
|
||||
|
||||
var/needs_update = FALSE
|
||||
var/turf/myturf
|
||||
|
||||
|
||||
@@ -57,12 +57,12 @@
|
||||
if(!bounds)
|
||||
return FALSE
|
||||
|
||||
smooth_zlevel(world.maxz)
|
||||
repopulate_sorted_areas()
|
||||
|
||||
SSlighting.initialize_lighting_objects(block(locate(bounds[MAP_MINX], bounds[MAP_MINY], bounds[MAP_MINZ]),locate(bounds[MAP_MAXX], bounds[MAP_MAXY], bounds[MAP_MAXZ])))
|
||||
//initialize things that are normally initialized after map load
|
||||
initTemplateBounds(bounds)
|
||||
smooth_zlevel(world.maxz)
|
||||
log_game("Z-level [name] loaded at at [x],[y],[world.maxz]")
|
||||
|
||||
return level
|
||||
|
||||
@@ -379,7 +379,7 @@
|
||||
|
||||
/mob/living/proc/unequip_everything()
|
||||
var/list/items = list()
|
||||
items |= get_equipped_items()
|
||||
items |= get_equipped_items(TRUE)
|
||||
for(var/I in items)
|
||||
dropItemToGround(I)
|
||||
drop_all_held_items()
|
||||
|
||||
@@ -674,23 +674,6 @@
|
||||
else
|
||||
to_chat(C, "<span class='unconscious'>You feel a breath of fresh air... which is a sensation you don't recognise...</span>")
|
||||
|
||||
/mob/living/carbon/human/generateStaticOverlay()
|
||||
var/image/staticOverlay = image(icon('icons/effects/effects.dmi', "static"), loc = src)
|
||||
staticOverlay.override = 1
|
||||
staticOverlays["static"] = staticOverlay
|
||||
|
||||
staticOverlay = image(icon('icons/effects/effects.dmi', "blank"), loc = src)
|
||||
staticOverlay.override = 1
|
||||
staticOverlays["blank"] = staticOverlay
|
||||
|
||||
staticOverlay = getLetterImage(src, "H", 1)
|
||||
staticOverlay.override = 1
|
||||
staticOverlays["letter"] = staticOverlay
|
||||
|
||||
staticOverlay = getRandomAnimalImage(src)
|
||||
staticOverlay.override = 1
|
||||
staticOverlays["animal"] = staticOverlay
|
||||
|
||||
/mob/living/carbon/human/cuff_resist(obj/item/I)
|
||||
if(dna && dna.check_mutation(HULK))
|
||||
say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
|
||||
|
||||
@@ -1,15 +1,5 @@
|
||||
/mob/living/Initialize()
|
||||
. = ..()
|
||||
generateStaticOverlay()
|
||||
if(staticOverlays.len)
|
||||
for(var/mob/living/simple_animal/drone/D in GLOB.player_list)
|
||||
if(D && D.seeStatic)
|
||||
if(D.staticChoice in staticOverlays)
|
||||
D.staticOverlays |= staticOverlays[D.staticChoice]
|
||||
D.client.images |= staticOverlays[D.staticChoice]
|
||||
else //no choice? force static
|
||||
D.staticOverlays |= staticOverlays["static"]
|
||||
D.client.images |= staticOverlays["static"]
|
||||
if(unique_name)
|
||||
name = "[name] ([rand(1, 1000)])"
|
||||
real_name = name
|
||||
@@ -40,47 +30,14 @@
|
||||
if(buckled)
|
||||
buckled.unbuckle_mob(src,force=1)
|
||||
|
||||
for(var/mob/living/simple_animal/drone/D in GLOB.player_list)
|
||||
for(var/image/I in staticOverlays)
|
||||
D.staticOverlays.Remove(I)
|
||||
D.client.images.Remove(I)
|
||||
qdel(I)
|
||||
staticOverlays.len = 0
|
||||
remove_from_all_data_huds()
|
||||
GLOB.mob_living_list -= src
|
||||
QDEL_LIST(diseases)
|
||||
return ..()
|
||||
|
||||
/mob/living/ghostize(can_reenter_corpse = 1)
|
||||
var/prev_client = client
|
||||
. = ..()
|
||||
if(.)
|
||||
if(ranged_ability && prev_client)
|
||||
ranged_ability.remove_mousepointer(prev_client)
|
||||
|
||||
|
||||
/mob/living/proc/OpenCraftingMenu()
|
||||
return
|
||||
|
||||
/mob/living/proc/generateStaticOverlay()
|
||||
staticOverlays.Add(list("static", "blank", "letter", "animal"))
|
||||
var/image/staticOverlay = image(getStaticIcon(new/icon(icon,icon_state)), loc = src)
|
||||
staticOverlay.override = 1
|
||||
staticOverlays["static"] = staticOverlay
|
||||
|
||||
staticOverlay = image(getBlankIcon(new/icon(icon, icon_state)), loc = src)
|
||||
staticOverlay.override = 1
|
||||
staticOverlays["blank"] = staticOverlay
|
||||
|
||||
staticOverlay = getLetterImage(src)
|
||||
staticOverlay.override = 1
|
||||
staticOverlays["letter"] = staticOverlay
|
||||
|
||||
staticOverlay = getRandomAnimalImage(src)
|
||||
staticOverlay.override = 1
|
||||
staticOverlays["animal"] = staticOverlay
|
||||
|
||||
|
||||
//Generic Collide(). Override MobCollide() and ObjCollide() instead of this.
|
||||
/mob/living/Collide(atom/A)
|
||||
if(..()) //we are thrown onto something
|
||||
@@ -1184,6 +1141,11 @@
|
||||
clear_fullscreen("remote_view", 0)
|
||||
update_pipe_vision()
|
||||
|
||||
/mob/living/update_mouse_pointer()
|
||||
..()
|
||||
if (client && ranged_ability && ranged_ability.ranged_mousepointer)
|
||||
client.mouse_pointer_icon = ranged_ability.ranged_mousepointer
|
||||
|
||||
/mob/living/vv_edit_var(var_name, var_value)
|
||||
switch(var_name)
|
||||
if("stat")
|
||||
|
||||
@@ -55,7 +55,6 @@
|
||||
var/mob_size = MOB_SIZE_HUMAN
|
||||
var/list/mob_biotypes = list(MOB_ORGANIC)
|
||||
var/metabolism_efficiency = 1 //more or less efficiency to metabolize helpful/harmful reagents and regulate body temperature..
|
||||
var/list/image/staticOverlays = list()
|
||||
var/has_limbs = 0 //does the mob have distinct limbs?(arms,legs, chest,head)
|
||||
|
||||
var/list/pipes_shown = list()
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
/mob/living/Logout()
|
||||
update_z(null)
|
||||
if(ranged_ability && client)
|
||||
ranged_ability.remove_mousepointer(client)
|
||||
..()
|
||||
if(!key && mind) //key and mind have become separated.
|
||||
mind.active = 0 //This is to stop say, a mind.transfer_to call on a corpse causing a ghost to re-enter its body.
|
||||
@@ -74,7 +74,7 @@
|
||||
var/nuking = FALSE
|
||||
var/obj/machinery/doomsday_device/doomsday_device
|
||||
|
||||
var/mob/camera/aiEye/eyeobj = new
|
||||
var/mob/camera/aiEye/eyeobj
|
||||
var/sprint = 10
|
||||
var/cooldown = 0
|
||||
var/acceleration = 1
|
||||
@@ -85,6 +85,13 @@
|
||||
var/datum/action/innate/deploy_last_shell/redeploy_action = new
|
||||
var/chnotify = 0
|
||||
|
||||
var/multicam_allowed = FALSE
|
||||
var/multicam_on = FALSE
|
||||
var/obj/screen/movable/pic_in_pic/ai/master_multicam
|
||||
var/list/multicam_screens = list()
|
||||
var/list/all_eyes = list()
|
||||
var/max_multicams = 6
|
||||
|
||||
/mob/living/silicon/ai/Initialize(mapload, datum/ai_laws/L, mob/target_ai)
|
||||
. = ..()
|
||||
if(!target_ai) //If there is no player/brain inside.
|
||||
@@ -116,8 +123,7 @@
|
||||
|
||||
job = "AI"
|
||||
|
||||
eyeobj.ai = src
|
||||
eyeobj.forceMove(src.loc)
|
||||
create_eye()
|
||||
rename_self("ai")
|
||||
|
||||
holo_icon = getHologramIcon(icon('icons/mob/ai.dmi',"default"))
|
||||
@@ -871,9 +877,12 @@
|
||||
current = A
|
||||
if(client)
|
||||
if(ismovableatom(A))
|
||||
if(A != GLOB.ai_camera_room_landmark)
|
||||
end_multicam()
|
||||
client.perspective = EYE_PERSPECTIVE
|
||||
client.eye = A
|
||||
else
|
||||
end_multicam()
|
||||
if(isturf(loc))
|
||||
if(eyeobj)
|
||||
client.eye = eyeobj
|
||||
@@ -993,3 +1002,11 @@
|
||||
. = ..()
|
||||
if(!target_ai)
|
||||
target_ai = src //cheat! just give... ourselves as the spawned AI, because that's technically correct
|
||||
|
||||
/mob/living/silicon/ai/proc/camera_visibility(mob/camera/aiEye/moved_eye)
|
||||
GLOB.cameranet.visibility(moved_eye, client, all_eyes)
|
||||
|
||||
/mob/living/silicon/ai/forceMove(atom/destination)
|
||||
. = ..()
|
||||
if(.)
|
||||
end_multicam()
|
||||
|
||||
@@ -38,29 +38,63 @@ GLOBAL_DATUM_INIT(cameranet, /datum/cameranet, new)
|
||||
|
||||
// Updates what the aiEye can see. It is recommended you use this when the aiEye moves or it's location is set.
|
||||
|
||||
/datum/cameranet/proc/visibility(mob/camera/aiEye/ai)
|
||||
// 0xf = 15
|
||||
var/x1 = max(0, ai.x - 16) & ~(CHUNK_SIZE - 1)
|
||||
var/y1 = max(0, ai.y - 16) & ~(CHUNK_SIZE - 1)
|
||||
var/x2 = min(world.maxx, ai.x + 16) & ~(CHUNK_SIZE - 1)
|
||||
var/y2 = min(world.maxy, ai.y + 16) & ~(CHUNK_SIZE - 1)
|
||||
/datum/cameranet/proc/visibility(list/moved_eyes, client/C, list/other_eyes)
|
||||
if(!islist(moved_eyes))
|
||||
moved_eyes = moved_eyes ? list(moved_eyes) : list()
|
||||
if(islist(other_eyes))
|
||||
other_eyes = (other_eyes - moved_eyes)
|
||||
else
|
||||
other_eyes = list()
|
||||
|
||||
var/list/visibleChunks = list()
|
||||
var/list/chunks_pre_seen = list()
|
||||
var/list/chunks_post_seen = list()
|
||||
|
||||
for(var/x = x1; x <= x2; x += CHUNK_SIZE)
|
||||
for(var/y = y1; y <= y2; y += CHUNK_SIZE)
|
||||
visibleChunks |= getCameraChunk(x, y, ai.z)
|
||||
for(var/V in moved_eyes)
|
||||
var/mob/camera/aiEye/eye = V
|
||||
if(C)
|
||||
chunks_pre_seen |= eye.visibleCameraChunks
|
||||
// 0xf = 15
|
||||
var/static_range = eye.static_visibility_range
|
||||
var/x1 = max(0, eye.x - static_range) & ~(CHUNK_SIZE - 1)
|
||||
var/y1 = max(0, eye.y - static_range) & ~(CHUNK_SIZE - 1)
|
||||
var/x2 = min(world.maxx, eye.x + static_range) & ~(CHUNK_SIZE - 1)
|
||||
var/y2 = min(world.maxy, eye.y + static_range) & ~(CHUNK_SIZE - 1)
|
||||
|
||||
var/list/remove = ai.visibleCameraChunks - visibleChunks
|
||||
var/list/add = visibleChunks - ai.visibleCameraChunks
|
||||
var/list/visibleChunks = list()
|
||||
|
||||
for(var/chunk in remove)
|
||||
var/datum/camerachunk/c = chunk
|
||||
c.remove(ai)
|
||||
for(var/x = x1; x <= x2; x += CHUNK_SIZE)
|
||||
for(var/y = y1; y <= y2; y += CHUNK_SIZE)
|
||||
visibleChunks |= getCameraChunk(x, y, eye.z)
|
||||
|
||||
for(var/chunk in add)
|
||||
var/datum/camerachunk/c = chunk
|
||||
c.add(ai)
|
||||
var/list/remove = eye.visibleCameraChunks - visibleChunks
|
||||
var/list/add = visibleChunks - eye.visibleCameraChunks
|
||||
|
||||
for(var/chunk in remove)
|
||||
var/datum/camerachunk/c = chunk
|
||||
c.remove(eye, FALSE)
|
||||
|
||||
for(var/chunk in add)
|
||||
var/datum/camerachunk/c = chunk
|
||||
c.add(eye, FALSE)
|
||||
|
||||
if(C)
|
||||
chunks_post_seen |= eye.visibleCameraChunks
|
||||
|
||||
if(C)
|
||||
for(var/V in other_eyes)
|
||||
var/mob/camera/aiEye/eye = V
|
||||
chunks_post_seen |= eye.visibleCameraChunks
|
||||
|
||||
var/list/remove = chunks_pre_seen - chunks_post_seen
|
||||
var/list/add = chunks_post_seen - chunks_pre_seen
|
||||
|
||||
for(var/chunk in remove)
|
||||
var/datum/camerachunk/c = chunk
|
||||
C.images -= c.obscured
|
||||
|
||||
for(var/chunk in add)
|
||||
var/datum/camerachunk/c = chunk
|
||||
C.images += c.obscured
|
||||
|
||||
// Updates the chunks that the turf is located in. Use this when obstacles are destroyed or when doors open.
|
||||
|
||||
|
||||
@@ -20,10 +20,11 @@
|
||||
|
||||
// Add an AI eye to the chunk, then update if changed.
|
||||
|
||||
/datum/camerachunk/proc/add(mob/camera/aiEye/eye)
|
||||
var/client/client = eye.GetViewerClient()
|
||||
if(client)
|
||||
client.images += obscured
|
||||
/datum/camerachunk/proc/add(mob/camera/aiEye/eye, add_images = TRUE)
|
||||
if(add_images)
|
||||
var/client/client = eye.GetViewerClient()
|
||||
if(client)
|
||||
client.images += obscured
|
||||
eye.visibleCameraChunks += src
|
||||
visible++
|
||||
seenby += eye
|
||||
@@ -32,10 +33,11 @@
|
||||
|
||||
// Remove an AI eye from the chunk, then update if changed.
|
||||
|
||||
/datum/camerachunk/proc/remove(mob/camera/aiEye/eye)
|
||||
var/client/client = eye.GetViewerClient()
|
||||
if(client)
|
||||
client.images -= obscured
|
||||
/datum/camerachunk/proc/remove(mob/camera/aiEye/eye, remove_images = TRUE)
|
||||
if(remove_images)
|
||||
var/client/client = eye.GetViewerClient()
|
||||
if(client)
|
||||
client.images -= obscured
|
||||
eye.visibleCameraChunks -= src
|
||||
seenby -= eye
|
||||
if(visible > 0)
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
var/mob/living/silicon/ai/ai = null
|
||||
var/relay_speech = FALSE
|
||||
var/use_static = TRUE
|
||||
var/static_visibility_range = 16
|
||||
|
||||
// Use this when setting the aiEye's location.
|
||||
// It will also stream the chunk that the new loc is in.
|
||||
@@ -25,8 +26,8 @@
|
||||
else
|
||||
moveToNullspace() // ????
|
||||
if(use_static)
|
||||
GLOB.cameranet.visibility(src)
|
||||
if(ai.client)
|
||||
ai.camera_visibility(src)
|
||||
if(ai.client && !ai.multicam_on)
|
||||
ai.client.eye = src
|
||||
update_parallax_contents()
|
||||
//Holopad
|
||||
@@ -35,6 +36,8 @@
|
||||
H.move_hologram(ai, T)
|
||||
if(ai.camera_light_on)
|
||||
ai.light_cameras()
|
||||
if(ai.master_multicam)
|
||||
ai.master_multicam.refresh_view()
|
||||
|
||||
/mob/camera/aiEye/Move()
|
||||
return 0
|
||||
@@ -45,20 +48,27 @@
|
||||
return null
|
||||
|
||||
/mob/camera/aiEye/proc/RemoveImages()
|
||||
if(use_static)
|
||||
for(var/datum/camerachunk/chunk in visibleCameraChunks)
|
||||
chunk.remove(src)
|
||||
var/client/C = GetViewerClient()
|
||||
if(C && use_static)
|
||||
for(var/V in visibleCameraChunks)
|
||||
var/datum/camerachunk/c = V
|
||||
C.images -= c.obscured
|
||||
|
||||
/mob/camera/aiEye/Destroy()
|
||||
ai = null
|
||||
if(ai)
|
||||
ai.all_eyes -= src
|
||||
ai = null
|
||||
for(var/V in visibleCameraChunks)
|
||||
var/datum/camerachunk/c = V
|
||||
c.remove(src)
|
||||
return ..()
|
||||
|
||||
/atom/proc/move_camera_by_click()
|
||||
if(isAI(usr))
|
||||
var/mob/living/silicon/ai/AI = usr
|
||||
if(AI.eyeobj && AI.client.eye == AI.eyeobj)
|
||||
if(AI.eyeobj && (AI.multicam_on || (AI.client.eye == AI.eyeobj)) && (AI.eyeobj.z == z))
|
||||
AI.cameraFollow = null
|
||||
if (isturf(src.loc) || isturf(src))
|
||||
if (isturf(loc) || isturf(src))
|
||||
AI.eyeobj.setLoc(src)
|
||||
|
||||
// This will move the AIEye. It will also cause lights near the eye to light up, if toggled.
|
||||
@@ -95,12 +105,19 @@
|
||||
|
||||
if(!eyeobj || !eyeobj.loc || QDELETED(eyeobj))
|
||||
to_chat(src, "ERROR: Eyeobj not found. Creating new eye...")
|
||||
eyeobj = new(loc)
|
||||
eyeobj.ai = src
|
||||
eyeobj.name = "[src.name] (AI Eye)" // Give it a name
|
||||
create_eye()
|
||||
|
||||
eyeobj.setLoc(loc)
|
||||
|
||||
/mob/living/silicon/ai/proc/create_eye()
|
||||
if(eyeobj)
|
||||
return
|
||||
eyeobj = new /mob/camera/aiEye()
|
||||
all_eyes += eyeobj
|
||||
eyeobj.ai = src
|
||||
eyeobj.setLoc(loc)
|
||||
eyeobj.name = "[name] (AI Eye)"
|
||||
|
||||
/mob/living/silicon/ai/verb/toggle_acceleration()
|
||||
set category = "AI Commands"
|
||||
set name = "Toggle Camera Acceleration"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user