Merge branch 'master' into typing_indicators

This commit is contained in:
kevinz000
2020-05-07 09:04:44 -07:00
committed by GitHub
540 changed files with 286326 additions and 10262 deletions
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,160 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"a" = (
/turf/open/floor/plating/asteroid/snow/icemoon,
/area/icemoon/surface/outdoors)
"b" = (
/turf/closed/mineral/random/snow/no_caves,
/area/icemoon/surface/outdoors)
"c" = (
/turf/open/water/cursed_spring,
/area/icemoon/surface/outdoors)
"d" = (
/obj/item/paper/crumpled{
info = "When one falls into this hot spring, they shall forever be turned into..."
},
/turf/open/floor/plating/asteroid/snow/icemoon,
/area/icemoon/surface/outdoors)
(1,1,1) = {"
b
b
b
b
b
b
b
b
b
b
b
"}
(2,1,1) = {"
b
b
b
a
a
a
a
a
b
b
b
"}
(3,1,1) = {"
b
b
a
a
a
a
a
a
a
b
b
"}
(4,1,1) = {"
b
a
a
a
c
c
c
a
a
a
b
"}
(5,1,1) = {"
b
a
a
c
c
c
c
c
a
a
b
"}
(6,1,1) = {"
b
a
a
c
c
c
c
c
a
a
b
"}
(7,1,1) = {"
b
a
a
c
c
c
c
c
a
a
b
"}
(8,1,1) = {"
b
a
a
a
c
c
c
a
a
a
b
"}
(9,1,1) = {"
b
b
a
a
a
d
a
a
a
b
b
"}
(10,1,1) = {"
b
b
b
a
a
a
a
a
b
b
b
"}
(11,1,1) = {"
b
b
b
b
b
b
b
b
b
b
b
"}
@@ -0,0 +1,172 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"a" = (
/turf/closed/mineral/random/snow/no_caves,
/area/icemoon/surface/outdoors)
"b" = (
/obj/structure/sign/poster/contraband/lusty_xenomorph,
/turf/closed/indestructible/abductor,
/area/icemoon/surface/outdoors)
"c" = (
/turf/open/floor/mineral/diamond,
/area/icemoon/surface/outdoors)
"d" = (
/obj/item/reagent_containers/food/drinks/trophy/gold_cup,
/turf/open/floor/mineral/diamond,
/area/icemoon/surface/outdoors)
"e" = (
/obj/item/greentext{
light_color = "#64C864";
light_range = 1
},
/turf/open/floor/mineral/diamond,
/area/icemoon/surface/outdoors)
"f" = (
/obj/structure/sign/poster/contraband/lusty_xenomorph,
/obj/structure/falsewall/abductor,
/obj/structure/fans/tiny,
/turf/open/floor/mineral/diamond,
/area/icemoon/surface/outdoors)
(1,1,1) = {"
a
a
a
a
a
a
a
a
a
a
a
"}
(2,1,1) = {"
a
a
a
a
a
a
a
a
a
a
a
"}
(3,1,1) = {"
a
a
a
a
b
b
b
a
a
a
a
"}
(4,1,1) = {"
a
a
a
b
c
c
c
b
a
a
a
"}
(5,1,1) = {"
a
a
b
c
c
d
c
c
b
a
a
"}
(6,1,1) = {"
a
a
b
c
d
e
d
c
f
a
a
"}
(7,1,1) = {"
a
a
b
c
c
d
c
c
b
a
a
"}
(8,1,1) = {"
a
a
a
b
c
c
c
b
a
a
a
"}
(9,1,1) = {"
a
a
a
a
b
b
b
a
a
a
a
"}
(10,1,1) = {"
a
a
a
a
a
a
a
a
a
a
a
"}
(11,1,1) = {"
a
a
a
a
a
a
a
a
a
a
a
"}
@@ -0,0 +1,886 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"a" = (
/turf/closed/mineral/random/snow/no_caves,
/area/icemoon/surface/outdoors)
"b" = (
/turf/closed/wall/mineral/wood/nonmetal,
/area/ruin/unpowered)
"c" = (
/obj/structure/closet/toolcloset,
/obj/item/wrench,
/obj/item/screwdriver,
/obj/item/crowbar,
/obj/item/weldingtool/largetank,
/obj/item/wirecutters,
/obj/item/radio/off,
/turf/open/floor/wood,
/area/ruin/unpowered)
"d" = (
/turf/open/openspace/icemoon,
/area/icemoon/surface/outdoors)
"e" = (
/obj/item/clothing/suit/hooded/explorer,
/obj/item/clothing/mask/gas/explorer,
/obj/item/clothing/gloves/color/black,
/obj/item/storage/backpack/explorer,
/obj/item/flashlight/lantern,
/obj/item/storage/bag/ore,
/obj/structure/closet,
/obj/item/clothing/shoes/winterboots/ice_boots,
/turf/open/floor/wood,
/area/ruin/unpowered)
"f" = (
/turf/open/floor/wood,
/area/ruin/unpowered)
"g" = (
/obj/structure/fireplace,
/turf/open/floor/wood,
/area/ruin/unpowered)
"h" = (
/obj/structure/flora/rock/icy,
/turf/closed/mineral/random/snow/no_caves,
/area/icemoon/surface/outdoors)
"i" = (
/turf/template_noop,
/area/template_noop)
"j" = (
/obj/structure/sink/kitchen,
/turf/open/floor/wood,
/area/ruin/unpowered)
"k" = (
/obj/structure/closet/crate/freezer,
/turf/open/floor/wood,
/area/ruin/unpowered)
"l" = (
/obj/machinery/vending/dinnerware,
/turf/open/floor/wood,
/area/ruin/unpowered)
"m" = (
/obj/structure/barricade/wooden/crude/snow,
/obj/structure/mineral_door/wood,
/turf/open/floor/wood,
/area/ruin/unpowered)
"n" = (
/turf/closed/mineral/random/snow/no_caves,
/area/ruin/unpowered)
"o" = (
/obj/item/reagent_containers/food/drinks/beer,
/turf/open/floor/wood,
/area/ruin/unpowered)
"p" = (
/obj/machinery/light/broken{
dir = 4
},
/turf/open/floor/wood,
/area/ruin/unpowered)
"q" = (
/obj/structure/table/wood,
/obj/item/pen,
/obj/machinery/light/broken{
dir = 8
},
/obj/item/paper/crumpled/bloody{
info = "help...";
text = ""
},
/turf/open/floor/wood,
/area/ruin/unpowered)
"r" = (
/obj/item/chair/wood,
/obj/effect/decal/cleanable/blood/splatter,
/obj/effect/mob_spawn/human/miner/explorer,
/obj/effect/decal/cleanable/blood/drip,
/turf/open/floor/wood,
/area/ruin/unpowered)
"s" = (
/obj/effect/decal/cleanable/trail_holder,
/turf/open/floor/wood,
/area/ruin/unpowered)
"u" = (
/obj/structure/ladder,
/turf/open/floor/wood,
/area/ruin/unpowered)
(1,1,1) = {"
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
"}
(2,1,1) = {"
i
i
i
i
i
i
i
i
d
d
d
d
d
d
d
d
i
i
i
i
i
i
i
i
i
"}
(3,1,1) = {"
i
i
i
i
i
d
d
d
d
d
d
d
d
d
d
d
d
d
d
i
i
i
i
i
i
"}
(4,1,1) = {"
i
i
i
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
i
i
i
i
i
"}
(5,1,1) = {"
i
i
i
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
i
i
i
i
"}
(6,1,1) = {"
i
i
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
i
i
i
"}
(7,1,1) = {"
i
i
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
i
i
i
"}
(8,1,1) = {"
i
i
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
i
i
i
"}
(9,1,1) = {"
i
d
d
d
d
d
d
d
d
b
b
b
b
b
b
b
d
d
d
d
d
d
d
i
i
"}
(10,1,1) = {"
i
d
d
d
d
d
d
d
b
b
b
b
b
b
b
b
b
d
d
d
d
d
d
i
i
"}
(11,1,1) = {"
i
d
d
d
d
d
d
d
b
b
c
f
f
o
q
b
b
d
d
d
d
d
d
d
i
"}
(12,1,1) = {"
i
d
d
d
d
d
d
d
b
b
e
f
f
f
r
b
b
d
d
d
d
d
d
d
i
"}
(13,1,1) = {"
i
d
d
d
d
d
d
d
b
b
f
f
f
f
s
b
b
d
d
d
d
d
d
d
i
"}
(14,1,1) = {"
i
d
d
d
d
d
d
d
b
b
g
f
f
f
s
b
b
d
d
d
d
d
d
d
i
"}
(15,1,1) = {"
i
d
d
d
d
d
d
d
b
b
f
f
f
f
s
b
b
d
d
d
d
d
d
d
i
"}
(16,1,1) = {"
i
d
d
d
d
d
d
d
b
b
j
f
f
f
s
b
b
d
d
d
d
d
d
d
i
"}
(17,1,1) = {"
i
d
d
d
d
d
d
d
b
b
k
f
f
f
s
b
b
d
d
d
d
d
d
d
i
"}
(18,1,1) = {"
i
d
d
d
d
d
d
d
b
b
l
f
f
f
u
b
b
d
d
d
d
d
d
d
i
"}
(19,1,1) = {"
i
d
d
d
d
d
d
d
b
b
b
f
f
p
b
b
b
d
d
d
d
d
d
d
i
"}
(20,1,1) = {"
i
i
d
d
d
d
d
d
d
b
b
b
f
b
b
b
d
d
d
d
d
d
d
d
i
"}
(21,1,1) = {"
i
i
d
d
d
d
d
d
d
d
d
b
f
b
d
d
d
d
d
d
d
d
d
d
i
"}
(22,1,1) = {"
i
i
d
d
d
d
d
d
d
d
d
b
f
b
d
d
d
d
d
d
d
d
d
d
i
"}
(23,1,1) = {"
i
i
d
d
d
d
d
d
d
d
d
b
f
b
d
d
d
d
d
d
d
d
d
i
i
"}
(24,1,1) = {"
i
i
d
d
d
d
d
d
d
d
d
b
m
b
d
d
d
d
d
d
d
d
d
i
i
"}
(25,1,1) = {"
i
i
i
d
d
d
d
d
d
d
a
h
n
h
a
d
d
d
d
d
d
d
i
i
i
"}
(26,1,1) = {"
i
i
i
d
d
d
d
d
d
a
a
a
h
a
a
a
d
d
d
d
d
d
i
i
i
"}
(27,1,1) = {"
i
i
i
i
d
d
d
d
a
a
a
a
a
a
a
a
a
d
d
d
d
i
i
i
i
"}
(28,1,1) = {"
i
i
i
i
i
d
d
a
a
a
a
a
a
a
a
a
a
a
d
d
i
i
i
i
i
"}
(29,1,1) = {"
i
i
i
i
i
i
i
a
a
a
a
a
a
a
a
a
a
a
i
i
i
i
i
i
i
"}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,178 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"a" = (
/turf/template_noop,
/area/template_noop)
"b" = (
/turf/closed/wall/ice,
/area/ruin/powered/bathhouse)
"c" = (
/obj/machinery/shower{
pixel_y = 16
},
/obj/structure/curtain,
/turf/open/floor/plasteel/white,
/area/ruin/powered/bathhouse)
"d" = (
/turf/closed/mineral/random/snow/no_caves,
/area/icemoon/underground/explored)
"e" = (
/obj/structure/mirror{
pixel_y = 28
},
/obj/structure/sink{
pixel_y = 20
},
/turf/open/floor/plasteel/white,
/area/ruin/powered/bathhouse)
"f" = (
/obj/structure/table/greyscale,
/obj/item/bikehorn/rubberducky,
/turf/open/floor/plasteel/white,
/area/ruin/powered/bathhouse)
"g" = (
/turf/open/floor/plasteel/white,
/area/ruin/powered/bathhouse)
"h" = (
/obj/item/soap,
/turf/open/floor/plasteel/white,
/area/ruin/powered/bathhouse)
"i" = (
/obj/machinery/door/airlock/freezer{
name = "bath house airlock"
},
/turf/open/floor/plasteel/white,
/area/ruin/powered/bathhouse)
"j" = (
/turf/closed/wall/mineral/wood,
/area/ruin/powered/bathhouse)
"k" = (
/turf/open/floor/wood,
/area/ruin/powered/bathhouse)
"l" = (
/obj/structure/table/wood,
/obj/item/reagent_containers/food/snacks/meatballspaghetti,
/turf/open/floor/wood,
/area/ruin/powered/bathhouse)
"m" = (
/obj/structure/bookcase/random,
/turf/open/floor/wood,
/area/ruin/powered/bathhouse)
"n" = (
/turf/open/floor/plating/asteroid/snow/ice/icemoon,
/area/icemoon/underground/explored)
"o" = (
/obj/structure/bed,
/obj/item/bedsheet,
/turf/open/floor/wood,
/area/ruin/powered/bathhouse)
(1,1,1) = {"
b
b
b
b
b
d
a
a
"}
(2,1,1) = {"
b
c
g
g
b
j
j
j
"}
(3,1,1) = {"
b
b
g
g
i
k
k
j
"}
(4,1,1) = {"
b
c
g
g
b
l
k
j
"}
(5,1,1) = {"
b
b
g
g
b
m
o
j
"}
(6,1,1) = {"
b
c
g
g
b
j
j
j
"}
(7,1,1) = {"
b
b
g
h
b
n
n
d
"}
(8,1,1) = {"
b
e
g
g
b
n
n
d
"}
(9,1,1) = {"
b
e
g
g
i
n
n
d
"}
(10,1,1) = {"
b
f
g
g
b
n
d
a
"}
(11,1,1) = {"
b
b
b
b
b
d
a
a
"}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,806 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"aa" = (
/turf/template_noop,
/area/template_noop)
"ab" = (
/obj/structure/table/wood/fancy/black,
/obj/item/documents/syndicate/mining,
/obj/effect/decal/cleanable/cobweb,
/turf/open/floor/plasteel/cult,
/area/ruin/unpowered/buried_library)
"ac" = (
/turf/closed/wall/mineral/wood,
/area/ruin/unpowered/buried_library)
"ad" = (
/turf/closed/mineral/random/snow/no_caves,
/area/icemoon/underground/explored)
"ae" = (
/turf/open/floor/wood,
/area/ruin/unpowered/buried_library)
"af" = (
/obj/item/stack/sheet/mineral/wood,
/turf/open/floor/wood,
/area/ruin/unpowered/buried_library)
"ag" = (
/obj/item/feather,
/turf/open/floor/wood,
/area/ruin/unpowered/buried_library)
"ah" = (
/obj/structure/bookcase/random,
/turf/open/floor/wood,
/area/ruin/unpowered/buried_library)
"ai" = (
/obj/structure/table/wood/fancy/black,
/obj/item/paper/crumpled/fluff/stations/lavaland/library/diary2,
/obj/effect/decal/cleanable/cobweb/cobweb2,
/turf/open/floor/plasteel/cult,
/area/ruin/unpowered/buried_library)
"ak" = (
/turf/closed/mineral/random/snow/no_caves,
/area/ruin/unpowered/buried_library)
"al" = (
/turf/closed/wall/mineral/iron,
/area/ruin/unpowered/buried_library)
"am" = (
/obj/structure/table/wood/fancy/black,
/obj/item/book_of_babel,
/turf/open/floor/plasteel/cult,
/area/ruin/unpowered/buried_library)
"ao" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/wood,
/area/ruin/unpowered/buried_library)
"ap" = (
/obj/item/stack/sheet/mineral/wood,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/wood,
/area/ruin/unpowered/buried_library)
"aq" = (
/obj/structure/fluff/paper{
dir = 1
},
/turf/open/floor/wood,
/area/ruin/unpowered/buried_library)
"ar" = (
/turf/open/floor/plasteel/cult,
/area/ruin/unpowered/buried_library)
"as" = (
/obj/effect/decal/cleanable/dirt,
/obj/item/paper/fluff/ruins/oldstation/protosing,
/turf/closed/mineral/random/snow/no_caves,
/area/ruin/unpowered/buried_library)
"at" = (
/obj/structure/fluff/paper,
/turf/open/floor/wood,
/area/ruin/unpowered/buried_library)
"av" = (
/obj/structure/bookcase/random,
/turf/closed/mineral/random/snow/no_caves,
/area/ruin/unpowered/buried_library)
"aw" = (
/turf/open/floor/plating,
/area/ruin/unpowered/buried_library)
"ax" = (
/obj/effect/decal/cleanable/dirt,
/turf/closed/mineral/random/snow/no_caves,
/area/ruin/unpowered/buried_library)
"ay" = (
/obj/machinery/door/keycard/library,
/turf/open/floor/plasteel/cult,
/area/ruin/unpowered/buried_library)
"az" = (
/obj/item/paper/crumpled/fluff/stations/lavaland/library/diary,
/turf/open/floor/wood,
/area/ruin/unpowered/buried_library)
"aA" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/ruin/unpowered/buried_library)
"aC" = (
/obj/item/feather,
/turf/closed/mineral/random/snow/no_caves,
/area/ruin/unpowered/buried_library)
"aD" = (
/turf/open/floor/carpet/black,
/area/ruin/unpowered/buried_library)
"aE" = (
/obj/item/stack/sheet/mineral/wood,
/obj/item/book/manual/random,
/turf/open/floor/wood,
/area/ruin/unpowered/buried_library)
"aF" = (
/obj/item/book/manual/random,
/obj/effect/decal/cleanable/dirt,
/turf/closed/mineral/random/snow/no_caves,
/area/ruin/unpowered/buried_library)
"aG" = (
/obj/structure/table/bronze,
/obj/item/stack/ore/slag,
/turf/open/floor/carpet/black,
/area/ruin/unpowered/buried_library)
"aH" = (
/obj/structure/table/bronze,
/obj/item/statuebust,
/turf/open/floor/carpet/black,
/area/ruin/unpowered/buried_library)
"aI" = (
/obj/effect/mob_spawn/human/skeleton,
/obj/item/clothing/head/rice_hat,
/turf/open/floor/plasteel/cult,
/area/ruin/unpowered/buried_library)
"aJ" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel/cult,
/area/ruin/unpowered/buried_library)
"aK" = (
/obj/item/feather,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel/cult,
/area/ruin/unpowered/buried_library)
"aL" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/fluff/paper/stack,
/turf/open/floor/wood,
/area/ruin/unpowered/buried_library)
"aM" = (
/obj/item/stack/sheet/mineral/wood,
/obj/item/book/manual/random,
/turf/closed/mineral/random/snow/no_caves,
/area/ruin/unpowered/buried_library)
"aN" = (
/obj/structure/statue/sandstone/venus,
/turf/open/floor/carpet/black,
/area/ruin/unpowered/buried_library)
"aO" = (
/mob/living/simple_animal/pet/fox,
/turf/open/floor/wood,
/area/ruin/unpowered/buried_library)
"aP" = (
/obj/item/keycard/library,
/turf/closed/mineral/random/snow/no_caves,
/area/ruin/unpowered/buried_library)
"aQ" = (
/obj/effect/decal/cleanable/dirt,
/obj/item/paper/fluff/awaymissions/moonoutpost19/research/larva_autopsy,
/turf/open/floor/wood,
/area/ruin/unpowered/buried_library)
"aR" = (
/obj/structure/fluff/paper/stack,
/turf/open/floor/wood,
/area/ruin/unpowered/buried_library)
"aS" = (
/obj/structure/table/wood/fancy/black,
/obj/effect/decal/cleanable/dirt,
/obj/item/paper/secretrecipe,
/obj/item/flashlight/lantern/jade{
on = 1
},
/turf/open/floor/plasteel/cult,
/area/ruin/unpowered/buried_library)
"aT" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/fluff/paper,
/turf/open/floor/wood,
/area/ruin/unpowered/buried_library)
"aV" = (
/obj/item/stack/sheet/mineral/wood,
/obj/structure/fluff/paper/stack,
/turf/open/floor/wood,
/area/ruin/unpowered/buried_library)
"aW" = (
/obj/structure/fluff/paper/stack,
/turf/open/floor/plasteel/cult,
/area/ruin/unpowered/buried_library)
"aX" = (
/obj/structure/table/bronze,
/obj/item/statuebust,
/turf/open/floor/plating,
/area/ruin/unpowered/buried_library)
"aY" = (
/obj/structure/table_frame/wood,
/turf/open/floor/plating,
/area/ruin/unpowered/buried_library)
"aZ" = (
/obj/structure/fluff/paper/stack,
/obj/structure/fluff/paper,
/turf/open/floor/wood,
/area/ruin/unpowered/buried_library)
"ba" = (
/obj/structure/barricade/wooden/snowed,
/turf/closed/mineral/random/snow/no_caves,
/area/ruin/unpowered/buried_library)
"bc" = (
/obj/item/feather,
/obj/structure/fluff/paper,
/obj/structure/fluff/paper{
dir = 1
},
/turf/open/floor/wood,
/area/ruin/unpowered/buried_library)
"bd" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/fluff/paper{
dir = 1
},
/turf/open/floor/wood,
/area/ruin/unpowered/buried_library)
"be" = (
/obj/structure/fluff/paper{
dir = 5
},
/turf/open/floor/wood,
/area/ruin/unpowered/buried_library)
"bf" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/fluff/paper{
dir = 4
},
/turf/open/floor/wood,
/area/ruin/unpowered/buried_library)
"bg" = (
/obj/item/paper/fluff/ruins/oldstation/protogun,
/turf/closed/mineral/random/snow/no_caves,
/area/ruin/unpowered/buried_library)
"bh" = (
/obj/effect/decal/cleanable/dirt,
/mob/living/simple_animal/pet/fox,
/turf/open/floor/wood,
/area/ruin/unpowered/buried_library)
"bi" = (
/obj/structure/fluff/paper,
/turf/closed/mineral/random/snow/no_caves,
/area/ruin/unpowered/buried_library)
"bj" = (
/obj/item/book/manual/random,
/turf/closed/mineral/random/snow/no_caves,
/area/ruin/unpowered/buried_library)
"bk" = (
/obj/structure/fluff/paper{
dir = 10
},
/turf/open/floor/wood,
/area/ruin/unpowered/buried_library)
"bl" = (
/obj/item/storage/box/fountainpens,
/turf/closed/mineral/random/snow/no_caves,
/area/ruin/unpowered/buried_library)
"bm" = (
/obj/structure/fluff/paper/stack,
/turf/closed/mineral/random/snow/no_caves,
/area/ruin/unpowered/buried_library)
"bn" = (
/obj/item/book/manual/random,
/obj/item/stack/sheet/mineral/wood,
/turf/closed/mineral/random/snow/no_caves,
/area/ruin/unpowered/buried_library)
"bo" = (
/obj/item/stack/sheet/mineral/wood,
/turf/closed/mineral/random/snow/no_caves,
/area/ruin/unpowered/buried_library)
"bp" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/fluff/paper,
/turf/closed/mineral/random/snow/no_caves,
/area/ruin/unpowered/buried_library)
"bq" = (
/obj/structure/mineral_door/wood,
/obj/structure/barricade/wooden/crude/snow,
/turf/open/floor/wood,
/area/ruin/unpowered/buried_library)
"br" = (
/obj/structure/girder,
/turf/closed/mineral/random/snow/no_caves,
/area/ruin/unpowered/buried_library)
"bt" = (
/obj/effect/decal/cleanable/dirt,
/turf/template_noop,
/area/template_noop)
"bu" = (
/obj/item/stack/sheet/mineral/wood,
/turf/closed/mineral/random/snow/no_caves,
/area/icemoon/underground/explored)
"bw" = (
/turf/open/floor/wood,
/area/icemoon/underground/explored)
"by" = (
/obj/item/statuebust,
/turf/open/floor/carpet/black,
/area/ruin/unpowered/buried_library)
"bz" = (
/obj/item/flashlight/lantern/jade{
on = 1
},
/turf/open/floor/plating,
/area/ruin/unpowered/buried_library)
"bA" = (
/obj/structure/fluff/paper/stack,
/turf/open/floor/plating,
/area/ruin/unpowered/buried_library)
"bB" = (
/obj/structure/fluff/paper/stack,
/turf/open/floor/carpet/black,
/area/ruin/unpowered/buried_library)
"bC" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/fluff/paper{
dir = 1
},
/mob/living/simple_animal/pet/fox,
/turf/open/floor/wood,
/area/ruin/unpowered/buried_library)
(1,1,1) = {"
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
ad
ad
ad
ad
ad
ad
ad
bt
aa
"}
(2,1,1) = {"
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa
ak
ak
ak
ak
ak
ac
ba
ac
ac
ac
ad
ad
aa
"}
(3,1,1) = {"
aa
aa
aa
aa
aa
aa
aa
ak
ak
ak
ak
bo
ak
ak
ak
bm
ae
af
bk
ac
ad
ad
aa
"}
(4,1,1) = {"
aa
aa
aa
aa
aa
aa
ak
ak
aR
ak
ak
ae
bj
av
ak
ah
aL
ah
aT
ac
ad
aa
aa
"}
(5,1,1) = {"
aa
aa
aa
aa
aa
ak
ak
ak
aC
ae
aQ
ah
ak
av
bg
ah
aT
ah
ak
ac
ad
ad
aa
"}
(6,1,1) = {"
aa
aa
aa
aa
ad
ac
ak
ae
ak
aM
aO
ah
bm
ah
aA
ah
ao
ah
aq
ac
ad
ad
ad
"}
(7,1,1) = {"
aa
aa
aa
aa
ad
ac
ak
bm
ak
ao
aR
ao
aA
ao
ae
ah
aZ
ah
bC
ac
ad
ad
ad
"}
(8,1,1) = {"
aa
aa
aa
aa
ad
ak
ak
av
aA
ak
aG
aD
aX
ak
ao
ae
ao
ah
ae
ac
br
ad
ad
"}
(9,1,1) = {"
aa
aa
aa
aa
ad
ac
as
av
aF
aD
aD
bz
aD
bB
ak
ae
ao
ae
ao
ac
ax
bw
ad
"}
(10,1,1) = {"
aa
aa
aa
ad
ad
ac
ap
ax
ak
aD
aD
aN
ak
aw
ak
ao
af
aR
ae
bq
ae
bu
ad
"}
(11,1,1) = {"
aa
al
al
al
al
al
ae
ah
aR
aD
ak
aD
aD
by
ao
aw
ao
ae
bm
ac
ae
ad
ad
"}
(12,1,1) = {"
ad
al
ab
aI
ar
al
aR
aE
af
aD
aH
bA
aY
aD
ak
ae
bm
ah
ag
br
ac
ad
ad
"}
(13,1,1) = {"
ad
al
am
aJ
aW
ay
ae
ah
ao
ae
ao
ae
af
ax
bi
ah
ak
ah
bp
ac
ad
ad
ad
"}
(14,1,1) = {"
ad
al
aS
aW
aK
al
at
ah
ak
ah
bh
ah
az
ah
ak
ah
ak
bn
aT
ac
ad
aa
aa
"}
(15,1,1) = {"
ad
al
al
ai
ar
al
bc
ah
aL
ah
aA
ah
ao
ah
ak
ak
bl
ak
ak
ak
ad
aa
aa
"}
(16,1,1) = {"
ad
ad
al
al
al
al
bd
ah
ao
ah
ao
aV
ak
ah
ax
ak
bm
bo
ak
br
bu
aa
aa
"}
(17,1,1) = {"
aa
ad
ad
ad
ad
ac
be
bf
ae
aP
ae
aR
ae
ax
ak
bj
ak
ad
ad
ad
aa
aa
aa
"}
(18,1,1) = {"
aa
aa
aa
aa
ad
ac
ac
ac
ac
ac
ac
ba
ac
ac
br
ad
aa
ad
aa
aa
aa
aa
aa
"}
(19,1,1) = {"
aa
aa
aa
aa
aa
ad
ad
ad
ad
ad
ad
aa
ad
ad
aa
aa
aa
aa
aa
aa
aa
aa
aa
"}
@@ -0,0 +1,818 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"a" = (
/turf/open/floor/plating/ice/icemoon,
/area/icemoon/underground/explored)
"c" = (
/obj/structure/ladder,
/turf/open/floor/plating/ice/icemoon,
/area/icemoon/underground/explored)
"d" = (
/turf/template_noop,
/area/template_noop)
"f" = (
/obj/item/flashlight/lantern{
on = 1
},
/turf/open/floor/plating/ice/icemoon,
/area/icemoon/underground/explored)
"g" = (
/obj/item/clothing/suit/hooded/explorer,
/obj/effect/decal/cleanable/blood/gibs/up,
/turf/open/floor/plating/ice/icemoon,
/area/icemoon/underground/explored)
"h" = (
/obj/item/clothing/shoes/winterboots/ice_boots,
/turf/open/floor/plating/ice/icemoon,
/area/icemoon/underground/explored)
"i" = (
/obj/item/kitchen/knife/combat/survival,
/turf/open/floor/plating/ice/icemoon,
/area/icemoon/underground/explored)
"T" = (
/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner,
/turf/open/floor/plating/ice/icemoon,
/area/icemoon/underground/explored)
(1,1,1) = {"
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
"}
(2,1,1) = {"
d
d
d
d
d
d
d
a
a
a
a
a
a
a
a
a
a
a
d
d
d
d
d
d
d
"}
(3,1,1) = {"
d
d
d
d
d
a
a
a
a
a
a
a
a
a
a
a
a
a
a
d
d
d
d
d
d
"}
(4,1,1) = {"
d
d
d
d
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
d
d
d
d
d
"}
(5,1,1) = {"
d
d
d
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
d
d
d
d
"}
(6,1,1) = {"
d
d
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
d
d
d
"}
(7,1,1) = {"
d
d
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
d
d
"}
(8,1,1) = {"
d
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
d
d
"}
(9,1,1) = {"
d
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
d
"}
(10,1,1) = {"
d
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
d
"}
(11,1,1) = {"
d
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
d
"}
(12,1,1) = {"
d
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
d
"}
(13,1,1) = {"
d
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
d
"}
(14,1,1) = {"
d
a
a
a
a
a
a
a
a
a
a
a
T
a
a
a
a
a
a
a
a
a
a
a
d
"}
(15,1,1) = {"
d
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
d
"}
(16,1,1) = {"
d
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
d
"}
(17,1,1) = {"
d
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
d
"}
(18,1,1) = {"
d
a
a
a
a
a
a
a
a
a
a
a
a
a
c
a
a
a
a
a
a
a
a
a
d
"}
(19,1,1) = {"
d
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
d
"}
(20,1,1) = {"
d
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
d
"}
(21,1,1) = {"
d
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
d
"}
(22,1,1) = {"
d
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
d
"}
(23,1,1) = {"
d
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
d
d
"}
(24,1,1) = {"
d
d
a
a
a
a
f
i
a
a
a
a
a
a
a
a
a
a
a
a
a
a
d
d
d
"}
(25,1,1) = {"
d
d
d
a
a
a
a
g
a
a
a
a
a
a
a
a
a
a
a
a
a
d
d
d
d
"}
(26,1,1) = {"
d
d
d
d
a
a
a
h
a
a
a
a
a
a
a
a
a
a
a
a
d
d
d
d
d
"}
(27,1,1) = {"
d
d
d
d
d
a
a
a
a
a
a
a
a
a
a
a
a
a
a
d
d
d
d
d
d
"}
(28,1,1) = {"
d
d
d
d
d
d
d
a
a
a
a
a
a
a
a
a
a
a
d
d
d
d
d
d
d
"}
(29,1,1) = {"
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
"}
@@ -0,0 +1,47 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"a" = (
/turf/template_noop,
/area/icemoon/underground/explored)
"b" = (
/turf/open/floor/plating/asteroid/snow/icemoon,
/area/icemoon/underground/explored)
"c" = (
/obj/effect/sliding_puzzle/lavaland,
/turf/open/floor/plating/asteroid/snow/icemoon,
/area/icemoon/underground/explored)
(1,1,1) = {"
a
a
a
a
a
"}
(2,1,1) = {"
a
b
b
b
a
"}
(3,1,1) = {"
a
b
c
b
a
"}
(4,1,1) = {"
a
b
b
b
a
"}
(5,1,1) = {"
a
a
a
a
a
"}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,267 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"a" = (
/turf/open/floor/plating/asteroid/snow/icemoon,
/area/icemoon/underground/explored)
"b" = (
/turf/closed/mineral/random/snow/no_caves,
/area/icemoon/underground/explored)
"e" = (
/obj/structure/spawner/nether,
/turf/open/floor/plating/asteroid/snow/icemoon,
/area/icemoon/underground/explored)
(1,1,1) = {"
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
"}
(2,1,1) = {"
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
"}
(3,1,1) = {"
b
b
b
b
b
a
a
a
a
a
b
b
b
b
b
"}
(4,1,1) = {"
b
b
b
a
a
a
a
a
a
a
a
a
b
b
b
"}
(5,1,1) = {"
b
b
b
a
a
a
a
a
a
a
a
a
b
b
b
"}
(6,1,1) = {"
b
b
a
a
a
a
a
a
a
a
a
a
a
b
b
"}
(7,1,1) = {"
b
b
a
a
a
a
a
a
a
a
a
a
a
b
b
"}
(8,1,1) = {"
b
b
a
a
a
a
a
e
a
a
a
a
a
b
b
"}
(9,1,1) = {"
b
b
a
a
a
a
a
a
a
a
a
a
a
b
b
"}
(10,1,1) = {"
b
b
a
a
a
a
a
a
a
a
a
a
a
b
b
"}
(11,1,1) = {"
b
b
b
a
a
a
a
a
a
a
a
a
b
b
b
"}
(12,1,1) = {"
b
b
b
a
a
a
a
a
a
a
a
a
b
b
b
"}
(13,1,1) = {"
b
b
b
b
b
a
a
a
a
a
b
b
b
b
b
"}
(14,1,1) = {"
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
"}
(15,1,1) = {"
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
"}
+3 -3
View File
@@ -1651,7 +1651,7 @@
/turf/open/floor/plasteel/white,
/area/ruin/space/has_grav/ancientstation/rnd)
"eD" = (
/obj/machinery/mecha_part_fabricator,
/obj/machinery/mecha_part_fabricator/offstation,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel/white,
/area/ruin/space/has_grav/ancientstation/rnd)
@@ -2010,12 +2010,12 @@
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/ancientstation/deltacorridor)
"fu" = (
/obj/machinery/rnd/production/protolathe,
/obj/machinery/rnd/production/protolathe/offstation,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel/white,
/area/ruin/space/has_grav/ancientstation/rnd)
"fv" = (
/obj/machinery/rnd/production/circuit_imprinter,
/obj/machinery/rnd/production/circuit_imprinter/offstation,
/obj/effect/decal/cleanable/dirt,
/obj/item/reagent_containers/dropper,
/turf/open/floor/plasteel/white,
@@ -6,7 +6,10 @@
/obj/structure/cable{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/radiation/preopen,
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"ab" = (
@@ -16,28 +19,40 @@
/obj/structure/cable{
icon_state = "2-8"
},
/obj/machinery/door/poddoor/shutters/radiation/preopen,
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"ac" = (
/obj/structure/cable{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/radiation/preopen,
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"ad" = (
/obj/structure/cable{
icon_state = "2-8"
},
/obj/machinery/door/poddoor/shutters/radiation/preopen,
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"ae" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/machinery/door/poddoor/shutters/radiation/preopen,
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"af" = (
@@ -2718,7 +2718,7 @@ wt
av
kA
qo
EL
MP
MP
MP
Cb
@@ -103,10 +103,6 @@
/obj/structure/window/reinforced,
/turf/open/floor/plasteel,
/area/engine/engineering)
"dw" = (
/obj/structure/lattice/catwalk,
/turf/open/space,
/area/space/nearstation)
"dZ" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -1170,7 +1166,8 @@
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/engine_waste{
dir = 1
},
/turf/open/floor/plating/airless,
/obj/structure/lattice/catwalk,
/turf/open/space/basic,
/area/engine/engineering)
"Hp" = (
/obj/machinery/atmospherics/components/binary/pump{
@@ -1332,7 +1329,8 @@
/area/engine/engineering)
"LS" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
/turf/open/floor/plating/airless,
/obj/structure/lattice/catwalk,
/turf/open/space/basic,
/area/engine/engineering)
"Mf" = (
/obj/structure/closet/secure_closet/engineering_personal,
@@ -2629,7 +2627,7 @@ EN
fq
LS
Hn
dw
tw
yf
Rh
yf
@@ -2655,9 +2653,9 @@ XW
ST
Ok
MP
dw
dw
dw
tw
tw
tw
Rh
Rh
Rh
+49
View File
@@ -0,0 +1,49 @@
{
"map_name":"Ice Box Station",
"map_path":"map_files/IceBoxStation",
"map_file":[
"IcemoonUnderground_Below.dmm",
"IcemoonUnderground_Above.dmm",
"IceBoxStation.dmm"
],
"station_ruin_budget":0,
"space_ruin_levels":0,
"space_empty_levels":0,
"shuttles":{
"cargo":"cargo_box",
"ferry":"ferry_fancy",
"whiteship":"whiteship_box",
"emergency":"emergency_box"
},
"traits":[
{
"Up":1,
"Mining":true,
"Station":false,
"Linkage":null,
"Gravity":true,
"Ice Ruins Underground":true,
"Baseturf":"/turf/open/lava/plasma/ice_moon"
},
{
"Down":-1,
"Up":1,
"Mining":true,
"Station":false,
"Linkage":null,
"Gravity":true,
"Ice Ruins Underground":true,
"Baseturf":"/turf/open/openspace/icemoon"
},
{
"Down":-1,
"Mining":true,
"Linkage":null,
"Gravity":true,
"Ice Ruins":true,
"Weather_Snowstorm":true,
"Baseturf":"/turf/open/floor/plating/asteroid/snow/icemoon"
}
],
"minetype":"none"
}
+1
View File
@@ -0,0 +1 @@
#define FORCE_MAP "_maps/icebox.json"
File diff suppressed because it is too large Load Diff
+4 -12
View File
@@ -10400,7 +10400,6 @@
/obj/machinery/requests_console{
department = "AI";
departmentType = 5;
pixel_x = 0;
pixel_y = 28
},
/obj/machinery/door/window/eastright{
@@ -42089,18 +42088,14 @@
/turf/open/floor/plasteel/white,
/area/medical/virology)
"bMD" = (
/obj/structure/flora/tree/palm{
pixel_x = 0
},
/obj/structure/flora/tree/palm,
/obj/machinery/light{
dir = 8
},
/turf/open/floor/grass,
/area/medical/virology)
"bME" = (
/obj/structure/flora/tree/palm{
pixel_x = 0
},
/obj/structure/flora/tree/palm,
/obj/machinery/light{
dir = 4;
light_color = "#c1caff"
@@ -42181,9 +42176,7 @@
/turf/open/space/basic,
/area/space/nearstation)
"bML" = (
/obj/structure/flora/tree/palm{
pixel_x = 0
},
/obj/structure/flora/tree/palm,
/turf/open/floor/grass,
/area/medical/virology)
"bMM" = (
@@ -71649,8 +71642,7 @@
/obj/machinery/atmospherics/pipe/simple/orange/hidden,
/obj/machinery/flasher{
id = "ID";
pixel_x = 24;
pixel_y = 0
pixel_x = 24
},
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/ai)
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+294 -138
View File
@@ -46,13 +46,13 @@
/area/engine/engineering)
"aag" = (
/obj/effect/spawner/structure/window/plasma/reinforced,
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 1
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 10
},
/turf/open/floor/plating,
/area/engine/engineering)
"aah" = (
@@ -4719,9 +4719,13 @@
/area/security/warden)
"aml" = (
/obj/structure/cable{
icon_state = "2-8"
icon_state = "0-8"
},
/turf/closed/wall/r_wall,
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable{
icon_state = "0-2"
},
/turf/open/floor/plating,
/area/security/warden)
"amm" = (
/obj/structure/cable{
@@ -5124,14 +5128,25 @@
dir = 8;
pixel_x = 28
},
/turf/open/floor/plasteel/showroomfloor,
/area/security/warden)
"ana" = (
/obj/structure/cable{
icon_state = "1-2"
},
/turf/closed/wall/r_wall,
/turf/open/floor/plasteel/showroomfloor,
/area/security/warden)
"ana" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/tile/red,
/obj/effect/turf_decal/tile/red{
dir = 4
},
/obj/structure/cable{
icon_state = "1-2"
},
/obj/structure/cable{
icon_state = "1-4"
},
/turf/open/floor/plasteel,
/area/security/brig)
"anb" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -5333,19 +5348,19 @@
/obj/effect/turf_decal/tile/red{
dir = 4
},
/turf/open/floor/plasteel,
/area/security/brig)
"anB" = (
/obj/structure/cable{
icon_state = "2-8"
},
/obj/structure/cable{
icon_state = "0-2"
},
/obj/structure/cable{
icon_state = "4-8"
},
/turf/open/floor/plasteel,
/area/security/brig)
"anB" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable{
icon_state = "0-8"
},
/obj/structure/cable{
icon_state = "0-4"
},
/turf/open/floor/plating,
/area/security/warden)
"anC" = (
@@ -5394,17 +5409,22 @@
/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
dir = 4
},
/obj/structure/cable{
icon_state = "1-4"
},
/turf/open/floor/plasteel/showroomfloor,
/area/security/warden)
"anK" = (
/obj/structure/cable{
icon_state = "0-2"
},
/obj/structure/cable,
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
dir = 4
},
/obj/structure/cable{
icon_state = "0-8"
},
/turf/open/floor/plating,
/area/security/warden)
"anL" = (
@@ -5671,6 +5691,9 @@
/obj/effect/turf_decal/tile/red{
dir = 4
},
/obj/structure/cable{
icon_state = "1-2"
},
/turf/open/floor/plasteel,
/area/security/brig)
"aop" = (
@@ -5896,11 +5919,10 @@
/turf/open/floor/plasteel/dark,
/area/security/brig)
"aoQ" = (
/obj/structure/cable,
/obj/structure/cable{
icon_state = "0-2"
},
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable{
icon_state = "0-8"
},
/turf/open/floor/plating,
/area/security/warden)
"aoR" = (
@@ -5958,6 +5980,9 @@
/obj/item/crowbar,
/obj/item/wrench,
/obj/item/laser_pointer/red,
/obj/structure/cable{
icon_state = "2-4"
},
/turf/open/floor/plasteel/showroomfloor,
/area/security/warden)
"aoY" = (
@@ -5965,14 +5990,17 @@
/obj/machinery/light_switch{
pixel_y = -22
},
/obj/structure/cable{
icon_state = "4-8"
},
/turf/open/floor/plasteel/showroomfloor,
/area/security/warden)
"aoZ" = (
/obj/structure/cable{
icon_state = "0-2"
},
/obj/structure/cable,
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable{
icon_state = "0-8"
},
/turf/open/floor/plating,
/area/security/warden)
"apa" = (
@@ -6266,32 +6294,22 @@
/turf/open/floor/plasteel,
/area/security/brig)
"apI" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable{
icon_state = "1-4"
icon_state = "0-2"
},
/obj/structure/cable{
icon_state = "1-2"
},
/turf/closed/wall/r_wall,
/obj/structure/cable,
/turf/open/floor/plating,
/area/security/warden)
"apJ" = (
/obj/structure/cable{
icon_state = "0-8"
},
/obj/structure/cable{
icon_state = "0-4"
},
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable{
icon_state = "0-2"
},
/turf/open/floor/plating,
/area/security/warden)
"apK" = (
/obj/structure/table/reinforced,
/obj/structure/cable{
icon_state = "0-8"
},
/obj/structure/cable{
icon_state = "0-4"
},
/obj/machinery/door/window/brigdoor{
dir = 1;
name = "Armory Desk";
@@ -6311,14 +6329,11 @@
/turf/open/floor/plasteel/showroomfloor,
/area/security/warden)
"apL" = (
/obj/structure/cable{
icon_state = "0-8"
},
/obj/structure/cable{
icon_state = "0-4"
},
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/cable{
icon_state = "0-2"
},
/turf/open/floor/plating,
/area/security/warden)
"apM" = (
@@ -6326,26 +6341,44 @@
name = "Brig Control";
req_access_txt = "3"
},
/obj/structure/cable{
icon_state = "4-8"
},
/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
/obj/structure/disposalpipe/segment,
/obj/machinery/door/firedoor,
/turf/open/floor/plasteel/showroomfloor,
/area/security/warden)
"apN" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/effect/turf_decal/tile/red{
dir = 1
},
/obj/effect/turf_decal/tile/red{
dir = 4
},
/obj/structure/cable{
icon_state = "4-8"
},
/turf/closed/wall/r_wall,
/area/security/warden)
"apO" = (
/obj/structure/cable{
icon_state = "1-8"
},
/turf/closed/wall/r_wall,
/area/security/warden)
/turf/open/floor/plasteel,
/area/security/brig)
"apO" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 1
},
/obj/effect/turf_decal/tile/red{
dir = 1
},
/obj/effect/turf_decal/tile/red{
dir = 4
},
/obj/structure/cable{
icon_state = "1-8"
},
/turf/open/floor/plasteel,
/area/security/brig)
"apP" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/security{
@@ -6501,12 +6534,12 @@
/obj/effect/turf_decal/tile/red{
dir = 4
},
/obj/structure/cable{
icon_state = "1-4"
},
/turf/open/floor/plasteel,
/area/security/brig)
"aqo" = (
/obj/structure/cable{
icon_state = "1-2"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
@@ -6519,6 +6552,12 @@
/obj/effect/turf_decal/tile/red{
dir = 4
},
/obj/structure/cable{
icon_state = "2-8"
},
/obj/structure/cable{
icon_state = "4-8"
},
/turf/open/floor/plasteel,
/area/security/brig)
"aqp" = (
@@ -6546,12 +6585,21 @@
/obj/effect/turf_decal/tile/red{
dir = 4
},
/obj/structure/cable{
icon_state = "4-8"
},
/obj/structure/cable{
icon_state = "1-8"
},
/turf/open/floor/plasteel,
/area/security/brig)
"aqr" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 1
},
/obj/structure/cable{
icon_state = "4-8"
},
/turf/open/floor/plasteel,
/area/security/brig)
"aqs" = (
@@ -6562,6 +6610,12 @@
/obj/effect/turf_decal/tile/red{
dir = 4
},
/obj/structure/cable{
icon_state = "4-8"
},
/obj/structure/cable{
icon_state = "1-8"
},
/turf/open/floor/plasteel,
/area/security/brig)
"aqt" = (
@@ -6574,6 +6628,12 @@
/obj/effect/turf_decal/tile/red{
dir = 4
},
/obj/structure/cable{
icon_state = "4-8"
},
/obj/structure/cable{
icon_state = "1-8"
},
/turf/open/floor/plasteel,
/area/security/brig)
"aqu" = (
@@ -6582,6 +6642,9 @@
},
/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
/obj/structure/disposalpipe/segment,
/obj/structure/cable{
icon_state = "4-8"
},
/turf/open/floor/plasteel,
/area/security/brig)
"aqv" = (
@@ -7533,6 +7596,9 @@
/obj/effect/turf_decal/tile/red{
dir = 8
},
/obj/structure/cable{
icon_state = "2-4"
},
/turf/open/floor/plasteel,
/area/security/brig)
"asx" = (
@@ -7552,6 +7618,12 @@
/obj/effect/turf_decal/tile/red{
dir = 8
},
/obj/structure/cable{
icon_state = "1-8"
},
/obj/structure/cable{
icon_state = "1-4"
},
/turf/open/floor/plasteel,
/area/security/brig)
"asy" = (
@@ -7577,10 +7649,16 @@
/obj/effect/turf_decal/tile/red{
dir = 8
},
/obj/structure/cable{
icon_state = "4-8"
},
/turf/open/floor/plasteel,
/area/security/brig)
"asA" = (
/obj/machinery/atmospherics/pipe/manifold/cyan/hidden,
/obj/structure/cable{
icon_state = "4-8"
},
/turf/open/floor/plasteel,
/area/security/brig)
"asB" = (
@@ -7597,6 +7675,9 @@
/obj/effect/turf_decal/tile/red{
dir = 8
},
/obj/structure/cable{
icon_state = "4-8"
},
/turf/open/floor/plasteel,
/area/security/brig)
"asC" = (
@@ -7994,31 +8075,34 @@
/obj/structure/cable{
icon_state = "0-8"
},
/obj/structure/cable{
icon_state = "0-4"
},
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/cable,
/obj/structure/cable{
icon_state = "0-2"
},
/turf/open/floor/plating,
/area/security/brig)
"aty" = (
/obj/structure/cable{
icon_state = "1-4"
/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
dir = 1
},
/obj/effect/turf_decal/tile/red,
/obj/effect/turf_decal/tile/red{
dir = 8
},
/obj/structure/cable{
icon_state = "1-8"
icon_state = "2-8"
},
/turf/closed/wall,
/obj/structure/cable{
icon_state = "4-8"
},
/turf/open/floor/plasteel,
/area/security/brig)
"atz" = (
/obj/structure/cable{
icon_state = "0-8"
},
/obj/structure/cable{
icon_state = "0-4"
},
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
/obj/structure/cable,
/turf/open/floor/plating,
/area/security/brig)
"atA" = (
@@ -8026,9 +8110,6 @@
id = "Cell 2";
name = "Cell 2"
},
/obj/structure/cable{
icon_state = "4-8"
},
/obj/effect/turf_decal/tile/red,
/obj/effect/turf_decal/tile/red{
dir = 8
@@ -8036,19 +8117,19 @@
/turf/open/floor/plasteel,
/area/security/brig)
"atB" = (
/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
dir = 4
},
/obj/structure/cable{
icon_state = "4-8"
},
/turf/closed/wall,
/turf/open/floor/plasteel,
/area/security/brig)
"atC" = (
/obj/machinery/door/window/brigdoor/security/cell{
id = "Cell 3";
name = "Cell 3"
},
/obj/structure/cable{
icon_state = "4-8"
},
/obj/effect/turf_decal/tile/red,
/obj/effect/turf_decal/tile/red{
dir = 8
@@ -8056,14 +8137,12 @@
/turf/open/floor/plasteel,
/area/security/brig)
"atD" = (
/obj/structure/cable{
icon_state = "0-4"
},
/obj/structure/cable{
icon_state = "0-8"
},
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/cable,
/obj/structure/cable{
icon_state = "0-2"
},
/turf/open/floor/plating,
/area/security/brig)
"atE" = (
@@ -8073,9 +8152,6 @@
name = "Brig";
req_access_txt = "63"
},
/obj/structure/cable{
icon_state = "4-8"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/door/firedoor,
/obj/effect/turf_decal/tile/red{
@@ -8087,13 +8163,11 @@
/turf/open/floor/plasteel,
/area/security/brig)
"atF" = (
/obj/structure/cable{
icon_state = "0-8"
},
/obj/structure/cable{
icon_state = "0-2"
},
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable,
/turf/open/floor/plating,
/area/security/brig)
"atG" = (
@@ -8507,6 +8581,9 @@
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 1
},
/obj/structure/cable{
icon_state = "1-2"
},
/turf/open/floor/plasteel,
/area/security/brig)
"auA" = (
@@ -8964,6 +9041,9 @@
/obj/effect/turf_decal/tile/blue{
dir = 8
},
/obj/structure/cable{
icon_state = "1-2"
},
/turf/open/floor/plasteel,
/area/security/brig)
"avv" = (
@@ -8995,6 +9075,9 @@
/obj/effect/turf_decal/tile/green{
dir = 8
},
/obj/structure/cable{
icon_state = "1-2"
},
/turf/open/floor/plasteel,
/area/security/brig)
"avy" = (
@@ -9026,6 +9109,9 @@
/obj/effect/turf_decal/tile/yellow{
dir = 8
},
/obj/structure/cable{
icon_state = "1-2"
},
/turf/open/floor/plasteel,
/area/security/brig)
"avB" = (
@@ -9605,18 +9691,21 @@
/turf/open/floor/plating,
/area/security/brig)
"awK" = (
/obj/structure/cable{
icon_state = "0-4"
/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/tile/red,
/obj/effect/turf_decal/tile/red{
dir = 8
},
/obj/structure/cable{
icon_state = "0-8"
icon_state = "2-4"
},
/obj/machinery/door/poddoor/preopen{
id = "Secure Gate";
name = "brig shutters"
/obj/structure/cable{
icon_state = "4-8"
},
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
/turf/open/floor/plasteel,
/area/security/brig)
"awL" = (
/obj/machinery/door/firedoor,
@@ -9628,9 +9717,6 @@
name = "Brig";
req_access_txt = "63"
},
/obj/structure/cable{
icon_state = "4-8"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/tile/red{
dir = 1
@@ -9641,9 +9727,6 @@
/turf/open/floor/plasteel,
/area/security/brig)
"awM" = (
/obj/structure/cable{
icon_state = "0-8"
},
/obj/structure/cable,
/obj/machinery/door/poddoor/preopen{
id = "Secure Gate";
@@ -55550,6 +55633,23 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"jen" = (
/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/tile/red,
/obj/effect/turf_decal/tile/red{
dir = 8
},
/obj/structure/cable{
icon_state = "4-8"
},
/obj/structure/cable{
icon_state = "2-8"
},
/turf/open/floor/plasteel,
/area/security/brig)
"jeq" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -55703,6 +55803,20 @@
},
/turf/open/floor/plasteel/dark,
/area/science/xenobiology)
"jxK" = (
/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/tile/red,
/obj/effect/turf_decal/tile/red{
dir = 8
},
/obj/structure/cable{
icon_state = "4-8"
},
/turf/open/floor/plasteel,
/area/security/brig)
"jzz" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/sign/warning/vacuum/external,
@@ -57681,6 +57795,7 @@
/area/maintenance/department/science)
"odM" = (
/obj/effect/landmark/barthpot,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/carpet,
/area/library/lounge)
"oep" = (
@@ -59082,6 +59197,22 @@
},
/turf/open/floor/plasteel/white,
/area/medical/sleeper)
"rdB" = (
/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{
dir = 1
},
/obj/effect/turf_decal/tile/red,
/obj/effect/turf_decal/tile/red{
dir = 8
},
/obj/structure/cable{
icon_state = "4-8"
},
/obj/structure/cable{
icon_state = "2-8"
},
/turf/open/floor/plasteel,
/area/security/brig)
"reH" = (
/obj/item/reagent_containers/food/drinks/bottle/vodka,
/obj/structure/disposalpipe/segment{
@@ -59148,6 +59279,18 @@
},
/turf/open/floor/plasteel/dark,
/area/science/xenobiology)
"rjF" = (
/obj/structure/cable{
icon_state = "0-8"
},
/obj/machinery/door/poddoor/preopen{
id = "Secure Gate";
name = "brig shutters"
},
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable,
/turf/open/floor/plating,
/area/security/brig)
"rmC" = (
/turf/open/space/basic,
/area/space/station_ruins)
@@ -60137,6 +60280,19 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"tTZ" = (
/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
dir = 4
},
/obj/effect/turf_decal/tile/red,
/obj/effect/turf_decal/tile/red{
dir = 8
},
/obj/structure/cable{
icon_state = "2-8"
},
/turf/open/floor/plasteel,
/area/security/brig)
"tXn" = (
/obj/structure/sink{
dir = 4;
@@ -83186,7 +83342,7 @@ amf
amR
anA
aoo
aoo
ana
aoo
aqn
arl
@@ -83194,7 +83350,7 @@ asw
atx
auz
avu
awJ
rjF
axG
ayH
aAe
@@ -83442,16 +83598,16 @@ alx
amg
amg
anB
ana
amg
aoQ
apI
amg
aqo
alv
asx
aty
ajM
ajM
atB
ajM
akA
axH
ayI
aAf
@@ -83702,13 +83858,13 @@ anC
aop
aoR
apJ
aqp
apN
aon
asy
aty
atz
aux
avv
awK
awI
axG
ayL
aAi
@@ -83961,7 +84117,7 @@ aoS
apJ
aqq
aon
asv
atB
atA
auA
avw
@@ -84218,11 +84374,11 @@ aoT
apK
aqr
arl
asw
atx
awK
atD
auz
avx
awJ
rjF
axG
ayJ
aAg
@@ -84476,10 +84632,10 @@ apL
aqs
aon
asz
atB
ajM
ajM
atB
ajM
akA
axI
ayL
aAh
@@ -84732,11 +84888,11 @@ aoV
apJ
aqt
arm
asy
rdB
atz
aux
avy
awK
awI
axG
ayL
aAi
@@ -85243,14 +85399,14 @@ amY
anI
aor
aoX
apJ
aqt
apI
apO
aro
asw
jen
atD
auz
avA
awJ
rjF
axG
ayL
aAi
@@ -85495,19 +85651,19 @@ ajj
ajT
akP
alA
amj
aml
amZ
anJ
amX
aoY
apN
amg
sBA
arp
asB
atB
ajM
ajM
atB
ajM
akA
axJ
ayL
aAi
@@ -85752,15 +85908,15 @@ ahL
ahL
ahL
ahL
aml
ana
amg
amg
anK
aos
aoZ
apO
amg
aqv
aro
asw
jxK
atE
auB
avB
@@ -86017,7 +86173,7 @@ apa
agP
aqw
arp
asC
tTZ
atF
alv
alv
@@ -86535,7 +86691,7 @@ asE
ajM
auD
avC
ajM
akA
axJ
axG
aAm
@@ -87563,7 +87719,7 @@ asG
ajM
auH
avG
auH
awR
axM
ayR
aAo
+1 -1
View File
@@ -16752,7 +16752,7 @@
},
/area/centcom/holding)
"Nf" = (
/obj/machinery/autoylathe,
/obj/machinery/autolathe/toy,
/turf/open/indestructible/hotelwood,
/area/centcom/holding)
"Ni" = (
+40 -106
View File
@@ -3,50 +3,30 @@
/turf/closed/wall/mineral/titanium,
/area/shuttle/supply)
"b" = (
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/obj/effect/turf_decal/stripes/line{
dir = 9
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/supply)
"c" = (
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/supply)
"d" = (
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/obj/effect/turf_decal/stripes/line{
dir = 5
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/supply)
"e" = (
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/supply)
"f" = (
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/obj/effect/turf_decal/stripes/line{
dir = 1
},
@@ -55,18 +35,7 @@
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/supply)
"g" = (
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/supply)
"h" = (
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/obj/effect/turf_decal/stripes/line{
dir = 4
},
@@ -91,20 +60,10 @@
/turf/open/floor/mineral/plastitanium,
/area/shuttle/supply)
"k" = (
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/obj/effect/turf_decal/stripes/corner{
dir = 4
},
/obj/effect/turf_decal/stripes/corner,
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/supply)
"l" = (
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/obj/effect/turf_decal/stripes/line{
dir = 4
},
@@ -126,10 +85,6 @@
/turf/open/floor/mineral/plastitanium,
/area/shuttle/supply)
"n" = (
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/obj/effect/turf_decal/stripes/line,
/obj/effect/turf_decal/stripes/corner{
dir = 1
@@ -140,20 +95,12 @@
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/supply)
"o" = (
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/obj/effect/turf_decal/stripes/corner{
dir = 1
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/supply)
"p" = (
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/obj/effect/turf_decal/stripes/line{
dir = 8
},
@@ -176,10 +123,6 @@
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/supply)
"q" = (
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/obj/effect/turf_decal/stripes/line{
dir = 4
},
@@ -196,19 +139,6 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/mineral/plastitanium,
/area/shuttle/supply)
"s" = (
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/obj/effect/turf_decal/stripes/corner{
dir = 4
},
/obj/effect/turf_decal/stripes/corner{
dir = 1
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/supply)
"t" = (
/obj/machinery/door/poddoor{
id = "QMLoaddoor2";
@@ -228,28 +158,15 @@
/turf/open/floor/mineral/plastitanium,
/area/shuttle/supply)
"v" = (
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/obj/effect/turf_decal/stripes/end{
dir = 8
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/supply)
"w" = (
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/obj/effect/turf_decal/stripes/corner,
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/supply)
"x" = (
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/obj/effect/turf_decal/stripes/line{
dir = 6
},
@@ -260,10 +177,6 @@
/turf/closed/wall/mineral/titanium/nodiagonal,
/area/shuttle/supply)
"z" = (
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/supply)
@@ -290,6 +203,27 @@
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plating/airless,
/area/shuttle/supply)
"K" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/supply)
"Q" = (
/obj/effect/turf_decal/stripes/corner{
dir = 4
},
/obj/effect/turf_decal/stripes/corner{
dir = 1
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/supply)
"Z" = (
/obj/effect/turf_decal/stripes/corner{
dir = 4
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/supply)
(1,1,1) = {"
a
@@ -323,12 +257,12 @@ C
a
c
o
g
k
g
K
Z
w
o
g
s
K
Q
e
A
D
@@ -336,13 +270,13 @@ D
(4,1,1) = {"
a
c
g
g
g
g
g
g
g
w
w
w
w
w
w
w
z
A
D
@@ -350,13 +284,13 @@ D
(5,1,1) = {"
a
c
g
g
g
g
g
g
w
w
w
w
w
w
k
x
A
D
+1 -50
View File
@@ -144,7 +144,6 @@
pixel_y = 4
},
/obj/item/folder/blue,
/obj/item/gun/energy/e_gun/mini,
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/escape)
"av" = (
@@ -172,10 +171,6 @@
/turf/open/floor/plasteel/dark,
/area/shuttle/escape)
"ax" = (
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/obj/structure/sign/warning/vacuum/external{
pixel_y = 32
},
@@ -288,10 +283,6 @@
/turf/open/floor/plasteel/dark,
/area/shuttle/escape)
"aM" = (
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/obj/effect/turf_decal/stripes/corner{
dir = 1
},
@@ -301,10 +292,6 @@
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/escape)
"aN" = (
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/obj/effect/turf_decal/stripes/line{
dir = 1
},
@@ -725,10 +712,6 @@
/turf/open/floor/plasteel/dark,
/area/shuttle/escape)
"bB" = (
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/obj/effect/turf_decal/stripes/line{
dir = 8
},
@@ -791,14 +774,6 @@
/obj/machinery/recharge_station,
/turf/open/floor/plasteel/dark,
/area/shuttle/escape)
"bG" = (
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/escape)
"bH" = (
/obj/structure/reagent_dispensers/watertank,
/obj/effect/turf_decal/bot,
@@ -1057,20 +1032,12 @@
/turf/open/floor/plasteel/dark,
/area/shuttle/escape)
"cj" = (
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/escape)
"ck" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/escape)
"cm" = (
@@ -1079,27 +1046,15 @@
/area/shuttle/escape)
"cr" = (
/obj/effect/turf_decal/stripes/line,
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/escape)
"cs" = (
/obj/effect/turf_decal/stripes/line{
dir = 6
},
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/escape)
"cA" = (
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/obj/effect/turf_decal/stripes/line{
dir = 10
},
@@ -1159,10 +1114,6 @@
/turf/open/floor/plating/airless,
/area/shuttle/escape)
"Xo" = (
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/obj/effect/turf_decal/stripes/line{
dir = 8
},
@@ -1543,7 +1494,7 @@ bn
bi
ac
cj
bG
cr
bR
cK
cT
-12
View File
@@ -70,10 +70,6 @@
/turf/open/floor/mineral/plastitanium,
/area/shuttle/transport)
"m" = (
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/stripes/line{
dir = 8
},
@@ -115,10 +111,6 @@
/turf/open/floor/mineral/plastitanium,
/area/shuttle/transport)
"r" = (
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/stripes/line{
dir = 1
},
@@ -126,10 +118,6 @@
/turf/open/floor/mineral/plastitanium,
/area/shuttle/transport)
"s" = (
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/stripes/corner,
/obj/effect/turf_decal/stripes/corner{
dir = 1
+9 -3
View File
@@ -505,9 +505,7 @@
/turf/open/floor/plasteel/dark,
/area/shuttle/syndicate/airlock)
"bd" = (
/obj/structure/sign/warning/vacuum/external{
layer = 4
},
/obj/structure/sign/warning/vacuum/external,
/turf/closed/wall/r_wall/syndicate,
/area/shuttle/syndicate/airlock)
"be" = (
@@ -808,6 +806,10 @@
"bQ" = (
/obj/structure/closet/syndicate/personal,
/obj/effect/turf_decal/bot_white,
/obj/item/pickaxe/drill/diamonddrill,
/obj/item/pickaxe/drill/diamonddrill,
/obj/item/pickaxe/drill/diamonddrill,
/obj/item/gun/energy/plasmacutter,
/turf/open/floor/plasteel/dark,
/area/shuttle/syndicate/armory)
"bR" = (
@@ -848,6 +850,10 @@
"bX" = (
/obj/structure/closet/syndicate/nuclear,
/obj/effect/turf_decal/bot_white,
/obj/item/pickaxe/drill/diamonddrill,
/obj/item/pickaxe/drill/diamonddrill,
/obj/item/pickaxe/drill/diamonddrill,
/obj/item/gun/energy/plasmacutter,
/turf/open/floor/plasteel/dark,
/area/shuttle/syndicate/armory)
"bY" = (
+1 -52
View File
@@ -29,10 +29,6 @@
/turf/open/floor/mineral/plastitanium,
/area/shuttle/labor)
"f" = (
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/stripes/line{
dir = 9
},
@@ -47,10 +43,6 @@
req_access_txt = "1"
},
/obj/machinery/light,
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/stripes/line{
dir = 1
},
@@ -63,10 +55,6 @@
pixel_x = 30;
pixel_y = 30
},
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/stripes/line{
dir = 1
},
@@ -111,10 +99,6 @@
/turf/open/floor/mineral/plastitanium,
/area/shuttle/labor)
"l" = (
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/stripes/line{
dir = 8
},
@@ -127,10 +111,6 @@
/obj/machinery/light{
dir = 1
},
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/stripes/line{
dir = 1
},
@@ -141,17 +121,12 @@
machinedir = 1;
pixel_x = 30
},
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/stripes/line{
dir = 5
},
/turf/open/floor/mineral/plastitanium/red,
/area/shuttle/labor)
"o" = (
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -164,10 +139,6 @@
/turf/open/floor/mineral/plastitanium/red,
/area/shuttle/labor)
"p" = (
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/mineral/plastitanium/red,
/area/shuttle/labor)
@@ -177,9 +148,6 @@
pixel_x = 25
},
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/structure/chair/comfy/shuttle{
dir = 8
},
@@ -189,31 +157,12 @@
/turf/open/floor/mineral/plastitanium/red,
/area/shuttle/labor)
"r" = (
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/obj/structure/closet/crate,
/obj/effect/turf_decal/delivery,
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/labor)
"s" = (
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/obj/effect/turf_decal/loading_area{
dir = 4
},
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/labor)
"t" = (
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/labor)
@@ -284,7 +233,7 @@ g
a
m
p
s
t
w
y
"}
-25
View File
@@ -15,7 +15,6 @@
/turf/open/floor/mineral/plastitanium,
/area/shuttle/mining)
"d" = (
/obj/effect/turf_decal/bot,
/obj/machinery/computer/shuttle/mining,
/turf/open/floor/mineral/plastitanium,
/area/shuttle/mining)
@@ -31,10 +30,6 @@
/turf/open/floor/mineral/plastitanium,
/area/shuttle/mining)
"f" = (
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/obj/effect/turf_decal/stripes/line{
dir = 9
},
@@ -48,10 +43,6 @@
/turf/open/floor/mineral/plastitanium,
/area/shuttle/mining)
"h" = (
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/obj/effect/turf_decal/stripes/line{
dir = 1
},
@@ -61,20 +52,12 @@
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/mining)
"i" = (
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/obj/effect/turf_decal/stripes/line{
dir = 5
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/mining)
"j" = (
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/obj/machinery/status_display/evac{
pixel_x = -32
},
@@ -114,10 +97,6 @@
/turf/open/floor/plating,
/area/shuttle/mining)
"m" = (
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/obj/effect/turf_decal/stripes/line,
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 4
@@ -134,10 +113,6 @@
/turf/open/floor/plating/airless,
/area/shuttle/mining)
"p" = (
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/obj/effect/turf_decal/stripes/line,
/obj/machinery/atmospherics/pipe/simple/general/hidden{
icon_state = "pipe11-2";
+3
View File
@@ -943,6 +943,9 @@
/obj/item/grenade/smokebomb{
pixel_x = 5
},
/obj/item/pickaxe/drill/diamonddrill,
/obj/item/pickaxe/drill/diamonddrill,
/obj/item/pickaxe/drill/diamonddrill,
/turf/open/floor/pod/light,
/area/shuttle/pirate)
"ep" = (
BIN
View File
Binary file not shown.
+19 -4
View File
@@ -1,13 +1,28 @@
#define TICK_LIMIT_RUNNING 80
/// Percentage of tick to leave for master controller to run
#define MAPTICK_MC_MIN_RESERVE 70
/// internal_tick_usage is updated every tick by extools
#define MAPTICK_LAST_INTERNAL_TICK_USAGE ((GLOB.internal_tick_usage / world.tick_lag) * 100)
/// Tick limit while running normally
#define TICK_BYOND_RESERVE 2
#define TICK_LIMIT_RUNNING (max(100 - TICK_BYOND_RESERVE - MAPTICK_LAST_INTERNAL_TICK_USAGE, MAPTICK_MC_MIN_RESERVE))
/// Tick limit used to resume things in stoplag
#define TICK_LIMIT_TO_RUN 70
/// Tick limit for MC while running
#define TICK_LIMIT_MC 70
#define TICK_LIMIT_MC_INIT_DEFAULT 98
/// Tick limit while initializing
#define TICK_LIMIT_MC_INIT_DEFAULT (100 - TICK_BYOND_RESERVE)
#define TICK_USAGE world.tick_usage //for general usage
#define TICK_USAGE_REAL world.tick_usage //to be used where the result isn't checked
/// for general usage of tick_usage
#define TICK_USAGE world.tick_usage
/// to be used where the result isn't checked
#define TICK_USAGE_REAL world.tick_usage
/// Returns true if tick_usage is above the limit
#define TICK_CHECK ( TICK_USAGE > Master.current_ticklimit )
/// runs stoplag if tick_usage is above the limit
#define CHECK_TICK ( TICK_CHECK ? stoplag() : 0 )
/// Returns true if tick usage is above 95, for high priority usage
#define TICK_CHECK_HIGH_PRIORITY ( TICK_USAGE > 95 )
/// runs stoplag if tick_usage is above 95, for high priority usage
#define CHECK_TICK_HIGH_PRIORITY ( TICK_CHECK_HIGH_PRIORITY? stoplag() : 0 )
+4
View File
@@ -161,10 +161,14 @@
#define ATMOS_TANK_O2 "o2=100000;TEMP=293.15"
#define ATMOS_TANK_N2 "n2=100000;TEMP=293.15"
#define ATMOS_TANK_AIRMIX "o2=2644;n2=10580;TEMP=293.15"
//LAVALAND
#define LAVALAND_EQUIPMENT_EFFECT_PRESSURE 50 //what pressure you have to be under to increase the effect of equipment meant for lavaland
#define LAVALAND_DEFAULT_ATMOS "o2=14;n2=23;TEMP=300"
//SNOSTATION
#define ICEMOON_DEFAULT_ATMOS "o2=17;n2=63;TEMP=180"
//ATMOSIA GAS MONITOR TAGS
#define ATMOS_GAS_MONITOR_INPUT_O2 "o2_in"
#define ATMOS_GAS_MONITOR_OUTPUT_O2 "o2_out"
-3
View File
@@ -111,9 +111,6 @@
#define GRAB_NECK 2
#define GRAB_KILL 3
//slowdown when in softcrit
#define SOFTCRIT_ADD_SLOWDOWN 6
/// Attack types for check_block()/run_block(). Flags, combinable.
/// Attack was melee, whether or not armed.
#define ATTACK_TYPE_MELEE (1<<0)
+22
View File
@@ -40,6 +40,7 @@
#define CALTROP_BYPASS_SHOES 1
#define CALTROP_IGNORE_WALKERS 2
// Spellcasting
#define SPELL_SKIP_ALL_REQS (1<<0)
#define SPELL_SKIP_CENTCOM (1<<1)
#define SPELL_SKIP_STAT (1<<2)
@@ -53,3 +54,24 @@
#define SPELL_CULT_ARMOR (1<<10)
#define SPELL_WIZARD_GARB (SPELL_WIZARD_HAT|SPELL_WIZARD_ROBE)
#define SPELL_CULT_GARB (SPELL_CULT_HELMET|SPELL_CULT_ARMOR)
//// Identification ////
// /datum/component/identification/identification_flags
/// Delete on successful broad identification (so the main way we "uncover" how an object works, since this won't be on it to obfuscate it)
#define ID_COMPONENT_DEL_ON_IDENTIFY (1<<0)
/// We've already been successfully deepscanned by a deconstructive analyzer
#define ID_COMPONENT_DECONSTRUCTOR_DEEPSCANNED (1<<1)
// /datum/component/identification/identification_effect_flags
/// Block user from getting actions if they don't know how to use this. Triggered on equip.
#define ID_COMPONENT_EFFECT_NO_ACTIONS (1<<0)
// /datum/component/identification/identification_method_flags
/// Can be identified in a deconstructive analyzer
#define ID_COMPONENT_IDENTIFY_WITH_DECONSTRUCTOR (1<<0)
// Return values for /datum/component/deitnfication/check_knowledge()
/// Has no knowledge, default
#define ID_COMPONENT_KNOWLEDGE_NONE 0
/// Has full knowledge
#define ID_COMPONENT_KNOWLEDGE_FULL 1
+8 -2
View File
@@ -30,7 +30,7 @@
#define COMSIG_PARENT_ATTACKBY "atom_attackby" //from base of atom/attackby(): (/obj/item, /mob/living, params)
#define COMPONENT_NO_AFTERATTACK 1 //Return this in response if you don't want afterattack to be called
#define COMSIG_ATOM_HULK_ATTACK "hulk_attack" //from base of atom/attack_hulk(): (/mob/living/carbon/human)
#define COMSIG_PARENT_EXAMINE "atom_examine" //from base of atom/examine(): (/mob)
#define COMSIG_PARENT_EXAMINE "atom_examine" //from base of atom/examine(): (/mob, list/examine_return_text)
#define COMSIG_ATOM_GET_EXAMINE_NAME "atom_examine_name" //from base of atom/get_examine_name(): (/mob, list/overrides)
//Positions for overrides list
#define EXAMINE_POSITION_ARTICLE 1
@@ -110,7 +110,8 @@
#define COMSIG_TURF_MULTIZ_NEW "turf_multiz_new" //from base of turf/New(): (turf/source, direction)
// /atom/movable signals
#define COMSIG_MOVABLE_PRE_MOVE "movable_pre_move" //from base of atom/movable/Moved(): (/atom)
#define COMSIG_MOVABLE_PRE_MOVE "movable_pre_move" ///from base of atom/movable/Moved(): (/atom)
#define COMPONENT_MOVABLE_BLOCK_PRE_MOVE 1
#define COMSIG_MOVABLE_MOVED "movable_moved" //from base of atom/movable/Moved(): (/atom, dir)
#define COMSIG_MOVABLE_CROSS "movable_cross" //from base of atom/movable/Cross(): (/atom/movable)
#define COMSIG_MOVABLE_CROSSED "movable_crossed" //from base of atom/movable/Crossed(): (/atom/movable)
@@ -241,6 +242,8 @@
#define COMSIG_ITEM_AFTERATTACK "item_afterattack" //from base of obj/item/afterattack(): (atom/target, mob/user, params)
#define COMSIG_ITEM_ALT_AFTERATTACK "item_alt_afterattack" //from base of obj/item/altafterattack(): (atom/target, mob/user, proximity, params)
#define COMSIG_ITEM_EQUIPPED "item_equip" //from base of obj/item/equipped(): (/mob/equipper, slot)
// Do not grant actions on equip.
#define COMPONENT_NO_GRANT_ACTIONS 1
#define COMSIG_ITEM_DROPPED "item_drop" //from base of obj/item/dropped(): (mob/user)
// relocated, tell inventory procs if those called this that the item isn't available anymore.
#define COMPONENT_DROPPED_RELOCATION 1
@@ -253,6 +256,9 @@
// THE FOLLOWING TWO BLOCKS SHOULD RETURN BLOCK FLAGS AS DEFINED IN __DEFINES/combat.dm!
#define COMSIG_ITEM_CHECK_BLOCK "check_block" //from base of obj/item/check_block(): (mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
#define COMSIG_ITEM_RUN_BLOCK "run_block" //from base of obj/item/run_block(): (mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
#define COMSIG_ITEM_DECONSTRUCTOR_DEEPSCAN "deconstructor_deepscan" //Called by deconstructive analyzers deepscanning an item: (obj/machinery/rnd/destructive_analyzer/analyzer_machine, mob/user, list/information_list)
// Uncovered information
#define COMPONENT_DEEPSCAN_UNCOVERED_INFORMATION 1
// /obj/item/clothing signals
#define COMSIG_SHOES_STEP_ACTION "shoes_step_action" //from base of obj/item/clothing/shoes/proc/step_action(): ()
+4 -1
View File
@@ -132,7 +132,7 @@
#define FEMALE_UNIFORM_FULL 1
#define FEMALE_UNIFORM_TOP 2
//flags for outfits that have mutantrace variants: These are hard sprited too.
//flags for outfits that have mutant race variants: Most of these require additional sprites to work.
#define STYLE_DIGITIGRADE (1<<0) //jumpsuits, suits and shoes
#define STYLE_MUZZLE (1<<1) //hats or masks
#define STYLE_SNEK_TAURIC (1<<2) //taur-friendly suits
@@ -140,6 +140,9 @@
#define STYLE_HOOF_TAURIC (1<<4)
#define STYLE_ALL_TAURIC (STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC|STYLE_HOOF_TAURIC)
#define STYLE_NO_ANTHRO_ICON (1<<5) //When digis fit the default sprite fine and need no copypasted states. This is the case of skirts and winter coats, for example.
#define USE_SNEK_CLIP_MASK (1<<6)
#define USE_QUADRUPED_CLIP_MASK (1<<7)
#define USE_TAUR_CLIP_MASK (USE_SNEK_CLIP_MASK|USE_QUADRUPED_CLIP_MASK)
//digitigrade legs settings.
#define NOT_DIGITIGRADE 0
+4 -1
View File
@@ -174,7 +174,10 @@ GLOBAL_LIST_INIT(clawfootmob, typecacheof(list(
/mob/living/simple_animal/pet/fox,
/mob/living/simple_animal/chicken,
/mob/living/simple_animal/hostile/bear,
/mob/living/simple_animal/hostile/jungle/mega_arachnid
/mob/living/simple_animal/hostile/jungle/mega_arachnid,
/mob/living/simple_animal/hostile/asteroid/ice_whelp,
/mob/living/simple_animal/hostile/asteroid/wolf,
/mob/living/simple_animal/hostile/asteroid/polarbear
)))
GLOBAL_LIST_INIT(barefootmob, typecacheof(list(
+10 -4
View File
@@ -1,6 +1,8 @@
//Defines for atom layers and planes
//KEEP THESE IN A NICE ACSCENDING ORDER, PLEASE
#define PLANE_VOID -100
#define CLICKCATCHER_PLANE -99
#define PLANE_SPACE -95
@@ -8,6 +10,10 @@
#define PLANE_SPACE_PARALLAX -90
#define PLANE_SPACE_PARALLAX_RENDER_TARGET "PLANE_SPACE_PARALLAX"
#define OPENSPACE_LAYER 17 //Openspace layer over all
#define OPENSPACE_PLANE -4 //Openspace plane below all turfs
#define OPENSPACE_BACKDROP_PLANE -3 //Black square just over openspace plane to guaranteed cover all in openspace turf
#define FLOOR_PLANE -2
#define FLOOR_PLANE_RENDER_TARGET "FLOOR_PLANE"
#define GAME_PLANE -1
@@ -61,7 +67,9 @@
#define BELOW_MOB_LAYER 3.7
#define LYING_MOB_LAYER 3.8
#define MOB_LOWER_LAYER 3.95
//#define MOB_LAYER 4 //For easy recordkeeping; this is a byond define
#define MOB_UPPER_LAYER 4.05
#define ABOVE_MOB_LAYER 4.1
#define WALL_OBJ_LAYER 4.25
#define EDGED_TURF_LAYER 4.3
@@ -84,6 +92,8 @@
#define MASSIVE_OBJ_LAYER 11
#define POINT_LAYER 12
#define CHAT_LAYER 12.1
#define EMISSIVE_BLOCKER_PLANE 12
#define EMISSIVE_BLOCKER_LAYER 12
#define EMISSIVE_BLOCKER_RENDER_TARGET "*EMISSIVE_BLOCKER_PLANE"
@@ -104,10 +114,6 @@
#define ABOVE_LIGHTING_LAYER 16
#define ABOVE_LIGHTING_RENDER_TARGET "ABOVE_LIGHTING_PLANE"
#define FLOOR_OPENSPACE_PLANE 17
#define OPENSPACE_LAYER 17
#define OPENSPACE_RENDER_TARGET "OPENSPACE_PLANE"
#define BYOND_LIGHTING_PLANE 18
#define BYOND_LIGHTING_LAYER 18
#define BYOND_LIGHTING_RENDER_TARGET "BYOND_LIGHTING_PLANE"
+8 -8
View File
@@ -22,14 +22,14 @@
//used in design to specify which machine can build it
#define IMPRINTER (1<<0) //For circuits. Uses glass/chemicals.
#define PROTOLATHE (1<<1) //New stuff. Uses glass/metal/chemicals
#define AUTOLATHE (1<<2) //Uses glass/metal only.
#define CRAFTLATHE (1<<3) //Uses fuck if I know. For use eventually.
#define MECHFAB (1<<4) //Remember, objects utilising this flag should have construction_time and construction_cost vars.
#define BIOGENERATOR (1<<5) //Uses biomass
#define LIMBGROWER (1<<6) //Uses synthetic flesh
#define SMELTER (1<<7) //uses various minerals
#define AUTOYLATHE (1<<8) // CITADEL ADD
#define PROTOLATHE (1<<1) //New stuff. Uses materials/chemicals
#define AUTOLATHE (1<<2) //Uses materials only.
#define TOYLATHE (1<<3) //Glass/metal/plastic. Meant for toys.
#define NO_PUBLIC_LATHE (1<<4) //prevents the design from being auto-unlocked by public auto(y)lathes.
#define MECHFAB (1<<5) //Remember, objects utilising this flag should have construction_time and construction_cost vars.
#define BIOGENERATOR (1<<6) //Uses biomass
#define LIMBGROWER (1<<7) //Uses synthetic flesh
#define SMELTER (1<<8) //uses various minerals
#define NANITE_COMPILER (1<<9) //Prints nanite disks
#define AUTOBOTTLER (1<<10) //Uses booze, for printing
//Note: More then one of these can be added to a design but imprinter and lathe designs are incompatable.
+3
View File
@@ -0,0 +1,3 @@
//map template annihilate_bounds
#define MAP_TEMPLATE_ANNIHILATE_PRELOAD 1 //annihilate bounds before starting loading
#define MAP_TEMPLATE_ANNIHILATE_LOADING 2 //"sweeping" delete during loading
+14 -1
View File
@@ -35,10 +35,18 @@ require only minor tweaks.
#define ZTRAIT_REEBE "Reebe"
#define ZTRAIT_RESERVED "Transit/Reserved"
#define ZTRAIT_AWAY "Away Mission"
#define ZTRAIT_VR "Virtual Reality"
#define ZTRAIT_SPACE_RUINS "Space Ruins"
#define ZTRAIT_LAVA_RUINS "Lava Ruins"
#define ZTRAIT_ICE_RUINS "Ice Ruins"
#define ZTRAIT_ICE_RUINS_UNDERGROUND "Ice Ruins Underground"
#define ZTRAIT_ISOLATED_RUINS "Isolated Ruins" //Placing ruins on z levels with this trait will use turf reservation instead of usual placement.
//boolean - weather types that occur on the level
#define ZTRAIT_SNOWSTORM "Weather_Snowstorm"
#define ZTRAIT_ASHSTORM "Weather_Ashstorm"
#define ZTRAIT_ACIDRAIN "Weather_Acidrain"
// number - bombcap is multiplied by this before being applied to bombs
#define ZTRAIT_BOMBCAP_MULTIPLIER "Bombcap Multiplier"
@@ -67,6 +75,7 @@ require only minor tweaks.
#define ZTRAITS_SPACE list(ZTRAIT_LINKAGE = CROSSLINKED, ZTRAIT_SPACE_RUINS = TRUE)
#define ZTRAITS_LAVALAND list(\
ZTRAIT_MINING = TRUE, \
ZTRAIT_ASHSTORM = TRUE, \
ZTRAIT_LAVA_RUINS = TRUE, \
ZTRAIT_BOMBCAP_MULTIPLIER = 5, \
ZTRAIT_BASETURF = /turf/open/lava/smooth/lava_land_surface)
@@ -101,4 +110,8 @@ require only minor tweaks.
#define PLACE_BELOW "below" //On z levl below - centered on same tile
#define PLACE_ISOLATED "isolated" //On isolated ruin z level
//Map type stuff.
#define MAP_TYPE_STATION "station"
#define MAP_TYPE_STATION "station"
//Random z-levels name defines.
#define AWAY_MISSION_NAME "Away Mission"
#define VIRT_REALITY_NAME "Virtual Reality"
+1 -1
View File
@@ -7,5 +7,5 @@
/// Flag for atoms, this flag ensures it isn't re-colored by materials. Useful for snowflake icons such as default toolboxes.
#define MATERIAL_COLOR (1<<0)
#define MATERIAL_ADD_PREFIX (1<<1)
#define MATERIAL_NO_EFFECTS (1<<2)
#define MATERIAL_EFFECTS (1<<2)
#define MATERIAL_AFFECT_STATISTICS (1<<3)
+23 -17
View File
@@ -35,15 +35,15 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s
#define BODY_ADJ_LAYER 27 //certain mutantrace features (snout, body markings) that must appear above the body parts
#define GENITALS_FRONT_LAYER 26 //Draws some genitalia above clothes and the TAUR body if need be.
#define BODY_LAYER 25 //underwear, undershirts, socks, eyes, lips(makeup)
#define FRONT_MUTATIONS_LAYER 24 //mutations that should appear above body, body_adj and bodyparts layer (e.g. laser eyes)
#define DAMAGE_LAYER 23 //damage indicators (cuts and burns)
#define UNIFORM_LAYER 22
#define ID_LAYER 21
#define HANDS_PART_LAYER 20
#define SHOES_LAYER 19
#define GLOVES_LAYER 18
#define EARS_LAYER 17
#define BODY_TAUR_LAYER 16
#define BODY_ADJ_UPPER_LAYER 24
#define FRONT_MUTATIONS_LAYER 23 //mutations that should appear above body, body_adj and bodyparts layer (e.g. laser eyes)
#define DAMAGE_LAYER 22 //damage indicators (cuts and burns)
#define UNIFORM_LAYER 21
#define ID_LAYER 20
#define HANDS_PART_LAYER 19
#define SHOES_LAYER 18
#define GLOVES_LAYER 17
#define EARS_LAYER 16
#define SUIT_LAYER 15
#define GENITALS_EXPOSED_LAYER 14
#define GLASSES_LAYER 13
@@ -71,14 +71,6 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s
#define ABOVE_SHOES_LAYER (SHOES_LAYER-1)
#define ABOVE_BODY_FRONT_LAYER (BODY_FRONT_LAYER-1)
//Security levels
#define SEC_LEVEL_GREEN 0
#define SEC_LEVEL_BLUE 1
#define SEC_LEVEL_AMBER 2
#define SEC_LEVEL_RED 3
#define SEC_LEVEL_DELTA 4
//some arbitrary defines to be used by self-pruning global lists. (see master_controller)
#define PROCESS_KILL 26 //Used to trigger removal from a processing list
@@ -523,3 +515,17 @@ GLOBAL_LIST_INIT(pda_reskins, list(PDA_SKIN_CLASSIC = 'icons/obj/pda.dmi', PDA_S
#define NIGHTSHIFT_AREA_NONE 4 //default/highest.
#define UNTIL(X) while(!(X)) stoplag()
//Scavenging element defines for special loot "events".
#define SCAVENGING_FOUND_NOTHING "found_nothing"
#define SCAVENGING_SPAWN_MOUSE "spawn_mouse"
#define SCAVENGING_SPAWN_MICE "spawn_mice"
#define SCAVENGING_SPAWN_TOM "spawn_tom_the_mouse"
//Scavenging element defines for ckey/mind restrictions.
#define NO_LOOT_RESTRICTION 0
#define LOOT_RESTRICTION_MIND 1
#define LOOT_RESTRICTION_CKEY 2
#define LOOT_RESTRICTION_MIND_PILE 3 //limited to the current pile.
#define LOOT_RESTRICTION_CKEY_PILE 4 //Idem
+2 -4
View File
@@ -265,6 +265,7 @@
#define WIZARD_AGE_MIN 30 //youngest a wizard can be
#define APPRENTICE_AGE_MIN 29 //youngest an apprentice can be
#define SHOES_SLOWDOWN 0 //How much shoes slow you down by default. Negative values speed you up
#define SHOES_SPEED_SLIGHT SHOES_SLOWDOWN - 1 // slightest speed boost to movement
#define POCKET_STRIP_DELAY 40 //time taken (in deciseconds) to search somebody's pockets
#define DOOR_CRUSH_DAMAGE 15 //the amount of damage that airlocks deal when they crush you
@@ -288,9 +289,6 @@
#define HUMAN_FIRE_STACK_ICON_NUM 3
#define PULL_PRONE_SLOWDOWN 0.6
#define TYPING_INDICATOR_TIMEOUT 5 MINUTES
#define FIREMAN_CARRY_SLOWDOWN 0
#define PIGGYBACK_CARRY_SLOWDOWN 1
#define SLEEP_CHECK_DEATH(X) sleep(X); if(QDELETED(src) || stat == DEAD) return;
+10
View File
@@ -0,0 +1,10 @@
/// How much someone is slowed from pulling a prone human
#define PULL_PRONE_SLOWDOWN 0.6
/// How much someone is slowed from fireman carrying a human
#define FIREMAN_CARRY_SLOWDOWN 0
/// How much someone is slowed by piggybacking a human
#define PIGGYBACK_CARRY_SLOWDOWN 1
/// slowdown when in softcrit. Note that crawling slowdown will also apply at the same time!
#define SOFTCRIT_ADD_SLOWDOWN 2
/// slowdown when crawling
#define CRAWLING_ADD_SLOWDOWN 4
+3 -75
View File
@@ -1,12 +1,3 @@
#define MOVESPEED_DATA_INDEX_PRIORITY 1
#define MOVESPEED_DATA_INDEX_FLAGS 2
#define MOVESPEED_DATA_INDEX_MULTIPLICATIVE_SLOWDOWN 3
#define MOVESPEED_DATA_INDEX_MOVETYPE 4
#define MOVESPEED_DATA_INDEX_BL_MOVETYPE 5
#define MOVESPEED_DATA_INDEX_CONFLICT 6
#define MOVESPEED_DATA_INDEX_MAX 6
//flags
#define IGNORE_NOSLOW (1 << 0)
@@ -15,70 +6,7 @@
#define MOVE_CONFLICT_JETPACK "JETPACK"
//ids
#define MOVESPEED_ID_SANITY "mood_sanity"
#define MOVESPEED_ID_MOB_WALK_RUN_CONFIG_SPEED "MOB_WALK_RUN"
#define MOVESPEED_ID_MOB_GRAB_STATE "MOB_GRAB_STATE"
#define MOVESPEED_ID_MOB_EQUIPMENT "MOB_EQUIPMENT"
#define MOVESPEED_ID_MOB_GRAVITY "MOB_GRAVITY"
#define MOVESPEED_ID_CONFIG_SPEEDMOD "MOB_CONFIG_MODIFIER"
#define MOVESPEED_ID_SLIME_REAGENTMOD "SLIME_REAGENT_MODIFIER"
#define MOVESPEED_ID_SLIME_HEALTHMOD "SLIME_HEALTH_MODIFIER"
#define MOVESPEED_ID_SLIME_TEMPMOD "SLIME_TEMPERATURE_MODIFIER"
#define MOVESPEED_ID_SLIME_STATUS "SLIME_STATUS"
#define MOVESPEED_ID_TARANTULA_WEB "TARANTULA_WEB"
#define MOVESPEED_ID_LIVING_TURF_SPEEDMOD "LIVING_TURF_SPEEDMOD"
#define MOVESPEED_ID_LIVING_LIMBLESS "LIVING_LIMBLESS"
#define MOVESPEED_ID_CARBON_SOFTCRIT "CARBON_SOFTCRIT"
#define MOVESPEED_ID_CARBON_OLDSPEED "CARBON_DEPRECATED_SPEED"
#define MOVESPEED_ID_DNA_VAULT "DNA_VAULT"
#define MOVESPEED_ID_YELLOW_ORB "YELLOW_ORB"
#define MOVESPEED_ID_TARFOOT "TARFOOT"
#define MOVESPEED_ID_SEPIA "SEPIA"
#define MOVESPEED_ID_MONKEY_REAGENT_SPEEDMOD "MONKEY_REAGENT_SPEEDMOD"
#define MOVESPEED_ID_MONKEY_TEMPERATURE_SPEEDMOD "MONKEY_TEMPERATURE_SPEEDMOD"
#define MOVESPEED_ID_MONKEY_HEALTH_SPEEDMOD "MONKEY_HEALTH_SPEEDMOD"
#define MOVESPEED_ID_CHANGELING_MUSCLES "CHANGELING_MUSCLES"
#define MOVESPEED_ID_SIMPLEMOB_VARSPEED "SIMPLEMOB_VARSPEED_MODIFIER"
#define MOVESPEED_ID_ADMIN_VAREDIT "ADMIN_VAREDIT_MODIFIER"
#define MOVESPEED_ID_PAI_SPACEWALK_SPEEDMOD "PAI_SPACEWALK_MODIFIER"
#define MOVESPEED_ID_SANITY "MOOD_SANITY"
#define MOVESPEED_ID_SPECIES "SPECIES_SPEED_MOD"
#define MOVESPEED_ID_SMALL_STRIDE "SMALL_STRIDE"
#define MOVESPEED_ID_PRONE_DRAGGING "PRONE_DRAG"
#define MOVESPEED_ID_HUMAN_CARRYING "HUMAN_CARRY"
#define MOVESPEED_ID_SHRINK_RAY "SHRUNKEN_SPEED_MODIFIER"
#define MOVESPEED_ID_SLAUGHTER "SLAUGHTER"
#define MOVESPEED_ID_CYBER_THRUSTER "CYBER_IMPLANT_THRUSTER"
#define MOVESPEED_ID_JETPACK "JETPACK"
#define MOVESPEED_ID_MKULTRA "MKULTRA"
#define MOVESPEED_ID_TASED_STATUS "TASED"
#define MOVESPEED_ID_ELECTROSTAFF "ELECTROSTAFF"
#define MOVESPEED_ID_SHOVE "SHOVE"
#define MOVESPEED_ID_FAT "FAT"
#define MOVESPEED_ID_COLD "COLD"
#define MOVESPEED_ID_HUNGRY "HUNGRY"
#define MOVESPEED_ID_DAMAGE_SLOWDOWN "DAMAGE"
#define MOVESPEED_ID_DAMAGE_SLOWDOWN_FLYING "FLYING"
#define MOVESPEED_ID_CIRRHOSIS "CIRRHOSIS"
#define MOVESPEED_ID_MOB_GRAB_STATE "mob_grab_state"
#define MOVESPEED_ID_MOB_WALK_RUN "mob_walk_run"
+4
View File
@@ -12,6 +12,10 @@
#define NANITE_CLOUD_DISABLE 2
#define NANITE_CLOUD_ENABLE 3
///Nanite Protocol types
#define NANITE_PROTOCOL_REPLICATION "nanite_replication"
#define NANITE_PROTOCOL_STORAGE "nanite_storage"
///Nanite extra settings types: used to help uis know what type an extra setting is
#define NESTYPE_TEXT "text"
#define NESTYPE_NUMBER "number"
+7 -5
View File
@@ -38,11 +38,12 @@
#define BLOCK_GAS_SMOKE_EFFECT (1<<2) //blocks the effect that chemical clouds would have on a mob --glasses, mask and helmets ONLY!
#define ALLOWINTERNALS (1<<3) //mask allows internals
#define NOSLIP (1<<4) //prevents from slipping on wet floors, in space etc
#define THICKMATERIAL (1<<5) //prevents syringes, parapens and hypos if the external suit or helmet (if targeting head) has this flag. Example: space suits, biosuit, bombsuits, thick suits that cover your body.
#define VOICEBOX_TOGGLABLE (1<<6) //The voicebox in this clothing can be toggled.
#define VOICEBOX_DISABLED (1<<7) //The voicebox is currently turned off.
#define IGNORE_HAT_TOSS (1<<8) //Hats with negative effects when worn (i.e the tinfoil hat).
#define SCAN_REAGENTS (1<<9) // Allows helmets and glasses to scan reagents.
#define NOSLIP_ICE (1<<5) //prevents from slipping on frozen floors
#define THICKMATERIAL (1<<6) //prevents syringes, parapens and hypos if the external suit or helmet (if targeting head) has this flag. Example: space suits, biosuit, bombsuits, thick suits that cover your body.
#define VOICEBOX_TOGGLABLE (1<<7) //The voicebox in this clothing can be toggled.
#define VOICEBOX_DISABLED (1<<8) //The voicebox is currently turned off.
#define IGNORE_HAT_TOSS (1<<9) //Hats with negative effects when worn (i.e the tinfoil hat).
#define SCAN_REAGENTS (1<<10) // Allows helmets and glasses to scan reagents.
// Flags for the organ_flags var on /obj/item/organ
@@ -52,3 +53,4 @@
#define ORGAN_EXTERNAL (1<<3) //Was this organ implanted/inserted/etc, if true will not be removed during species change.
#define ORGAN_VITAL (1<<4) //Currently only the brain
#define ORGAN_NO_SPOIL (1<<5) //Do not spoil under any circumstances
#define ORGAN_NO_DISMEMBERMENT (1<<6) //Immune to disembowelment.
+1
View File
@@ -65,6 +65,7 @@
#define FREQ_ENGINEERING 1357 // Engineering comms frequency, orange
#define FREQ_SECURITY 1359 // Security comms frequency, red
#define FREQ_HOLOGRID_SOLUTION 1433
#define FREQ_STATUS_DISPLAYS 1435
#define FREQ_ATMOS_ALARMS 1437 // air alarms <-> alert computers
#define FREQ_ATMOS_CONTROL 1439 // air alarms <-> vents and scrubbers
+13 -1
View File
@@ -22,11 +22,23 @@
// Is an open container for all intents and purposes.
#define OPENCONTAINER (REFILLABLE | DRAINABLE | TRANSPARENT)
//reagents_value defines, for cargo stuff.
//reagents_value defines, basically a multiplier used in reagent containers cargo selling.
#define DEFAULT_REAGENTS_VALUE 1
#define NO_REAGENTS_VALUE 0
#define HARVEST_REAGENTS_VALUE 0.3
/// Standard reagents value defines.
/// Take a grain of salt, only "rare" reagents should have a decent value here, for balance reasons.
/// TL;DR Think of it also like general market request price more than rarity.
#define REAGENT_VALUE_NONE 0 //all the stuff pretty much available in potentially unlimited quantities.
#define REAGENT_VALUE_VERY_COMMON 0.1 //same as above, just not so unlimited.
#define REAGENT_VALUE_COMMON 0.5
#define REAGENT_VALUE_UNCOMMON 1
#define REAGENT_VALUE_RARE 2.5
#define REAGENT_VALUE_VERY_RARE 5
#define REAGENT_VALUE_EXCEPTIONAL 10 //extremely rare or tedious to craft, possibly unsynthetizable, reagents.
#define REAGENT_VALUE_AMAZING 30 //reserved ONLY for non-mass produceable, unsynthetizable reagents.
#define REAGENT_VALUE_GLORIOUS 300 //reagents that shouldn't be possible to get or farm under normal conditions. e.g. Romerol, fungal TB, adminordrazine...
#define TOUCH 1 // splashing
#define INGEST 2 // ingestion
+2 -1
View File
@@ -60,7 +60,8 @@
#define DESIGN_ID_IGNORE "IGNORE_THIS_DESIGN"
#define RESEARCH_MATERIAL_RECLAMATION_ID "__materials"
#define RESEARCH_MATERIAL_RECLAMATION_ID "__materials"
#define RESEARCH_DEEP_SCAN_ID "__deepscan"
//When adding new types, update the list below!
#define TECHWEB_POINT_TYPE_GENERIC "General Research"
+10
View File
@@ -0,0 +1,10 @@
//Security levels
#define SEC_LEVEL_GREEN 1
#define SEC_LEVEL_BLUE 2
#define SEC_LEVEL_AMBER 3
#define SEC_LEVEL_RED 4
#define SEC_LEVEL_DELTA 5
//Macro helpers.
#define SECLEVEL2NUM(text) (GLOB.all_security_levels.Find(text))
#define NUM2SECLEVEL(num) (ISINRANGE(num, 1, length(GLOB.all_security_levels)) ? GLOB.all_security_levels[num] : null)
+28
View File
@@ -0,0 +1,28 @@
/// true/false
#define SKILL_PROGRESSION_BINARY 1
/// numerical
#define SKILL_PROGRESSION_NUMERICAL 2
/// Enum
#define SKILL_PROGRESSION_ENUM 3
/// Max value of skill for numerical skills
#define SKILL_NUMERICAL_MAX 100
/// Min value of skill for numerical skills
#define SKILL_NUMERICAL_MIN 0
// Standard values for job starting skills
#define STARTING_SKILL_SURGERY_MEDICAL 35 //out of SKILL_NUMERICAL_MAX
// Standard values for job starting skill affinities
#define STARTING_SKILL_AFFINITY_SURGERY_MEDICAL 1.2
// Standard values for skill gain (this is multiplied by affinity)
#define SKILL_GAIN_SURGERY_PER_STEP 0.25
// Misc
/// 40% speedup at 100 skill
#define SURGERY_SKILL_SPEEDUP_NUMERICAL_SCALE(number) clamp(number / 250, 1, 2)
+3 -1
View File
@@ -34,6 +34,8 @@
#define STATUS_EFFECT_HIPPOCRATIC_OATH /datum/status_effect/hippocraticOath //Gives you an aura of healing as well as regrowing the Rod of Asclepius if lost
#define STATUS_EFFECT_REGENERATIVE_CORE /datum/status_effect/regenerative_core //removes damage slowdown while giving a slow regenerating effect
/////////////
// DEBUFFS //
/////////////
@@ -78,7 +80,7 @@
#define STATUS_EFFECT_CRUSHERMARK /datum/status_effect/crusher_mark //if struck with a proto-kinetic crusher, takes a ton of damage
#define STATUS_EFFECT_SAWBLEED /datum/status_effect/saw_bleed //if the bleed builds up enough, takes a ton of damage
#define STATUS_EFFECT_SAWBLEED /datum/status_effect/stacking/saw_bleed //if the bleed builds up enough, takes a ton of damage
#define STATUS_EFFECT_NECKSLICE /datum/status_effect/neck_slice //Creates the flavor messages for the neck-slice
+9 -2
View File
@@ -132,8 +132,15 @@
#define RUNLEVELS_DEFAULT (RUNLEVEL_SETUP | RUNLEVEL_GAME | RUNLEVEL_POSTGAME)
// SSair run section
#define SSAIR_PIPENETS 1
#define SSAIR_ATMOSMACHINERY 2
#define SSAIR_REACTQUEUE 3
#define SSAIR_EXCITEDGROUPS 4
#define SSAIR_HIGHPRESSURE 5
#define SSAIR_HOTSPOTS 6
#define SSAIR_SUPERCONDUCTIVITY 7
#define SSAIR_REBUILD_PIPENETS 8
#define COMPILE_OVERLAYS(A)\
if (TRUE) {\
+38 -37
View File
@@ -78,6 +78,7 @@
#define TRAIT_MONKEYLIKE "monkeylike" //sets IsAdvancedToolUser to FALSE
#define TRAIT_PACIFISM "pacifism"
#define TRAIT_IGNORESLOWDOWN "ignoreslow"
#define TRAIT_IGNOREDAMAGESLOWDOWN "ignoredamageslowdown"
#define TRAIT_DEATHCOMA "deathcoma" //Causes death-like unconsciousness
#define TRAIT_FAKEDEATH "fakedeath" //Makes the owner appear as dead to most forms of medical examination
#define TRAIT_DISFIGURED "disfigured"
@@ -152,6 +153,42 @@
#define TRAIT_PASSTABLE "passtable"
#define TRAIT_GIANT "giant"
#define TRAIT_DWARF "dwarf"
#define TRAIT_ALCOHOL_TOLERANCE "alcohol_tolerance"
#define TRAIT_AGEUSIA "ageusia"
#define TRAIT_HEAVY_SLEEPER "heavy_sleeper"
#define TRAIT_NIGHT_VISION "night_vision"
#define TRAIT_LIGHT_STEP "light_step"
#define TRAIT_SILENT_STEP "silent_step"
#define TRAIT_SPEEDY_STEP "speedy_step"
#define TRAIT_SPIRITUAL "spiritual"
#define TRAIT_VORACIOUS "voracious"
#define TRAIT_SELF_AWARE "self_aware"
#define TRAIT_FREERUNNING "freerunning"
#define TRAIT_SKITTISH "skittish"
#define TRAIT_POOR_AIM "poor_aim"
#define TRAIT_PROSOPAGNOSIA "prosopagnosia"
#define TRAIT_DRUNK_HEALING "drunk_healing"
#define TRAIT_TAGGER "tagger"
#define TRAIT_PHOTOGRAPHER "photographer"
#define TRAIT_MUSICIAN "musician"
#define TRAIT_PERMABONER "permanent_arousal"
#define TRAIT_NEVERBONER "never_aroused"
#define TRAIT_MASO "masochism"
#define TRAIT_HIGH_BLOOD "high_blood"
#define TRAIT_PARA "paraplegic"
#define TRAIT_EMPATH "empath"
#define TRAIT_FRIENDLY "friendly"
#define TRAIT_CULT_EYES "cult_eyes"
#define TRAIT_AUTO_CATCH_ITEM "auto_catch_item"
#define TRAIT_CLOWN_MENTALITY "clown_mentality" // The future is now, clownman.
#define TRAIT_FREESPRINT "free_sprinting"
#define TRAIT_XRAY_VISION "xray_vision"
#define TRAIT_THERMAL_VISION "thermal_vision"
#define TRAIT_NO_TELEPORT "no-teleport" //you just can't
#define TRAIT_NO_INTERNALS "no-internals"
#define TRAIT_NO_ALCOHOL "alcohol_intolerance"
#define TRAIT_MUTATION_STASIS "mutation_stasis" //Prevents processed genetics mutations from processing.
#define TRAIT_FAST_PUMP "fast_pump"
// mobility flag traits
// IN THE FUTURE, IT WOULD BE NICE TO DO SOMETHING SIMILAR TO https://github.com/tgstation/tgstation/pull/48923/files (ofcourse not nearly the same because I have my.. thoughts on it)
@@ -185,43 +222,6 @@
// item traits
#define TRAIT_NODROP "nodrop"
#define TRAIT_ALCOHOL_TOLERANCE "alcohol_tolerance"
#define TRAIT_AGEUSIA "ageusia"
#define TRAIT_HEAVY_SLEEPER "heavy_sleeper"
#define TRAIT_NIGHT_VISION "night_vision"
#define TRAIT_LIGHT_STEP "light_step"
#define TRAIT_SILENT_STEP "silent_step"
#define TRAIT_SPEEDY_STEP "speedy_step"
#define TRAIT_SPIRITUAL "spiritual"
#define TRAIT_VORACIOUS "voracious"
#define TRAIT_SELF_AWARE "self_aware"
#define TRAIT_FREERUNNING "freerunning"
#define TRAIT_SKITTISH "skittish"
#define TRAIT_POOR_AIM "poor_aim"
#define TRAIT_PROSOPAGNOSIA "prosopagnosia"
#define TRAIT_DRUNK_HEALING "drunk_healing"
#define TRAIT_TAGGER "tagger"
#define TRAIT_PHOTOGRAPHER "photographer"
#define TRAIT_MUSICIAN "musician"
#define TRAIT_PERMABONER "permanent_arousal"
#define TRAIT_NEVERBONER "never_aroused"
#define TRAIT_NYMPHO "nymphomania"
#define TRAIT_MASO "masochism"
#define TRAIT_HIGH_BLOOD "high_blood"
#define TRAIT_PARA "paraplegic"
#define TRAIT_EMPATH "empath"
#define TRAIT_FRIENDLY "friendly"
#define TRAIT_CULT_EYES "cult_eyes"
#define TRAIT_AUTO_CATCH_ITEM "auto_catch_item"
#define TRAIT_CLOWN_MENTALITY "clown_mentality" // The future is now, clownman.
#define TRAIT_FREESPRINT "free_sprinting"
#define TRAIT_XRAY_VISION "xray_vision"
#define TRAIT_THERMAL_VISION "thermal_vision"
#define TRAIT_NO_TELEPORT "no-teleport" //you just can't
#define TRAIT_NO_INTERNALS "no-internals"
#define TRAIT_NO_ALCOHOL "alcohol_intolerance"
#define TRAIT_MUTATION_STASIS "mutation_stasis" //Prevents processed genetics mutations from processing.
// common trait sources
#define TRAIT_GENERIC "generic"
#define EYE_DAMAGE "eye_damage"
@@ -246,6 +246,7 @@
#define BLOODSUCKER_TRAIT "bloodsucker"
#define SHOES_TRAIT "shoes" //inherited from your sweet kicks
#define GLOVE_TRAIT "glove" //inherited by your cool gloves
#define BOOK_TRAIT "granter (book)" // knowledge is power
// unique trait sources, still defines
#define STATUE_MUTE "statue"
+1
View File
@@ -73,6 +73,7 @@
#define VV_HK_EXPOSE "expose"
#define VV_HK_CALLPROC "proc_call"
#define VV_HK_MARK "mark"
#define VV_HK_ADDCOMPONENT "addcomponent"
#define VV_HK_MODIFY_TRAITS "modtraits"
// /atom
+98 -40
View File
@@ -11,6 +11,7 @@
#define LAZYINITLIST(L) if (!L) L = list()
#define UNSETEMPTY(L) if (L && !length(L)) L = null
#define LAZYCOPY(L) (L ? L.Copy() : list() )
#define LAZYREMOVE(L, I) if(L) { L -= I; if(!length(L)) { L = null; } }
#define LAZYADD(L, I) if(!L) { L = list(); } L += I;
#define LAZYOR(L, I) if(!L) { L = list(); } L |= I;
@@ -21,34 +22,47 @@
#define LAZYCLEARLIST(L) if(L) L.Cut()
#define SANITIZE_LIST(L) ( islist(L) ? L : list() )
#define reverseList(L) reverseRange(L.Copy())
#define LAZYADDASSOC(L, K, V) if(!L) { L = list(); } L[K] += list(V);
#define LAZYREMOVEASSOC(L, K, V) if(L) { if(L[K]) { L[K] -= V; if(!length(L[K])) L -= K; } if(!length(L)) L = null; }
// binary search sorted insert
// IN: Object to be inserted
// LIST: List to insert object into
// TYPECONT: The typepath of the contents of the list
// COMPARE: The variable on the objects to compare
#define BINARY_INSERT(IN, LIST, TYPECONT, COMPARE) \
var/__BIN_CTTL = length(LIST);\
if(!__BIN_CTTL) {\
LIST += IN;\
} else {\
var/__BIN_LEFT = 1;\
var/__BIN_RIGHT = __BIN_CTTL;\
var/__BIN_MID = (__BIN_LEFT + __BIN_RIGHT) >> 1;\
var/##TYPECONT/__BIN_ITEM;\
while(__BIN_LEFT < __BIN_RIGHT) {\
__BIN_ITEM = LIST[__BIN_MID];\
if(__BIN_ITEM.##COMPARE <= IN.##COMPARE) {\
__BIN_LEFT = __BIN_MID + 1;\
} else {\
__BIN_RIGHT = __BIN_MID;\
/// Passed into BINARY_INSERT to compare keys
#define COMPARE_KEY __BIN_LIST[__BIN_MID]
/// Passed into BINARY_INSERT to compare values
#define COMPARE_VALUE __BIN_LIST[__BIN_LIST[__BIN_MID]]
/****
* Binary search sorted insert
* INPUT: Object to be inserted
* LIST: List to insert object into
* TYPECONT: The typepath of the contents of the list
* COMPARE: The object to compare against, usualy the same as INPUT
* COMPARISON: The variable on the objects to compare
*/
#define BINARY_INSERT(INPUT, LIST, TYPECONT, COMPARE, COMPARISON, COMPTYPE) \
do {\
var/list/__BIN_LIST = LIST;\
var/__BIN_CTTL = length(__BIN_LIST);\
if(!__BIN_CTTL) {\
__BIN_LIST += INPUT;\
} else {\
var/__BIN_LEFT = 1;\
var/__BIN_RIGHT = __BIN_CTTL;\
var/__BIN_MID = (__BIN_LEFT + __BIN_RIGHT) >> 1;\
var/##TYPECONT/__BIN_ITEM;\
while(__BIN_LEFT < __BIN_RIGHT) {\
__BIN_ITEM = COMPTYPE;\
if(__BIN_ITEM.##COMPARISON <= COMPARE.##COMPARISON) {\
__BIN_LEFT = __BIN_MID + 1;\
} else {\
__BIN_RIGHT = __BIN_MID;\
};\
__BIN_MID = (__BIN_LEFT + __BIN_RIGHT) >> 1;\
};\
__BIN_MID = (__BIN_LEFT + __BIN_RIGHT) >> 1;\
__BIN_ITEM = COMPTYPE;\
__BIN_MID = __BIN_ITEM.##COMPARISON > COMPARE.##COMPARISON ? __BIN_MID : __BIN_MID + 1;\
__BIN_LIST.Insert(__BIN_MID, INPUT);\
};\
__BIN_ITEM = LIST[__BIN_MID];\
__BIN_MID = __BIN_ITEM.##COMPARE > IN.##COMPARE ? __BIN_MID : __BIN_MID + 1;\
LIST.Insert(__BIN_MID, IN);\
}
} while(FALSE)
//Returns a list in plain english as a string
/proc/english_list(list/input, nothing_text = "nothing", and_text = " and ", comma_text = ", ", final_comma_text = "" )
@@ -231,40 +245,77 @@
//Picks a random element from a list based on a weighting system:
//1. Adds up the total of weights for each element
//2. Gets a number between 1 and that total
//2. Gets the total from 0% to 100% of previous total value.
//3. For each element in the list, subtracts its weighting from that number
//4. If that makes the number 0 or less, return that element.
/proc/pickweight(list/L)
/proc/pickweight(list/L, base_weight = 1)
var/total = 0
var/item
for (item in L)
if (!L[item])
L[item] = 1
L[item] = base_weight
total += L[item]
total = rand(1, total)
total = rand() * total
for (item in L)
total -=L [item]
total -= L[item]
if (total <= 0)
return item
return null
/proc/pickweightAllowZero(list/L) //The original pickweight proc will sometimes pick entries with zero weight. I'm not sure if changing the original will break anything, so I left it be.
//Picks a number of elements from a list based on weight.
//This is highly optimised and good for things like grabbing 200 items from a list of 40,000
//Much more efficient than many pickweight calls
/proc/pickweight_mult(list/L, quantity, base_weight = 1)
//First we total the list as normal
var/total = 0
var/item
for (item in L)
if (!L[item])
L[item] = 0
L[item] = base_weight
total += L[item]
total = rand(0, total)
for (item in L)
total -=L [item]
if (total <= 0 && L[item])
return item
//Next we will make a list of randomly generated numbers, called Requests
//It is critical that this list be sorted in ascending order, so we will build it in that order
//First one is free, so we start counting at 2
var/list/requests = list(rand(1, total))
for (var/i in 2 to quantity)
//Each time we generate the next request
var/newreq = rand()* total
//We will loop through all existing requests
for (var/j in 1 to requests.len)
//We keep going through the list until we find an element which is bigger than the one we want to add
if (requests[j] > newreq)
//And then we insert the newqreq at that point, pushing everything else forward
requests.Insert(j, newreq)
break
return null
//Now when we get here, we have a list of random numbers sorted in ascending order.
//The length of that list is equal to Quantity passed into this function
//Next we make a list to store results
var/list/results = list()
//Zero the total, we'll reuse it
total = 0
//Now we will iterate forward through the items list, adding each weight to the total
for (item in L)
total += L[item]
//After each item we do a while loop
while (requests.len && total >= requests[1])
//If the total is higher than the value of the first request
results += item //We add this item to the results list
requests.Cut(1,2) //And we cut off the top of the requests list
//This while loop will repeat until the next request is higher than the total.
//The current item might be added to the results list many times, in this process
//By the time we get here:
//Requests will be empty
//Results will have a length of quality
return results
//Pick a random element from the list and remove it from the list.
/proc/pick_n_take(list/L)
@@ -274,6 +325,13 @@
. = L[picked]
L.Cut(picked,picked+1) //Cut is far more efficient that Remove()
//Pick a random element from the list by weight and remove it from the list.
//Result is returned as a list in the format list(key, value)
/proc/pickweight_n_take(list/L, base_weight = 1)
if (L.len)
. = pickweight(L, base_weight)
L.Remove(.)
//Returns the top(last) element from the list and removes it from the list (typical stack function)
/proc/pop(list/L)
if(L.len)
+5
View File
@@ -58,6 +58,11 @@ GLOBAL_LIST_INIT(typecache_powerfailure_safe_areas, typecacheof(/area/engine/eng
else if(isarea(areatype))
var/area/areatemp = areatype
areatype = areatemp.type
else if(islist(areatype))
var/list/turfs = list()
for(var/A in areatype)
turfs += get_area_turfs(A)
return turfs
else if(!ispath(areatype))
return null
+23
View File
@@ -88,6 +88,7 @@
init_subtypes(/datum/crafting_recipe, GLOB.crafting_recipes)
INVOKE_ASYNC(GLOBAL_PROC, /proc/init_ref_coin_values) //so the current procedure doesn't sleep because of UNTIL()
INVOKE_ASYNC(GLOBAL_PROC, /proc/setupGenetics)
//creates every subtype of prototype (excluding prototype) and adds it to list L.
//if no list/L is provided, one is created.
@@ -113,3 +114,25 @@
UNTIL(C.flags_1 & INITIALIZED_1) //we want to make sure the value is calculated and not null.
GLOB.coin_values[path] = C.value
qdel(C)
/proc/setupGenetics()
var/list/mutations = subtypesof(/datum/mutation/human)
shuffle_inplace(mutations)
for(var/A in subtypesof(/datum/generecipe))
var/datum/generecipe/GR = A
GLOB.mutation_recipes[initial(GR.required)] = initial(GR.result)
for(var/i in 1 to LAZYLEN(mutations))
var/path = mutations[i] //byond gets pissy when we do it in one line
var/datum/mutation/human/B = new path ()
B.alias = "Mutation #[i]"
GLOB.all_mutations[B.type] = B
GLOB.full_sequences[B.type] = generate_gene_sequence(B.blocks)
if(B.locked)
continue
if(B.quality == POSITIVE)
GLOB.good_mutations |= B
else if(B.quality == NEGATIVE)
GLOB.bad_mutations |= B
else if(B.quality == MINOR_NEGATIVE)
GLOB.not_good_mutations |= B
CHECK_TICK
+2
View File
@@ -12,3 +12,5 @@
#define is_reserved_level(z) SSmapping.level_trait(z, ZTRAIT_RESERVED)
#define is_away_level(z) SSmapping.level_trait(z, ZTRAIT_AWAY)
#define is_vr_level(z) SSmapping.level_trait(z, ZTRAIT_VR)
+15 -9
View File
@@ -47,7 +47,7 @@
init_sprite_accessory_subtypes(/datum/sprite_accessory/underwear/socks, GLOB.socks_list)
return pick(GLOB.socks_list)
/proc/random_features(intendedspecies)
/proc/random_features(intendedspecies, intended_gender)
if(!GLOB.tails_list_human.len)
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/human, GLOB.tails_list_human)
if(!GLOB.tails_list_lizard.len)
@@ -149,7 +149,13 @@
var/color2 = random_short_color()
var/color3 = random_short_color()
//CIT CHANGE - changes this entire return to support cit's snowflake parts
var/body_model = MALE
switch(intended_gender)
if(MALE, FEMALE)
body_model = intended_gender
if(PLURAL)
body_model = pick(MALE,FEMALE)
return(list(
"mcolor" = color1,
"mcolor2" = color2,
@@ -209,7 +215,7 @@
"ipc_antenna" = "None",
"flavor_text" = "",
"meat_type" = "Mammalian",
"body_model" = MALE,
"body_model" = body_model,
"body_size" = RESIZE_DEFAULT_SIZE
))
@@ -311,7 +317,7 @@ GLOBAL_LIST_EMPTY(species_list)
else
return "unknown"
/proc/do_mob(mob/user , mob/target, time = 30, uninterruptible = 0, progress = 1, datum/callback/extra_checks = null, ignorehelditem = 0)
/proc/do_mob(mob/user , mob/target, time = 30, uninterruptible = 0, progress = 1, datum/callback/extra_checks = null, ignorehelditem = FALSE, resume_time = 0 SECONDS)
if(!user || !target)
return 0
var/user_loc = user.loc
@@ -330,10 +336,10 @@ GLOBAL_LIST_EMPTY(species_list)
var/endtime = world.time+time
var/starttime = world.time
. = 1
while (world.time < endtime)
while (world.time + resume_time < endtime)
stoplag(1)
if (progress)
progbar.update(world.time - starttime)
progbar.update(world.time - starttime + resume_time)
if(QDELETED(user) || QDELETED(target))
. = 0
break
@@ -365,7 +371,7 @@ GLOBAL_LIST_EMPTY(species_list)
checked_health["health"] = health
return ..()
/proc/do_after(mob/user, var/delay, needhand = 1, atom/target = null, progress = 1, datum/callback/extra_checks = null, required_mobility_flags = (MOBILITY_USE|MOBILITY_MOVE))
/proc/do_after(mob/user, var/delay, needhand = 1, atom/target = null, progress = 1, datum/callback/extra_checks = null, required_mobility_flags = (MOBILITY_USE|MOBILITY_MOVE), resume_time = 0 SECONDS)
if(!user)
return 0
var/atom/Tloc = null
@@ -394,10 +400,10 @@ GLOBAL_LIST_EMPTY(species_list)
var/starttime = world.time
. = 1
var/mob/living/L = isliving(user) && user //evals to last thing eval'd
while (world.time < endtime)
while (world.time + resume_time < endtime)
stoplag(1)
if (progress)
progbar.update(world.time - starttime)
progbar.update(world.time - starttime + resume_time)
if(drifting && !user.inertia_dir)
drifting = 0
+1 -1
View File
@@ -563,7 +563,7 @@
if(objective.completable)
var/completion = objective.check_completion()
if(completion >= 1)
objective_parts += "<B>Objective #[count]</B>: [objective.explanation_text] <span class='greentext'><B>Success!</span>"
objective_parts += "<B>Objective #[count]</B>: [objective.explanation_text] <span class='greentext'><B>Success!</B></span>"
else if(completion <= 0)
objective_parts += "<B>Objective #[count]</B>: [objective.explanation_text] <span class='redtext'>Fail.</span>"
else
+23
View File
@@ -434,6 +434,29 @@ Turf and target are separate in case you want to teleport some distance from a t
return locate(x,y,A.z)
/**
* Get ranged target turf, but with direct targets as opposed to directions
*
* Starts at atom A and gets the exact angle between A and target
* Moves from A with that angle, Range amount of times, until it stops, bound to map size
* Arguments:
* * A - Initial Firer / Position
* * target - Target to aim towards
* * range - Distance of returned target turf from A
* * offset - Angle offset, 180 input would make the returned target turf be in the opposite direction
*/
/proc/get_ranged_target_turf_direct(atom/A, atom/target, range, offset)
var/angle = arctan(target.x - A.x, target.y - A.y)
if(offset)
angle += offset
var/turf/T = get_turf(A)
for(var/i in 1 to range)
var/turf/check = locate(A.x + cos(angle) * i, A.y + sin(angle) * i, A.z)
if(!check)
break
T = check
return T
// returns turf relative to A offset in dx and dy tiles
// bound to map limits
+20
View File
@@ -265,5 +265,25 @@ GLOBAL_LIST_INIT(bitfields, list(
"STORAGE_LIMIT_MAX_W_CLASS" = STORAGE_LIMIT_MAX_W_CLASS,
"STORAGE_LIMIT_COMBINED_W_CLASS" = STORAGE_LIMIT_COMBINED_W_CLASS,
"STORAGE_LIMIT_VOLUME" = STORAGE_LIMIT_VOLUME
),
"mutantrace_variation" = list(
"STYLE_DIGITIGRADE" = STYLE_DIGITIGRADE,
"STYLE_MUZZLE" = STYLE_MUZZLE,
"STYLE_SNEK_TAURIC" = STYLE_SNEK_TAURIC,
"STYLE_PAW_TAURIC" = STYLE_PAW_TAURIC,
"STYLE_HOOF_TAURIC" = STYLE_HOOF_TAURIC,
"STYLE_NO_ANTHRO_ICON" = STYLE_NO_ANTHRO_ICON,
"USE_SNEK_CLIP_MASK" = USE_SNEK_CLIP_MASK,
"USE_QUADRUPED_CLIP_MASK" = USE_QUADRUPED_CLIP_MASK
),
"vis_flags" = list(
"VIS_INHERIT_ICON" = VIS_INHERIT_ICON,
"VIS_INHERIT_ICON_STATE" = VIS_INHERIT_ICON_STATE,
"VIS_INHERIT_DIR" = VIS_INHERIT_DIR,
"VIS_INHERIT_LAYER" = VIS_INHERIT_LAYER,
"VIS_INHERIT_PLANE" = VIS_INHERIT_PLANE,
"VIS_INHERIT_ID" = VIS_INHERIT_ID,
"VIS_UNDERLAY" = VIS_UNDERLAY,
"VIS_HIDE" = VIS_HIDE
)
))
+2 -2
View File
@@ -137,8 +137,8 @@ GLOBAL_LIST_INIT(jumpsuitlist, list(PREF_SUIT, PREF_SKIRT))
#define UPLINK_PEN "Pen" //like a real spy!
GLOBAL_LIST_INIT(uplink_spawn_loc_list, list(UPLINK_PDA, UPLINK_RADIO, UPLINK_PEN))
//Female Uniforms
GLOBAL_LIST_EMPTY(female_clothing_icons)
//List of cached alpha masked icons.
GLOBAL_LIST_EMPTY(alpha_masked_worn_icons)
//radical shit
GLOBAL_LIST_INIT(hit_appends, list("-OOF", "-ACK", "-UGH", "-HRNK", "-HURGH", "-GLORF"))
+5
View File
@@ -50,3 +50,8 @@ GLOBAL_LIST_EMPTY_TYPED(areas_by_type, /area)
GLOBAL_LIST_EMPTY(all_abstract_markers)
GLOBAL_LIST_EMPTY(stationroom_landmarks) //List of all spawns for stationrooms
///Away missions, VR, random z levels stuff.
GLOBAL_LIST_EMPTY(random_zlevels_generated)
GLOBAL_LIST_INIT(potential_away_levels, generateMapList(filename = "[global.config.directory]/awaymissionconfig.txt"))
GLOBAL_LIST_INIT(potential_vr_levels, generateMapList(filename = "[global.config.directory]/vr_config.txt"))
+15 -4
View File
@@ -43,15 +43,26 @@ GLOBAL_LIST_EMPTY(mob_config_movespeed_type_lookup)
GLOBAL_LIST_EMPTY(latejoiners) //CIT CHANGE - All latejoining people, for traitor-target purposes.
/proc/update_config_movespeed_type_lookup(update_mobs = TRUE)
var/list/mob_types = list()
// NOTE: This is entirely based on the fact that byond typesof/subtypesof gets longer/deeper paths before shallower ones.
// If that ever breaks this entire proc breaks.
var/list/mob_types = typesof(/mob)
var/list/entry_value = CONFIG_GET(keyed_list/multiplicative_movespeed)
var/list/configured_types = list()
for(var/path in entry_value)
var/value = entry_value[path]
if(!value)
if(isnull(value))
continue
// associative list sets for elements that already exist preserve order
mob_types[path] = value
// now go back up through it to set everything, making absolute sure that base paths are overridden by child paths all the way down the path tree.
for(var/i in length(mob_types) to 1 step -1)
var/path = mob_types[i]
if(isnull(mob_types[path]))
continue
// we're going from bottom to top so it should be safe to do this without further checks..
for(var/subpath in typesof(path))
mob_types[subpath] = value
GLOB.mob_config_movespeed_type_lookup = mob_types
configured_types[subpath] = mob_types[path]
GLOB.mob_config_movespeed_type_lookup = configured_types
if(update_mobs)
update_mob_config_movespeeds()
+2
View File
@@ -33,3 +33,5 @@ GLOBAL_VAR(bible_icon_state)
GLOBAL_VAR(bible_item_state)
GLOBAL_VAR(holy_weapon_type)
GLOBAL_VAR(holy_armor_type)
GLOBAL_VAR_INIT(internal_tick_usage, 0.2 * world.tick_lag)
+138
View File
@@ -0,0 +1,138 @@
/*
FUN ZONE OF ADMIN LISTINGS
Try to keep this in sync with __DEFINES/traits.dm
quirks have it's own panel so we don't need them here.
*/
GLOBAL_LIST_INIT(traits_by_type, list(
/mob = list(
"TRAIT_BLIND" = TRAIT_BLIND,
"TRAIT_MUTE" = TRAIT_MUTE,
"TRAIT_EMOTEMUTE " = TRAIT_EMOTEMUTE,
"TRAIT_DEAF" = TRAIT_DEAF,
"TRAIT_NEARSIGHT" = TRAIT_NEARSIGHT,
"TRAIT_FAT" = TRAIT_FAT,
"TRAIT_HUSK" = TRAIT_HUSK,
"TRAIT_NOCLONE" = TRAIT_NOCLONE,
"TRAIT_CLUMSY" = TRAIT_CLUMSY,
"TRAIT_CHUNKYFINGERS" = TRAIT_CHUNKYFINGERS,
"TRAIT_DUMB" = TRAIT_DUMB,
"TRAIT_MONKEYLIKE" = TRAIT_MONKEYLIKE,
"TRAIT_PACIFISM" = TRAIT_PACIFISM,
"TRAIT_IGNORESLOWDOWN" = TRAIT_IGNORESLOWDOWN,
"TRAIT_DEATHCOMA" = TRAIT_DEATHCOMA,
"TRAIT_FAKEDEATH" = TRAIT_FAKEDEATH,
"TRAIT_DISFIGURED" = TRAIT_DISFIGURED,
"TRAIT_XENO_HOST" = TRAIT_XENO_HOST,
"TRAIT_STUNIMMUNE" = TRAIT_STUNIMMUNE,
"TRAIT_TASED_RESISTANCE" = TRAIT_TASED_RESISTANCE,
"TRAIT_SLEEPIMMUNE" = TRAIT_SLEEPIMMUNE,
"TRAIT_PUSHIMMUNE" = TRAIT_PUSHIMMUNE,
"TRAIT_SHOCKIMMUNE" = TRAIT_SHOCKIMMUNE,
"TRAIT_STABLEHEART" = TRAIT_STABLEHEART,
"TRAIT_STABLELIVER" = TRAIT_STABLELIVER,
"TRAIT_RESISTHEAT" = TRAIT_RESISTHEAT,
"TRAIT_RESISTHEATHANDS" = TRAIT_RESISTHEATHANDS,
"TRAIT_RESISTCOLD" = TRAIT_RESISTCOLD,
"TRAIT_RESISTHIGHPRESSURE" = TRAIT_RESISTHIGHPRESSURE,
"TRAIT_RESISTLOWPRESSURE" = TRAIT_RESISTLOWPRESSURE,
"TRAIT_RADIMMUNE" = TRAIT_RADIMMUNE,
"TRAIT_VIRUSIMMUNE" = TRAIT_VIRUSIMMUNE,
"TRAIT_PIERCEIMMUNE" = TRAIT_PIERCEIMMUNE,
"TRAIT_NODISMEMBER" = TRAIT_NODISMEMBER,
"TRAIT_NOFIRE" = TRAIT_NOFIRE,
"TRAIT_NOGUNS" = TRAIT_NOGUNS,
"TRAIT_NOHUNGER" = TRAIT_NOHUNGER,
"TRAIT_EASYDISMEMBER" = TRAIT_EASYDISMEMBER,
"TRAIT_LIMBATTACHMENT" = TRAIT_LIMBATTACHMENT,
"TRAIT_NOLIMBDISABLE" = TRAIT_NOLIMBDISABLE,
"TRAIT_EASYLIMBDISABLE" = TRAIT_EASYLIMBDISABLE,
"TRAIT_TOXINLOVER" = TRAIT_TOXINLOVER,
"TRAIT_NOBREATH" = TRAIT_NOBREATH,
"TRAIT_ANTIMAGIC" = TRAIT_ANTIMAGIC,
"TRAIT_HOLY" = TRAIT_HOLY,
"TRAIT_DEPRESSION" = TRAIT_DEPRESSION,
"TRAIT_JOLLY" = TRAIT_JOLLY,
"TRAIT_NOCRITDAMAGE" = TRAIT_NOCRITDAMAGE,
"TRAIT_NOSLIPWATER" = TRAIT_NOSLIPWATER,
"TRAIT_NOSLIPALL" = TRAIT_NOSLIPALL,
"TRAIT_NODEATH" = TRAIT_NODEATH,
"TRAIT_NOHARDCRIT" = TRAIT_NOHARDCRIT,
"TRAIT_NOSOFTCRIT" = TRAIT_NOSOFTCRIT,
"TRAIT_MINDSHIELD" = TRAIT_MINDSHIELD,
"TRAIT_HIJACKER" = TRAIT_HIJACKER,
"TRAIT_DISSECTED" = TRAIT_DISSECTED,
"TRAIT_SIXTHSENSE" = TRAIT_SIXTHSENSE,
"TRAIT_FEARLESS" = TRAIT_FEARLESS,
"TRAIT_PARALYSIS_L_ARM" = TRAIT_PARALYSIS_L_ARM,
"TRAIT_PARALYSIS_R_ARM" = TRAIT_PARALYSIS_R_ARM,
"TRAIT_PARALYSIS_L_LEG" = TRAIT_PARALYSIS_L_LEG,
"TRAIT_PARALYSIS_R_LEG" = TRAIT_PARALYSIS_R_LEG,
"TRAIT_DISK_VERIFIER" = TRAIT_DISK_VERIFIER,
"TRAIT_XRAY_VISION" = TRAIT_XRAY_VISION,
"TRAIT_THERMAL_VISION" = TRAIT_THERMAL_VISION,
"TRAIT_ABDUCTOR_TRAINING" = TRAIT_ABDUCTOR_TRAINING,
"TRAIT_ABDUCTOR_SCIENTIST_TRAINING" = TRAIT_ABDUCTOR_SCIENTIST_TRAINING,
"TRAIT_SURGEON" = TRAIT_SURGEON,
"TRAIT_STRONG_GRABBER" = TRAIT_STRONG_GRABBER,
"TRAIT_MAGIC_CHOKE" = TRAIT_MAGIC_CHOKE,
"TRAIT_SOOTHED_THROAT" = TRAIT_SOOTHED_THROAT,
"TRAIT_LAW_ENFORCEMENT_METABOLISM" = TRAIT_LAW_ENFORCEMENT_METABOLISM,
"TRAIT_UNINTELLIGIBLE_SPEECH" = TRAIT_UNINTELLIGIBLE_SPEECH,
"TRAIT_UNSTABLE" = TRAIT_UNSTABLE,
"TRAIT_COLDBLOODED" = TRAIT_COLDBLOODED,
"TRAIT_NONATURALHEAL" = TRAIT_NONATURALHEAL,
"TRAIT_NORUNNING" = TRAIT_NORUNNING,
"TRAIT_NOMARROW" = TRAIT_NOMARROW,
"TRAIT_NOPULSE" = TRAIT_NOPULSE,
"TRAIT_EXEMPT_HEALTH_EVENTS" = TRAIT_EXEMPT_HEALTH_EVENTS,
"TRAIT_NO_MIDROUND_ANTAG" = TRAIT_NO_MIDROUND_ANTAG,
"TRAIT_PUGILIST" = TRAIT_PUGILIST,
"TRAIT_KI_VAMPIRE" = TRAIT_KI_VAMPIRE,
"TRAIT_PASSTABLE" = TRAIT_PASSTABLE,
"TRAIT_GIANT" = TRAIT_GIANT,
"TRAIT_DWARF" = TRAIT_DWARF,
"TRAIT_COMBAT_MODE_LOCKED" = TRAIT_COMBAT_MODE_LOCKED,
"TRAIT_SPRINT_LOCKED" = TRAIT_SPRINT_LOCKED,
"TRAIT_AUTO_CATCH_ITEM" = TRAIT_AUTO_CATCH_ITEM,
"TRAIT_FREESPRINT" = TRAIT_FREESPRINT,
"TRAIT_NO_INTERNALS" = TRAIT_NO_INTERNALS,
"TRAIT_NO_ALCOHOL" = TRAIT_NO_ALCOHOL,
"TRAIT_MUTATION_STASIS" = TRAIT_MUTATION_STASIS,
"TRAIT_HEAVY_SLEEPER" = TRAIT_HEAVY_SLEEPER,
"TRAIT_LIGHT_STEP" = TRAIT_LIGHT_STEP,
"TRAIT_SILENT_STEP" = TRAIT_SILENT_STEP,
"TRAIT_VORACIOUS" = TRAIT_VORACIOUS,
"TRAIT_SELF_AWARE" = TRAIT_SELF_AWARE,
"TRAIT_FREERUNNING" = TRAIT_FREERUNNING,
"TRAIT_SKITTISH" = TRAIT_SKITTISH,
"TRAIT_POOR_AIM" = TRAIT_POOR_AIM,
"TRAIT_PROSOPAGNOSIA" = TRAIT_PROSOPAGNOSIA,
"TRAIT_DRUNK_HEALING" = TRAIT_DRUNK_HEALING,
"TRAIT_TAGGER" = TRAIT_TAGGER,
"TRAIT_PHOTOGRAPHER" = TRAIT_PHOTOGRAPHER,
"TRAIT_MUSICIAN" = TRAIT_MUSICIAN,
"TRAIT_MASO" = TRAIT_MASO,
"TRAIT_HIGH_BLOOD" = TRAIT_HIGH_BLOOD,
"TRAIT_EMPATH" = TRAIT_EMPATH,
"TRAIT_FRIENDLY" = TRAIT_FRIENDLY
),
/obj/item/bodypart = list(
"TRAIT_PARALYSIS" = TRAIT_PARALYSIS
),
/obj/item = list(
"TRAIT_NODROP" = TRAIT_NODROP,
"TRAIT_NO_TELEPORT" = TRAIT_NO_TELEPORT
)
))
/// value -> trait name, generated on use from trait_by_type global
GLOBAL_LIST(trait_name_map)
/proc/generate_trait_name_map()
. = list()
for(var/key in GLOB.traits_by_type)
for(var/tname in GLOB.traits_by_type[key])
var/val = GLOB.traits_by_type[key][tname]
.[val] = tname
+1 -1
View File
@@ -162,7 +162,7 @@
#define ui_ghost_orbit "SOUTH:6,CENTER-1:24"
#define ui_ghost_reenter_corpse "SOUTH:6,CENTER:24"
#define ui_ghost_teleport "SOUTH:6,CENTER+1:24"
#define ui_ghost_pai "SOUTH: 6, CENTER+2:24"
#define ui_ghost_spawners "SOUTH: 6, CENTER+2:24"
//UI position overrides for 1:1 screen layout. (default is 7:5)
+7 -7
View File
@@ -36,13 +36,13 @@
var/mob/dead/observer/G = usr
G.dead_tele()
/obj/screen/ghost/pai
name = "pAI Candidate"
icon_state = "pai"
/obj/screen/ghost/spawners
name = "Ghost role spawners"
icon_state = "spawners"
/obj/screen/ghost/pai/Click()
/obj/screen/ghost/spawners/Click()
var/mob/dead/observer/G = usr
G.register_pai()
G.open_spawners_menu()
/datum/hud/ghost/New(mob/owner)
..()
@@ -68,8 +68,8 @@
using.hud = src
static_inventory += using
using = new /obj/screen/ghost/pai()
using.screen_loc = ui_ghost_pai
using = new /obj/screen/ghost/spawners()
using.screen_loc = ui_ghost_spawners
using.hud = src
static_inventory += using
+3 -3
View File
@@ -19,7 +19,7 @@
///Things rendered on "openspace"; holes in multi-z
/obj/screen/plane_master/openspace
name = "open space plane master"
plane = FLOOR_OPENSPACE_PLANE
plane = OPENSPACE_BACKDROP_PLANE
appearance_flags = PLANE_MASTER
blend_mode = BLEND_MULTIPLY
alpha = 255
@@ -106,8 +106,8 @@
*
* You really shouldn't be directly using this, use atom helpers instead
*/
/obj/screen/plane_master/emissive_unblockable
name = "emissive mob plane master"
/obj/screen/plane_master/emissive_blocker
name = "emissive blocker plane master"
plane = EMISSIVE_BLOCKER_PLANE
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
render_target = EMISSIVE_BLOCKER_RENDER_TARGET
@@ -217,7 +217,8 @@
config_entry_value = list( //DEFAULTS
/mob/living/simple_animal = 1,
/mob/living/silicon/pai = 1,
/mob/living/carbon/alien/humanoid/hunter = -1,
/mob/living/carbon/alien/humanoid/sentinel = 0.25,
/mob/living/carbon/alien/humanoid/drone = 0.5,
/mob/living/carbon/alien/humanoid/royal/praetorian = 1,
/mob/living/carbon/alien/humanoid/royal/queen = 3
)
@@ -248,8 +249,18 @@
/datum/config_entry/number/movedelay/run_delay
/datum/config_entry/number/movedelay/run_delay/ValidateAndSet()
. = ..()
var/datum/movespeed_modifier/config_walk_run/M = get_cached_movespeed_modifier(/datum/movespeed_modifier/config_walk_run/run)
M.sync()
/datum/config_entry/number/movedelay/walk_delay
/datum/config_entry/number/movedelay/walk_delay/ValidateAndSet()
. = ..()
var/datum/movespeed_modifier/config_walk_run/M = get_cached_movespeed_modifier(/datum/movespeed_modifier/config_walk_run/walk)
M.sync()
/datum/config_entry/number/movedelay/sprint_speed_increase
config_entry_value = 1
@@ -288,6 +299,8 @@
/datum/config_entry/flag/roundstart_away //Will random away mission be loaded.
/datum/config_entry/flag/roundstart_vr //Will virtual reality missions be loaded?
/datum/config_entry/number/gateway_delay //How long the gateway takes before it activates. Default is half an hour. Only matters if roundstart_away is enabled.
config_entry_value = 18000
min_val = 0
@@ -335,6 +348,11 @@
config_entry_value = 16
min_val = 0
/datum/config_entry/number/icemoon_budget
config_entry_value = 90
integer = FALSE
min_val = 0
/datum/config_entry/number/station_space_budget
config_entry_value = 10
min_val = 0
+24 -11
View File
@@ -36,6 +36,9 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
var/sleep_delta = 1
///Only run ticker subsystems for the next n ticks.
var/skip_ticks = 0
var/make_runtime = 0
var/initializations_finished_with_no_players_logged_in //I wonder what this could be?
@@ -335,7 +338,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
new/datum/controller/failsafe() // (re)Start the failsafe.
//now do the actual stuff
if (!queue_head || !(iteration % 3))
if (!skip_ticks)
var/checking_runlevel = current_runlevel
if(cached_runlevel != checking_runlevel)
//resechedule subsystems
@@ -381,6 +384,8 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
iteration++
last_run = world.time
if (skip_ticks)
skip_ticks--
src.sleep_delta = MC_AVERAGE_FAST(src.sleep_delta, sleep_delta)
current_ticklimit = TICK_LIMIT_RUNNING
if (processing * sleep_delta <= world.tick_lag)
@@ -444,10 +449,12 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
while (queue_node)
if (ran && TICK_USAGE > TICK_LIMIT_RUNNING)
break
queue_node_flags = queue_node.flags
queue_node_priority = queue_node.queued_priority
if (!(queue_node_flags & SS_TICKER) && skip_ticks)
queue_node = queue_node.queue_next
continue
//super special case, subsystems where we can't make them pause mid way through
//if we can't run them this tick (without going over a tick)
//we bump up their priority and attempt to run them next tick
@@ -455,14 +462,15 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
// in those cases, so we just let them run)
if (queue_node_flags & SS_NO_TICK_CHECK)
if (queue_node.tick_usage > TICK_LIMIT_RUNNING - TICK_USAGE && ran_non_ticker)
queue_node.queued_priority += queue_priority_count * 0.1
queue_priority_count -= queue_node_priority
queue_priority_count += queue_node.queued_priority
current_tick_budget -= queue_node_priority
queue_node = queue_node.queue_next
if (!(queue_node_flags & SS_BACKGROUND))
queue_node.queued_priority += queue_priority_count * 0.1
queue_priority_count -= queue_node_priority
queue_priority_count += queue_node.queued_priority
current_tick_budget -= queue_node_priority
queue_node = queue_node.queue_next
continue
if ((queue_node_flags & SS_BACKGROUND) && !bg_calc)
if (!bg_calc && (queue_node_flags & SS_BACKGROUND))
current_tick_budget = queue_priority_count_bg
bg_calc = TRUE
@@ -515,7 +523,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
queue_node.paused_ticks = 0
queue_node.paused_tick_usage = 0
if (queue_node_flags & SS_BACKGROUND) //update our running total
if (bg_calc) //update our running total
queue_priority_count_bg -= queue_node_priority
else
queue_priority_count -= queue_node_priority
@@ -583,14 +591,19 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
log_world("MC: SoftReset: Finished.")
. = 1
/// Warns us that the end of tick byond map_update will be laggier then normal, so that we can just skip running subsystems this tick.
/datum/controller/master/proc/laggy_byond_map_update_incoming()
if (!skip_ticks)
skip_ticks = 1
/datum/controller/master/stat_entry()
if(!statclick)
statclick = new/obj/effect/statclick/debug(null, "Initializing...", src)
stat("Byond:", "(FPS:[world.fps]) (TickCount:[world.time/world.tick_lag]) (TickDrift:[round(Master.tickdrift,1)]([round((Master.tickdrift/(world.time/world.tick_lag))*100,0.1)]%))")
stat("Master Controller:", statclick.update("(TickRate:[Master.processing]) (Iteration:[Master.iteration])"))
stat("Byond:", "(FPS:[world.fps]) (TickCount:[world.time/world.tick_lag]) (TickDrift:[round(Master.tickdrift,1)]([round((Master.tickdrift/(world.time/world.tick_lag))*100,0.1)]%)) (Internal Tick Usage: [round(MAPTICK_LAST_INTERNAL_TICK_USAGE,0.1)]%)")
stat("Master Controller:", statclick.update("(TickRate:[Master.processing]) (Iteration:[Master.iteration]) (TickLimit: [round(Master.current_ticklimit, 0.1)])"))
/datum/controller/master/StartLoadingMap()
//disallow more than one map to load at once, multithreading it will just cause race conditions
+20 -12
View File
@@ -1,11 +1,3 @@
#define SSAIR_PIPENETS 1
#define SSAIR_ATMOSMACHINERY 2
#define SSAIR_REACTQUEUE 3
#define SSAIR_EXCITEDGROUPS 4
#define SSAIR_HIGHPRESSURE 5
#define SSAIR_HOTSPOTS 6
#define SSAIR_SUPERCONDUCTIVITY 7
SUBSYSTEM_DEF(air)
name = "Atmospherics"
init_order = INIT_ORDER_AIR
@@ -20,6 +12,7 @@ SUBSYSTEM_DEF(air)
var/cost_hotspots = 0
var/cost_superconductivity = 0
var/cost_pipenets = 0
var/cost_rebuilds = 0
var/cost_atmos_machinery = 0
var/list/excited_groups = list()
@@ -27,6 +20,7 @@ SUBSYSTEM_DEF(air)
var/list/turf_react_queue = list()
var/list/hotspots = list()
var/list/networks = list()
var/list/pipenets_needing_rebuilt = list()
var/list/obj/machinery/atmos_machinery = list()
var/list/pipe_init_dirs_cache = list()
@@ -39,7 +33,7 @@ SUBSYSTEM_DEF(air)
var/list/currentrun = list()
var/currentpart = SSAIR_PIPENETS
var/currentpart = SSAIR_REBUILD_PIPENETS
var/map_loading = TRUE
var/list/queued_for_activation
@@ -52,6 +46,7 @@ SUBSYSTEM_DEF(air)
msg += "HS:[round(cost_hotspots,1)]|"
msg += "SC:[round(cost_superconductivity,1)]|"
msg += "PN:[round(cost_pipenets,1)]|"
msg += "RB:[round(cost_rebuilds,1)]|"
msg += "AM:[round(cost_atmos_machinery,1)]"
msg += "} "
msg += "AT:[active_turfs.len]|"
@@ -77,6 +72,18 @@ SUBSYSTEM_DEF(air)
/datum/controller/subsystem/air/fire(resumed = 0)
var/timer = TICK_USAGE_REAL
if(currentpart == SSAIR_REBUILD_PIPENETS)
var/list/pipenet_rebuilds = pipenets_needing_rebuilt
for(var/thing in pipenet_rebuilds)
var/obj/machinery/atmospherics/AT = thing
AT.build_network()
cost_rebuilds = MC_AVERAGE(cost_rebuilds, TICK_DELTA_TO_MS(TICK_USAGE_REAL - timer))
pipenets_needing_rebuilt.Cut()
if(state != SS_RUNNING)
return
resumed = FALSE
currentpart = SSAIR_PIPENETS
if(currentpart == SSAIR_PIPENETS || !resumed)
process_pipenets(resumed)
cost_pipenets = MC_AVERAGE(cost_pipenets, TICK_DELTA_TO_MS(TICK_USAGE_REAL - timer))
@@ -137,9 +144,7 @@ SUBSYSTEM_DEF(air)
if(state != SS_RUNNING)
return
resumed = 0
currentpart = SSAIR_PIPENETS
currentpart = SSAIR_REBUILD_PIPENETS
/datum/controller/subsystem/air/proc/process_pipenets(resumed = 0)
if (!resumed)
@@ -156,6 +161,9 @@ SUBSYSTEM_DEF(air)
if(MC_TICK_CHECK)
return
/datum/controller/subsystem/air/proc/add_to_rebuild_queue(atmos_machine)
if(istype(atmos_machine, /obj/machinery/atmospherics))
pipenets_needing_rebuilt += atmos_machine
/datum/controller/subsystem/air/proc/process_atmos_machinery(resumed = 0)
var/seconds = wait * 0.1
-23
View File
@@ -16,7 +16,6 @@ SUBSYSTEM_DEF(atoms)
/datum/controller/subsystem/atoms/Initialize(timeofday)
GLOB.fire_overlay.appearance_flags = RESET_COLOR
setupGenetics() //to set the mutations' sequence.
initialized = INITIALIZATION_INNEW_MAPLOAD
InitializeAtoms()
return ..()
@@ -107,28 +106,6 @@ SUBSYSTEM_DEF(atoms)
old_initialized = SSatoms.old_initialized
BadInitializeCalls = SSatoms.BadInitializeCalls
/datum/controller/subsystem/atoms/proc/setupGenetics()
var/list/mutations = subtypesof(/datum/mutation/human)
shuffle_inplace(mutations)
for(var/A in subtypesof(/datum/generecipe))
var/datum/generecipe/GR = A
GLOB.mutation_recipes[initial(GR.required)] = initial(GR.result)
for(var/i in 1 to LAZYLEN(mutations))
var/path = mutations[i] //byond gets pissy when we do it in one line
var/datum/mutation/human/B = new path ()
B.alias = "Mutation #[i]"
GLOB.all_mutations[B.type] = B
GLOB.full_sequences[B.type] = generate_gene_sequence(B.blocks)
if(B.locked)
continue
if(B.quality == POSITIVE)
GLOB.good_mutations |= B
else if(B.quality == NEGATIVE)
GLOB.bad_mutations |= B
else if(B.quality == MINOR_NEGATIVE)
GLOB.not_good_mutations |= B
CHECK_TICK
/datum/controller/subsystem/atoms/proc/InitLog()
. = ""
for(var/path in BadInitializeCalls)
+1 -2
View File
@@ -6,7 +6,6 @@ SUBSYSTEM_DEF(lighting)
name = "Lighting"
wait = 2
init_order = INIT_ORDER_LIGHTING
flags = SS_TICKER
/datum/controller/subsystem/lighting/stat_entry()
..("L:[GLOB.lighting_update_lights.len]|C:[GLOB.lighting_update_corners.len]|O:[GLOB.lighting_update_objects.len]")
@@ -85,4 +84,4 @@ SUBSYSTEM_DEF(lighting)
/datum/controller/subsystem/lighting/Recover()
initialized = SSlighting.initialized
..()
..()
+92 -34
View File
@@ -1,3 +1,5 @@
#define INIT_ANNOUNCE(X) to_chat(world, "<span class='boldannounce'>[X]</span>"); log_world(X)
SUBSYSTEM_DEF(mapping)
name = "Mapping"
init_order = INIT_ORDER_MAPPING
@@ -14,6 +16,8 @@ SUBSYSTEM_DEF(mapping)
var/list/ruins_templates = list()
var/list/space_ruins_templates = list()
var/list/lava_ruins_templates = list()
var/list/ice_ruins_templates = list()
var/list/ice_ruins_underground_templates = list()
var/list/station_ruins_templates = list()
var/datum/space_level/isolated_ruins_z //Created on demand during ruin loading.
@@ -40,6 +44,13 @@ SUBSYSTEM_DEF(mapping)
var/stat_map_name = "Loading..."
/// Lookup list for random generated IDs.
var/list/random_generated_ids_by_original = list()
/// next id for separating obfuscated ids.
var/obfuscation_next_id = 1
/// "secret" key
var/obfuscation_secret
//dlete dis once #39770 is resolved
/datum/controller/subsystem/mapping/proc/HACK_LoadMapConfig()
if(!config)
@@ -50,6 +61,10 @@ SUBSYSTEM_DEF(mapping)
#endif
stat_map_name = config.map_name
/datum/controller/subsystem/mapping/PreInit()
if(!obfuscation_secret)
obfuscation_secret = md5(GUID()) //HAH! Guess this!
/datum/controller/subsystem/mapping/Initialize(timeofday)
HACK_LoadMapConfig()
if(initialized)
@@ -81,25 +96,40 @@ SUBSYSTEM_DEF(mapping)
// Pick a random away mission.
if(CONFIG_GET(flag/roundstart_away))
createRandomZlevel()
// Pick a random VR level.
if(CONFIG_GET(flag/roundstart_vr))
createRandomZlevel(VIRT_REALITY_NAME, list(ZTRAIT_AWAY = TRUE, ZTRAIT_VR = TRUE), GLOB.potential_vr_levels)
// Generate mining ruins
loading_ruins = TRUE
var/list/lava_ruins = levels_by_trait(ZTRAIT_LAVA_RUINS)
if (lava_ruins.len)
seedRuins(lava_ruins, CONFIG_GET(number/lavaland_budget), /area/lavaland/surface/outdoors/unexplored, lava_ruins_templates)
seedRuins(lava_ruins, CONFIG_GET(number/lavaland_budget), list(/area/lavaland/surface/outdoors/unexplored), lava_ruins_templates)
for (var/lava_z in lava_ruins)
spawn_rivers(lava_z)
var/list/ice_ruins = levels_by_trait(ZTRAIT_ICE_RUINS)
if (ice_ruins.len)
// needs to be whitelisted for underground too so place_below ruins work
seedRuins(ice_ruins, CONFIG_GET(number/icemoon_budget), list(/area/icemoon/surface/outdoors/unexplored, /area/icemoon/underground/unexplored), ice_ruins_templates)
for (var/ice_z in ice_ruins)
spawn_rivers(ice_z, 4, /turf/open/openspace/icemoon, /area/icemoon/surface/outdoors/unexplored/rivers)
var/list/ice_ruins_underground = levels_by_trait(ZTRAIT_ICE_RUINS_UNDERGROUND)
if (ice_ruins_underground.len)
seedRuins(ice_ruins_underground, CONFIG_GET(number/icemoon_budget), list(/area/icemoon/underground/unexplored), ice_ruins_underground_templates)
for (var/ice_z in ice_ruins_underground)
spawn_rivers(ice_z, 4, level_trait(ice_z, ZTRAIT_BASETURF), /area/icemoon/underground/unexplored/rivers)
// Generate deep space ruins
var/list/space_ruins = levels_by_trait(ZTRAIT_SPACE_RUINS)
if (space_ruins.len)
seedRuins(space_ruins, CONFIG_GET(number/space_budget), /area/space, space_ruins_templates)
seedRuins(space_ruins, CONFIG_GET(number/space_budget), list(/area/space), space_ruins_templates)
// Generate station space ruins
var/list/station_ruins = levels_by_trait(ZTRAIT_STATION)
if (station_ruins.len)
seedRuins(station_ruins, CONFIG_GET(number/station_space_budget), /area/space/station_ruins, station_ruins_templates)
seedRuins(station_ruins, (SSmapping.config.station_ruin_budget < 0) ? CONFIG_GET(number/station_space_budget) : SSmapping.config.station_ruin_budget, list(/area/space/station_ruins), station_ruins_templates)
SSmapping.seedStation()
loading_ruins = FALSE
#endif
@@ -167,6 +197,8 @@ SUBSYSTEM_DEF(mapping)
ruins_templates = SSmapping.ruins_templates
space_ruins_templates = SSmapping.space_ruins_templates
lava_ruins_templates = SSmapping.lava_ruins_templates
ice_ruins_templates = SSmapping.ice_ruins_templates
ice_ruins_underground_templates = SSmapping.ice_ruins_underground_templates
station_ruins_templates = SSmapping.station_ruins_templates
shuttle_templates = SSmapping.shuttle_templates
shelter_templates = SSmapping.shelter_templates
@@ -181,8 +213,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, silent = FALSE)
/datum/controller/subsystem/mapping/proc/LoadGroup(list/errorList, name, path, files, list/traits, list/default_traits, silent = FALSE, orientation = SOUTH)
. = list()
var/start_time = REALTIMEOFDAY
@@ -222,7 +253,7 @@ SUBSYSTEM_DEF(mapping)
// load the maps
for (var/P in parsed_maps)
var/datum/parsed_map/pm = P
if (!pm.load(1, 1, start_z + parsed_maps[P], no_changeturf = TRUE))
if (!pm.load(1, 1, start_z + parsed_maps[P], no_changeturf = TRUE, orientation = orientation))
errorList |= pm.original_path
if(!silent)
INIT_ANNOUNCE("Loaded [name] in [(REALTIMEOFDAY - start_time)/10]s!")
@@ -238,7 +269,7 @@ SUBSYSTEM_DEF(mapping)
// load the station
station_start = world.maxz + 1
INIT_ANNOUNCE("Loading [config.map_name]...")
LoadGroup(FailedZs, "Station", config.map_path, config.map_file, config.traits, ZTRAITS_STATION)
LoadGroup(FailedZs, "Station", config.map_path, config.map_file, config.traits, ZTRAITS_STATION, FALSE, config.orientation)
if(SSdbcore.Connect())
var/datum/DBQuery/query_round_map_name = SSdbcore.NewQuery("UPDATE [format_table_name("round")] SET map_name = '[config.map_name]' WHERE id = [GLOB.round_id]")
@@ -254,7 +285,7 @@ SUBSYSTEM_DEF(mapping)
// load mining
if(config.minetype == "lavaland")
LoadGroup(FailedZs, "Lavaland", "map_files/Mining", "Lavaland.dmm", default_traits = ZTRAITS_LAVALAND)
else if (!isnull(config.minetype))
else if (!isnull(config.minetype) && config.minetype != "none")
INIT_ANNOUNCE("WARNING: An unknown minetype '[config.minetype]' was set! This is being ignored! Update the maploader code!")
#endif
@@ -265,7 +296,6 @@ SUBSYSTEM_DEF(mapping)
msg += ", [FailedZs[I]]"
msg += ". Yell at your server host!"
INIT_ANNOUNCE(msg)
#undef INIT_ANNOUNCE
GLOBAL_LIST_EMPTY(the_station_areas)
@@ -359,6 +389,7 @@ GLOBAL_LIST_EMPTY(the_station_areas)
// Still supporting bans by filename
var/list/banned = generateMapList("[global.config.directory]/lavaruinblacklist.txt")
banned += generateMapList("[global.config.directory]/spaceruinblacklist.txt")
banned += generateMapList("[global.config.directory]/iceruinblacklist.txt")
banned += generateMapList("[global.config.directory]/stationruinblacklist.txt")
for(var/item in sortList(subtypesof(/datum/map_template/ruin), /proc/cmp_ruincost_priority))
@@ -376,6 +407,10 @@ GLOBAL_LIST_EMPTY(the_station_areas)
if(istype(R, /datum/map_template/ruin/lavaland))
lava_ruins_templates[R.name] = R
else if(istype(R, /datum/map_template/ruin/icemoon/underground))
ice_ruins_underground_templates[R.name] = R
else if(istype(R, /datum/map_template/ruin/icemoon))
ice_ruins_templates[R.name] = R
else if(istype(R, /datum/map_template/ruin/space))
space_ruins_templates[R.name] = R
else if(istype(R, /datum/map_template/ruin/station))
@@ -410,52 +445,63 @@ GLOBAL_LIST_EMPTY(the_station_areas)
//Manual loading of away missions.
/client/proc/admin_away()
set name = "Load Away Mission"
set name = "Load Away Mission / Virtual Reality"
set category = "Fun"
if(!holder ||!check_rights(R_FUN))
return
var/choice = alert(src, "What kind of level would you like to load?", "Load Away/VR", AWAY_MISSION_NAME, VIRT_REALITY_NAME, "Cancel")
if(!GLOB.the_gateway)
if(alert("There's no home gateway on the station. You sure you want to continue ?", "Uh oh", "Yes", "No") != "Yes")
var/list/possible_options
var/list/ztraits
switch(choice)
if(VIRT_REALITY_NAME)
possible_options = GLOB.potential_vr_levels
ztraits = list(ZTRAIT_AWAY = TRUE, ZTRAIT_VR = TRUE)
if(AWAY_MISSION_NAME)
if(!GLOB.the_gateway)
if(alert("There's no home gateway on the station. You sure you want to continue ?", "Uh oh", "Yes", "No") != "Yes")
return
possible_options = GLOB.potential_away_levels
ztraits = list(ZTRAIT_AWAY = TRUE)
else
return
var/list/possible_options = GLOB.potentialRandomZlevels + "Custom"
var/away_name
var/datum/space_level/away_level
possible_options += "Custom"
var/lvl_name
var/datum/space_level/level
var/answer = input("What kind ? ","Away") as null|anything in possible_options
var/answer = input("What kind ? ","Away/VR") as null|anything in possible_options
switch(answer)
if(null)
return
if("Custom")
var/mapfile = input("Pick file:", "File") as null|file
if(!mapfile)
return
away_name = "[mapfile] custom"
to_chat(usr,"<span class='notice'>Loading [away_name]...</span>")
var/datum/map_template/template = new(mapfile, "Away Mission")
away_level = template.load_new_z()
lvl_name = "[mapfile] custom"
to_chat(usr,"<span class='notice'>Loading [lvl_name]...</span>")
var/datum/map_template/template = new(mapfile, choice, ztraits)
level = template.load_new_z(ztraits)
else
if(answer in GLOB.potentialRandomZlevels)
away_name = answer
to_chat(usr,"<span class='notice'>Loading [away_name]...</span>")
var/datum/map_template/template = new(away_name, "Away Mission")
away_level = template.load_new_z()
else
return
lvl_name = answer
to_chat(usr,"<span class='notice'>Loading [lvl_name]...</span>")
var/datum/map_template/template = new(lvl_name, choice)
level = template.load_new_z(ztraits)
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!")
message_admins("Admin [key_name_admin(usr)] has loaded [lvl_name] [choice].")
log_admin("Admin [key_name(usr)] has loaded [lvl_name] [choice].")
if(!level)
message_admins("Loading [lvl_name] failed!")
return
if(GLOB.the_gateway)
if(choice == AWAY_MISSION_NAME && GLOB.the_gateway)
//Link any found away gate with station gate
var/obj/machinery/gateway/centeraway/new_gate
for(var/obj/machinery/gateway/centeraway/G in GLOB.machines)
if(G.z == away_level.z_value) //I'll have to refactor gateway shitcode before multi-away support.
if(G.z == level.z_value) //I'll have to refactor gateway shitcode before multi-away support.
new_gate = G
break
//Link station gate with away gate and remove wait time.
@@ -555,3 +601,15 @@ GLOBAL_LIST_EMPTY(the_station_areas)
LM.load()
if(GLOB.stationroom_landmarks.len)
seedStation() //I'm sure we can trust everyone not to insert a 1x1 rooms which loads a landmark which loads a landmark which loads a la...
/**
* Generates an obfuscated but constant id for an original id for cases where you don't want players codediving for an id.
* WARNING: MAKE SURE PLAYERS ARE NOT ABLE TO ACCESS THIS. To save performance, it's just secret + an incrementing number. Very guessable if you know what the secret is.
*/
/datum/controller/subsystem/mapping/proc/get_obfuscated_id(original, id_type = "GENERAL")
if(!original)
return //no.
var/key = "[original]%[id_type]"
if(random_generated_ids_by_original[key])
return random_generated_ids_by_original[key]
. = random_generated_ids_by_original[key] = "[obfuscation_secret]%[obfuscation_next_id++]"
@@ -1,25 +0,0 @@
PROCESSING_SUBSYSTEM_DEF(flightpacks)
name = "Flightpack Movement"
priority = FIRE_PRIORITY_FLIGHTPACKS
wait = 2
stat_tag = "FM"
flags = SS_NO_INIT|SS_TICKER|SS_KEEP_TIMING
var/flightsuit_processing = FLIGHTSUIT_PROCESSING_FULL
/datum/controller/subsystem/processing/flightpacks/Initialize()
sync_flightsuit_processing()
/datum/controller/subsystem/processing/flightpacks/vv_edit_var(var_name, var_value)
..()
switch(var_name)
if("flightsuit_processing")
sync_flightsuit_processing()
/datum/controller/subsystem/processing/flightpacks/proc/sync_flightsuit_processing()
for(var/obj/item/flightpack/FP in processing)
FP.sync_processing(src)
if(flightsuit_processing == FLIGHTSUIT_PROCESSING_NONE) //Don't even bother firing.
can_fire = FALSE
else
can_fire = TRUE
@@ -3,7 +3,6 @@ PROCESSING_SUBSYSTEM_DEF(projectiles)
wait = 1
stat_tag = "PP"
flags = SS_NO_INIT|SS_TICKER
var/global_max_tick_moves = 10
var/global_pixel_speed = 2
var/global_iterations_per_move = 16

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