@@ -88,18 +88,21 @@ jobs:
|
||||
mysql -u root -proot tg_ci < SQL/tgstation_schema.sql
|
||||
mysql -u root -proot -e 'CREATE DATABASE tg_ci_prefixed;'
|
||||
mysql -u root -proot tg_ci_prefixed < SQL/tgstation_schema_prefixed.sql
|
||||
- name: Install rust-g
|
||||
- name: Install rust dependencies
|
||||
run: |
|
||||
sudo dpkg --add-architecture i386
|
||||
sudo apt update || true
|
||||
sudo apt install -o APT::Immediate-Configure=false libssl1.1:i386
|
||||
bash tools/ci/install_rust_g.sh
|
||||
- name: Install auxmos
|
||||
run: |
|
||||
bash tools/ci/install_auxmos.sh
|
||||
- name: Compile and run tests
|
||||
run: |
|
||||
bash tools/ci/install_byond.sh
|
||||
source $HOME/BYOND/byond/bin/byondsetup
|
||||
tools/build/build
|
||||
# bash tools/ci/run_server.sh
|
||||
tools/build/build -DCIBUILDING
|
||||
bash tools/ci/run_server.sh
|
||||
env:
|
||||
CBT_BUILD_MODE: TEST_RUN
|
||||
|
||||
|
||||
@@ -0,0 +1,175 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"b" = (
|
||||
/turf/closed/wall/mineral/silver,
|
||||
/area/ruin/powered/bathhouse)
|
||||
"c" = (
|
||||
/obj/machinery/shower{
|
||||
pixel_y = 16
|
||||
},
|
||||
/obj/structure/curtain,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/ruin/powered/bathhouse)
|
||||
"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/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"o" = (
|
||||
/obj/structure/bed,
|
||||
/obj/item/bedsheet,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered/bathhouse)
|
||||
|
||||
(1,1,1) = {"
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
n
|
||||
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
|
||||
n
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
b
|
||||
e
|
||||
g
|
||||
g
|
||||
b
|
||||
n
|
||||
n
|
||||
n
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
b
|
||||
e
|
||||
g
|
||||
g
|
||||
i
|
||||
n
|
||||
n
|
||||
n
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
b
|
||||
f
|
||||
g
|
||||
g
|
||||
b
|
||||
n
|
||||
n
|
||||
a
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
n
|
||||
a
|
||||
a
|
||||
"}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,161 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/turf/closed/indestructible/sandstone,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"c" = (
|
||||
/turf/open/water,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"I" = (
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"L" = (
|
||||
/obj/structure/fluff/beach_umbrella,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"U" = (
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/lavaland/surface/outdoors)
|
||||
|
||||
(1,1,1) = {"
|
||||
I
|
||||
I
|
||||
I
|
||||
I
|
||||
I
|
||||
I
|
||||
I
|
||||
I
|
||||
I
|
||||
I
|
||||
I
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
I
|
||||
I
|
||||
I
|
||||
a
|
||||
a
|
||||
I
|
||||
a
|
||||
a
|
||||
I
|
||||
I
|
||||
I
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
I
|
||||
I
|
||||
a
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
a
|
||||
I
|
||||
I
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
I
|
||||
a
|
||||
U
|
||||
L
|
||||
c
|
||||
c
|
||||
c
|
||||
L
|
||||
U
|
||||
a
|
||||
I
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
I
|
||||
a
|
||||
U
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
U
|
||||
a
|
||||
I
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
I
|
||||
I
|
||||
U
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
U
|
||||
I
|
||||
I
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
I
|
||||
a
|
||||
U
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
U
|
||||
a
|
||||
I
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
I
|
||||
a
|
||||
U
|
||||
L
|
||||
c
|
||||
c
|
||||
c
|
||||
L
|
||||
U
|
||||
a
|
||||
I
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
I
|
||||
I
|
||||
a
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
a
|
||||
I
|
||||
I
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
I
|
||||
I
|
||||
I
|
||||
a
|
||||
a
|
||||
I
|
||||
a
|
||||
a
|
||||
I
|
||||
I
|
||||
I
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
I
|
||||
I
|
||||
I
|
||||
I
|
||||
I
|
||||
I
|
||||
I
|
||||
I
|
||||
I
|
||||
I
|
||||
I
|
||||
"}
|
||||
@@ -0,0 +1,734 @@
|
||||
//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/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"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)
|
||||
"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/bookcase/random,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/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/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/ruin/unpowered/buried_library)
|
||||
"av" = (
|
||||
/obj/structure/bookcase/random,
|
||||
/turf/open/space/basic,
|
||||
/area/ruin/unpowered/buried_library)
|
||||
"aw" = (
|
||||
/turf/open/floor/plating,
|
||||
/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/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/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/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/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,
|
||||
/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/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/ruin/unpowered/buried_library)
|
||||
"aN" = (
|
||||
/obj/structure/statue/sandstone/venus,
|
||||
/turf/open/floor/carpet/black,
|
||||
/area/ruin/unpowered/buried_library)
|
||||
"aP" = (
|
||||
/obj/item/keycard/library,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/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)
|
||||
"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)
|
||||
"ba" = (
|
||||
/obj/structure/barricade/wooden/crude,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/ruin/unpowered/buried_library)
|
||||
"bg" = (
|
||||
/obj/item/paper/fluff/ruins/oldstation/protogun,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/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" = (
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/ruin/unpowered/buried_library)
|
||||
"bj" = (
|
||||
/obj/item/book/manual/random,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/ruin/unpowered/buried_library)
|
||||
"bl" = (
|
||||
/obj/item/storage/box/fountainpens,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/ruin/unpowered/buried_library)
|
||||
"bm" = (
|
||||
/obj/structure/fluff/paper/stack,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/ruin/unpowered/buried_library)
|
||||
"bn" = (
|
||||
/obj/item/book/manual/random,
|
||||
/obj/item/stack/sheet/mineral/wood,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/ruin/unpowered/buried_library)
|
||||
"bo" = (
|
||||
/obj/item/stack/sheet/mineral/wood,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/ruin/unpowered/buried_library)
|
||||
"bp" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/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/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/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/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"bw" = (
|
||||
/turf/open/floor/wood,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"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)
|
||||
|
||||
(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
|
||||
bi
|
||||
bi
|
||||
bi
|
||||
bi
|
||||
bi
|
||||
ac
|
||||
ba
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ad
|
||||
ad
|
||||
aa
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
bi
|
||||
bi
|
||||
bi
|
||||
bi
|
||||
bo
|
||||
bi
|
||||
bi
|
||||
bi
|
||||
bm
|
||||
ae
|
||||
af
|
||||
ae
|
||||
ac
|
||||
ad
|
||||
ad
|
||||
aa
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
bi
|
||||
bi
|
||||
aR
|
||||
bi
|
||||
bi
|
||||
ae
|
||||
bj
|
||||
aq
|
||||
bi
|
||||
ah
|
||||
aL
|
||||
ah
|
||||
ao
|
||||
ac
|
||||
ad
|
||||
aa
|
||||
aa
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
bi
|
||||
bi
|
||||
bi
|
||||
aC
|
||||
ae
|
||||
aQ
|
||||
aq
|
||||
bi
|
||||
aq
|
||||
bg
|
||||
ah
|
||||
ao
|
||||
ah
|
||||
bi
|
||||
ac
|
||||
ad
|
||||
ad
|
||||
aa
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
ad
|
||||
ac
|
||||
bi
|
||||
ae
|
||||
bi
|
||||
aM
|
||||
ae
|
||||
aq
|
||||
bm
|
||||
aq
|
||||
aA
|
||||
ah
|
||||
ao
|
||||
ah
|
||||
ae
|
||||
ac
|
||||
ad
|
||||
ad
|
||||
ad
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
ad
|
||||
ac
|
||||
bi
|
||||
bm
|
||||
bi
|
||||
ao
|
||||
aR
|
||||
ao
|
||||
aA
|
||||
ao
|
||||
ag
|
||||
ah
|
||||
aR
|
||||
ah
|
||||
bh
|
||||
ac
|
||||
ad
|
||||
ad
|
||||
ad
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
ad
|
||||
bi
|
||||
bi
|
||||
av
|
||||
aA
|
||||
bi
|
||||
aG
|
||||
aD
|
||||
aX
|
||||
bi
|
||||
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
|
||||
bi
|
||||
ae
|
||||
ao
|
||||
ae
|
||||
ao
|
||||
ac
|
||||
bp
|
||||
bw
|
||||
ad
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
ad
|
||||
ad
|
||||
ac
|
||||
ap
|
||||
bp
|
||||
bi
|
||||
aD
|
||||
aD
|
||||
aN
|
||||
bi
|
||||
aw
|
||||
bi
|
||||
ao
|
||||
af
|
||||
aR
|
||||
ae
|
||||
bq
|
||||
ae
|
||||
bu
|
||||
ad
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
aa
|
||||
al
|
||||
al
|
||||
al
|
||||
al
|
||||
al
|
||||
ae
|
||||
ah
|
||||
aR
|
||||
aD
|
||||
bi
|
||||
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
|
||||
bi
|
||||
ae
|
||||
bm
|
||||
ah
|
||||
ag
|
||||
br
|
||||
ac
|
||||
ad
|
||||
ad
|
||||
"}
|
||||
(13,1,1) = {"
|
||||
ad
|
||||
al
|
||||
am
|
||||
aJ
|
||||
aW
|
||||
ay
|
||||
ae
|
||||
ah
|
||||
ao
|
||||
ae
|
||||
ao
|
||||
ae
|
||||
af
|
||||
bp
|
||||
bi
|
||||
ah
|
||||
bi
|
||||
ah
|
||||
bp
|
||||
ac
|
||||
ad
|
||||
ad
|
||||
ad
|
||||
"}
|
||||
(14,1,1) = {"
|
||||
ad
|
||||
al
|
||||
aS
|
||||
aW
|
||||
aK
|
||||
al
|
||||
ae
|
||||
ah
|
||||
bi
|
||||
ah
|
||||
ao
|
||||
ah
|
||||
az
|
||||
ah
|
||||
bi
|
||||
ah
|
||||
bi
|
||||
bn
|
||||
ao
|
||||
ac
|
||||
ad
|
||||
aa
|
||||
aa
|
||||
"}
|
||||
(15,1,1) = {"
|
||||
ad
|
||||
al
|
||||
al
|
||||
ai
|
||||
ar
|
||||
al
|
||||
ag
|
||||
ah
|
||||
aL
|
||||
ah
|
||||
aA
|
||||
ah
|
||||
ao
|
||||
ah
|
||||
bi
|
||||
bi
|
||||
bl
|
||||
bi
|
||||
bi
|
||||
bi
|
||||
ad
|
||||
aa
|
||||
aa
|
||||
"}
|
||||
(16,1,1) = {"
|
||||
ad
|
||||
ad
|
||||
al
|
||||
al
|
||||
al
|
||||
al
|
||||
ao
|
||||
ah
|
||||
ao
|
||||
ah
|
||||
ao
|
||||
aV
|
||||
bi
|
||||
ah
|
||||
bp
|
||||
bi
|
||||
bm
|
||||
bo
|
||||
bi
|
||||
br
|
||||
bu
|
||||
aa
|
||||
aa
|
||||
"}
|
||||
(17,1,1) = {"
|
||||
aa
|
||||
ad
|
||||
ad
|
||||
ad
|
||||
ad
|
||||
ac
|
||||
ae
|
||||
ao
|
||||
ae
|
||||
aP
|
||||
ae
|
||||
aR
|
||||
ae
|
||||
bp
|
||||
bi
|
||||
bj
|
||||
bi
|
||||
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,170 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"b" = (
|
||||
/obj/structure/sign/poster/contraband/lusty_xenomorph,
|
||||
/turf/closed/wall/mineral/abductor,
|
||||
/area/lavaland/surface)
|
||||
"c" = (
|
||||
/turf/open/floor/mineral/diamond,
|
||||
/area/lavaland/surface)
|
||||
"d" = (
|
||||
/obj/item/reagent_containers/food/drinks/trophy/gold_cup,
|
||||
/turf/open/floor/mineral/diamond,
|
||||
/area/lavaland/surface)
|
||||
"e" = (
|
||||
/obj/item/greentext{
|
||||
light_color = "#64C864";
|
||||
light_range = 1
|
||||
},
|
||||
/turf/open/floor/mineral/diamond,
|
||||
/area/lavaland/surface)
|
||||
"f" = (
|
||||
/obj/item/tcg_card/special/xenomaid,
|
||||
/turf/open/floor/mineral/diamond,
|
||||
/area/lavaland/surface)
|
||||
|
||||
(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
|
||||
f
|
||||
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
|
||||
b
|
||||
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,881 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"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/template_noop)
|
||||
"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/jackboots,
|
||||
/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/ash/cacti,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/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/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"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/decal/cleanable/blood/drip,
|
||||
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/guidance{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/unpowered)
|
||||
"s" = (
|
||||
/obj/effect/decal/cleanable/trail_holder,
|
||||
/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
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
"}
|
||||
(3,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
|
||||
"}
|
||||
(4,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
|
||||
"}
|
||||
(5,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
|
||||
"}
|
||||
(6,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
|
||||
"}
|
||||
(7,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
|
||||
"}
|
||||
(8,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
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
d
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
b
|
||||
b
|
||||
c
|
||||
f
|
||||
f
|
||||
o
|
||||
q
|
||||
b
|
||||
b
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
"}
|
||||
(12,1,1) = {"
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
b
|
||||
b
|
||||
e
|
||||
f
|
||||
f
|
||||
f
|
||||
r
|
||||
b
|
||||
b
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
"}
|
||||
(13,1,1) = {"
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
b
|
||||
b
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
s
|
||||
b
|
||||
b
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
"}
|
||||
(14,1,1) = {"
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
b
|
||||
b
|
||||
g
|
||||
f
|
||||
f
|
||||
f
|
||||
s
|
||||
b
|
||||
b
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
"}
|
||||
(15,1,1) = {"
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
b
|
||||
b
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
s
|
||||
b
|
||||
b
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
"}
|
||||
(16,1,1) = {"
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
b
|
||||
b
|
||||
j
|
||||
f
|
||||
f
|
||||
f
|
||||
s
|
||||
b
|
||||
b
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
"}
|
||||
(17,1,1) = {"
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
b
|
||||
b
|
||||
k
|
||||
f
|
||||
f
|
||||
f
|
||||
s
|
||||
b
|
||||
b
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
"}
|
||||
(18,1,1) = {"
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
b
|
||||
b
|
||||
l
|
||||
f
|
||||
f
|
||||
f
|
||||
s
|
||||
b
|
||||
b
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
"}
|
||||
(19,1,1) = {"
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
b
|
||||
b
|
||||
b
|
||||
f
|
||||
f
|
||||
p
|
||||
b
|
||||
b
|
||||
b
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
"}
|
||||
(20,1,1) = {"
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
b
|
||||
b
|
||||
b
|
||||
f
|
||||
b
|
||||
b
|
||||
b
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
"}
|
||||
(21,1,1) = {"
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
b
|
||||
f
|
||||
b
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
"}
|
||||
(22,1,1) = {"
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
b
|
||||
f
|
||||
b
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
"}
|
||||
(23,1,1) = {"
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
b
|
||||
f
|
||||
b
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
"}
|
||||
(24,1,1) = {"
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
b
|
||||
m
|
||||
b
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
"}
|
||||
(25,1,1) = {"
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
n
|
||||
h
|
||||
n
|
||||
h
|
||||
n
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
"}
|
||||
(26,1,1) = {"
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
n
|
||||
n
|
||||
n
|
||||
h
|
||||
n
|
||||
n
|
||||
n
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
"}
|
||||
(27,1,1) = {"
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
"}
|
||||
(28,1,1) = {"
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
"}
|
||||
(29,1,1) = {"
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
"}
|
||||
@@ -0,0 +1,270 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface)
|
||||
"b" = (
|
||||
/turf/closed/mineral/volcanic/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"e" = (
|
||||
/obj/structure/spawner/nether,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface)
|
||||
"q" = (
|
||||
/turf/closed/mineral/strong/wasteland,
|
||||
/area/lavaland/surface/outdoors)
|
||||
|
||||
(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
|
||||
q
|
||||
q
|
||||
q
|
||||
q
|
||||
q
|
||||
q
|
||||
q
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
b
|
||||
b
|
||||
q
|
||||
q
|
||||
q
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
q
|
||||
q
|
||||
q
|
||||
b
|
||||
b
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
b
|
||||
b
|
||||
q
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
q
|
||||
b
|
||||
b
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
b
|
||||
q
|
||||
q
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
q
|
||||
q
|
||||
b
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
b
|
||||
q
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
q
|
||||
b
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
b
|
||||
q
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
q
|
||||
b
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
b
|
||||
q
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
e
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
q
|
||||
b
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
b
|
||||
q
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
q
|
||||
b
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
b
|
||||
q
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
q
|
||||
b
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
b
|
||||
q
|
||||
q
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
q
|
||||
q
|
||||
b
|
||||
"}
|
||||
(12,1,1) = {"
|
||||
b
|
||||
b
|
||||
q
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
q
|
||||
b
|
||||
b
|
||||
"}
|
||||
(13,1,1) = {"
|
||||
b
|
||||
b
|
||||
q
|
||||
q
|
||||
q
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
q
|
||||
q
|
||||
q
|
||||
b
|
||||
b
|
||||
"}
|
||||
(14,1,1) = {"
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
q
|
||||
q
|
||||
q
|
||||
q
|
||||
q
|
||||
q
|
||||
q
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
"}
|
||||
(15,1,1) = {"
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
"}
|
||||
+1526
-1410
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -29615,7 +29615,9 @@
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
|
||||
/obj/effect/turf_decal/tile/neutral,
|
||||
/turf/open/floor/plasteel,
|
||||
/turf/open/floor/plasteel/yellowsiding{
|
||||
dir = 8
|
||||
},
|
||||
/area/hallway/secondary/entry)
|
||||
"bqT" = (
|
||||
/obj/structure/flora/grass/jungle/b,
|
||||
@@ -30302,7 +30304,9 @@
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
|
||||
/obj/effect/turf_decal/tile/neutral,
|
||||
/turf/open/floor/plasteel,
|
||||
/turf/open/floor/plasteel/yellowsiding{
|
||||
dir = 8
|
||||
},
|
||||
/area/hallway/secondary/entry)
|
||||
"bsn" = (
|
||||
/obj/structure/girder,
|
||||
@@ -30967,7 +30971,9 @@
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral,
|
||||
/turf/open/floor/plasteel,
|
||||
/turf/open/floor/plasteel/yellowsiding{
|
||||
dir = 8
|
||||
},
|
||||
/area/hallway/secondary/entry)
|
||||
"btO" = (
|
||||
/obj/structure/cable{
|
||||
@@ -53150,6 +53156,14 @@
|
||||
/obj/machinery/power/rad_collector/anchored,
|
||||
/turf/open/floor/engine,
|
||||
/area/engineering/supermatter)
|
||||
"daQ" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/obj/structure/flora/ausbushes/reedbush{
|
||||
pixel_x = 3;
|
||||
pixel_y = 3
|
||||
},
|
||||
/turf/open/water/decorative,
|
||||
/area/hallway/secondary/entry)
|
||||
"daY" = (
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/turf/open/floor/plating,
|
||||
@@ -53171,14 +53185,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/department/security/brig)
|
||||
"deJ" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/table,
|
||||
/obj/item/gps/mining{
|
||||
gpstag = "MINE_PUB"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/turf/open/floor/plasteel/yellowsiding/corner,
|
||||
/area/hallway/secondary/entry)
|
||||
"dgg" = (
|
||||
/obj/structure/disposalpipe/segment{
|
||||
@@ -56253,6 +56260,10 @@
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/department/science)
|
||||
"jEZ" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/turf/open/floor/plasteel/yellowsiding,
|
||||
/area/hallway/secondary/entry)
|
||||
"jFw" = (
|
||||
/obj/effect/spawner/lootdrop/maintenance,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
@@ -56532,6 +56543,15 @@
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/department/engine)
|
||||
"kuS" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/computer/shuttle/mining/common{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/entry)
|
||||
"kvj" = (
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 1
|
||||
@@ -57645,6 +57665,9 @@
|
||||
},
|
||||
/turf/open/space/basic,
|
||||
/area/space/nearstation)
|
||||
"mJR" = (
|
||||
/turf/open/water/decorative,
|
||||
/area/hallway/secondary/entry)
|
||||
"mKc" = (
|
||||
/obj/structure/bookcase/random/nonfiction,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
@@ -58346,6 +58369,13 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/science/xenobiology)
|
||||
"osY" = (
|
||||
/obj/structure/flora/ausbushes/reedbush{
|
||||
pixel_x = -2;
|
||||
pixel_y = 13
|
||||
},
|
||||
/turf/open/water/decorative,
|
||||
/area/hallway/secondary/entry)
|
||||
"ous" = (
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
/obj/machinery/button/door{
|
||||
@@ -59477,6 +59507,12 @@
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engineering/main)
|
||||
"qFw" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/turf/open/floor/plasteel/yellowsiding{
|
||||
dir = 1
|
||||
},
|
||||
/area/hallway/secondary/entry)
|
||||
"qGu" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
@@ -59636,6 +59672,19 @@
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/exit/departure_lounge)
|
||||
"qUD" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/obj/structure/flora/ausbushes/sparsegrass,
|
||||
/obj/structure/flora/rock/pile/largejungle{
|
||||
pixel_x = -50;
|
||||
pixel_y = -50
|
||||
},
|
||||
/obj/structure/flora/ausbushes/sparsegrass{
|
||||
pixel_x = -60;
|
||||
pixel_y = -60
|
||||
},
|
||||
/turf/open/water/decorative,
|
||||
/area/hallway/secondary/entry)
|
||||
"qVk" = (
|
||||
/obj/machinery/door/poddoor/incinerator_atmos_aux,
|
||||
/obj/structure/lattice/catwalk,
|
||||
@@ -59996,6 +60045,13 @@
|
||||
icon_state = "platingdmg3"
|
||||
},
|
||||
/area/maintenance/department/science)
|
||||
"rGY" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
|
||||
/obj/effect/turf_decal/tile/neutral,
|
||||
/turf/open/floor/plasteel/yellowsiding/corner{
|
||||
dir = 8
|
||||
},
|
||||
/area/hallway/secondary/entry)
|
||||
"rHA" = (
|
||||
/turf/open/floor/plasteel,
|
||||
/area/construction/mining/aux_base)
|
||||
@@ -60375,7 +60431,9 @@
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/table,
|
||||
/obj/item/flashlight,
|
||||
/obj/item/gps/mining{
|
||||
gpstag = "MINE_PUB"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/entry)
|
||||
"sJp" = (
|
||||
@@ -60419,6 +60477,9 @@
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/security/execution/transfer)
|
||||
"sPh" = (
|
||||
/turf/open/floor/plasteel/yellowsiding,
|
||||
/area/hallway/secondary/entry)
|
||||
"sQt" = (
|
||||
/obj/machinery/door/airlock/external{
|
||||
name = "Supply Dock Airlock";
|
||||
@@ -61108,6 +61169,15 @@
|
||||
/obj/structure/lattice,
|
||||
/turf/open/space/basic,
|
||||
/area/space/nearstation)
|
||||
"upz" = (
|
||||
/turf/open/floor/plasteel/yellowsiding{
|
||||
dir = 4
|
||||
},
|
||||
/area/hallway/secondary/entry)
|
||||
"upX" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/turf/open/water/decorative,
|
||||
/area/hallway/secondary/entry)
|
||||
"uqJ" = (
|
||||
/obj/effect/spawner/structure/window/reinforced,
|
||||
/obj/structure/cable,
|
||||
@@ -61399,6 +61469,11 @@
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/solars/starboard)
|
||||
"uXL" = (
|
||||
/turf/open/floor/plasteel/yellowsiding{
|
||||
dir = 1
|
||||
},
|
||||
/area/hallway/secondary/entry)
|
||||
"uZb" = (
|
||||
/obj/structure/lattice,
|
||||
/obj/structure/window/reinforced{
|
||||
@@ -61717,6 +61792,11 @@
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/department/science)
|
||||
"vIa" = (
|
||||
/turf/open/floor/plasteel/yellowsiding/corner{
|
||||
dir = 4
|
||||
},
|
||||
/area/hallway/secondary/entry)
|
||||
"vIc" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "2-4"
|
||||
@@ -61911,6 +61991,13 @@
|
||||
},
|
||||
/turf/open/floor/engine,
|
||||
/area/engineering/main)
|
||||
"whP" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
|
||||
/obj/effect/turf_decal/tile/neutral,
|
||||
/turf/open/floor/plasteel/yellowsiding/corner{
|
||||
dir = 1
|
||||
},
|
||||
/area/hallway/secondary/entry)
|
||||
"wig" = (
|
||||
/obj/machinery/vending/cigarette,
|
||||
/turf/open/floor/plating{
|
||||
@@ -61943,15 +62030,14 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engineering/main)
|
||||
"wjQ" = (
|
||||
/obj/machinery/computer/shuttle/mining/common{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/table,
|
||||
/obj/item/flashlight,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/entry)
|
||||
"wkZ" = (
|
||||
@@ -62241,6 +62327,14 @@
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/department/security/brig)
|
||||
"wSX" = (
|
||||
/obj/structure/flora/junglebush/large{
|
||||
pixel_x = -15;
|
||||
pixel_y = -4
|
||||
},
|
||||
/obj/structure/flora/rock/pile,
|
||||
/turf/open/water/decorative,
|
||||
/area/hallway/secondary/entry)
|
||||
"wTD" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/folder/red,
|
||||
@@ -83253,10 +83347,10 @@ bdV
|
||||
bnp
|
||||
baK
|
||||
pEH
|
||||
deJ
|
||||
pEH
|
||||
sIK
|
||||
wjQ
|
||||
pEH
|
||||
kuS
|
||||
bbR
|
||||
aZx
|
||||
aaa
|
||||
@@ -83509,11 +83603,11 @@ aZx
|
||||
jzz
|
||||
bnp
|
||||
baK
|
||||
baK
|
||||
baK
|
||||
baK
|
||||
baK
|
||||
baK
|
||||
deJ
|
||||
upz
|
||||
upz
|
||||
upz
|
||||
vIa
|
||||
baK
|
||||
aZx
|
||||
aaa
|
||||
@@ -83766,11 +83860,11 @@ bbR
|
||||
bbR
|
||||
bnp
|
||||
baK
|
||||
baK
|
||||
baK
|
||||
baK
|
||||
baK
|
||||
baK
|
||||
sPh
|
||||
osY
|
||||
mJR
|
||||
mJR
|
||||
uXL
|
||||
baK
|
||||
aZx
|
||||
aZx
|
||||
@@ -84023,11 +84117,11 @@ baK
|
||||
baK
|
||||
bnq
|
||||
baM
|
||||
baK
|
||||
baK
|
||||
baK
|
||||
baK
|
||||
baK
|
||||
sPh
|
||||
mJR
|
||||
wSX
|
||||
mJR
|
||||
uXL
|
||||
baK
|
||||
bxY
|
||||
bzz
|
||||
@@ -84280,11 +84374,11 @@ bbT
|
||||
bbT
|
||||
bnr
|
||||
bop
|
||||
bbT
|
||||
bbT
|
||||
bbT
|
||||
bbT
|
||||
bbT
|
||||
jEZ
|
||||
qUD
|
||||
upX
|
||||
daQ
|
||||
qFw
|
||||
bbT
|
||||
bxZ
|
||||
bzA
|
||||
@@ -84537,11 +84631,11 @@ bkT
|
||||
bfY
|
||||
bns
|
||||
bfY
|
||||
bfY
|
||||
rGY
|
||||
bqS
|
||||
bsm
|
||||
btN
|
||||
bfY
|
||||
whP
|
||||
bfY
|
||||
bya
|
||||
bzB
|
||||
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
@@ -0,0 +1,9 @@
|
||||
#define AUXMOS (world.system_type == MS_WINDOWS ? "auxmos.dll" : __detect_auxmos())
|
||||
|
||||
/proc/__detect_auxmos()
|
||||
if (fexists("./libauxmos.so"))
|
||||
return "./libauxmos.so"
|
||||
else if (fexists("[world.GetConfig("env", "HOME")]/.byond/bin/libauxmos.so"))
|
||||
return "[world.GetConfig("env", "HOME")]/.byond/bin/libauxmos.so"
|
||||
else
|
||||
CRASH("Could not find libauxmos.so")
|
||||
@@ -1,2 +0,0 @@
|
||||
#define EXTOOLS (world.system_type == MS_WINDOWS ? "byond-extools.dll" : "libbyond-extools.so")
|
||||
#define AUXMOS (world.system_type == MS_WINDOWS ? "auxmos.dll" : "libauxmos.so")
|
||||
@@ -0,0 +1,114 @@
|
||||
// Sorted alphabetically
|
||||
#define span_abductor(str) ("<span class='abductor'>" + str + "</span>")
|
||||
#define span_admin(str) ("<span class='admin'>" + str + "</span>")
|
||||
#define span_adminhelp(str) ("<span class='adminhelp'>" + str + "</span>")
|
||||
#define span_adminnotice(str) ("<span class='adminnotice'>" + str + "</span>")
|
||||
#define span_adminobserverooc(str) ("<span class='adminobserverooc'>" + str + "</span>")
|
||||
#define span_adminooc(str) ("<span class='adminooc'>" + str + "</span>")
|
||||
#define span_adminsay(str) ("<span class='adminsay'>" + str + "</span>")
|
||||
#define span_aiprivradio(str) ("<span class='aiprivradio'>" + str + "</span>")
|
||||
#define span_alert(str) ("<span class='alert'>" + str + "</span>")
|
||||
#define span_alertalien(str) ("<span class='alertalien'>" + str + "</span>")
|
||||
#define span_alertsyndie(str) ("<span class='alertsyndie'>" + str + "</span>")
|
||||
#define span_alertwarning(str) ("<span class='alertwarning'>" + str + "</span>")
|
||||
#define span_alien(str) ("<span class='alien'>" + str + "</span>")
|
||||
#define span_announce(str) ("<span class='announce'>" + str + "</span>")
|
||||
#define span_big(str) ("<span class='big'>" + str + "</span>")
|
||||
#define span_bigicon(str) ("<span class='bigicon'>" + str + "</span>")
|
||||
#define span_binarysay(str) ("<span class='binarysay'>" + str + "</span>")
|
||||
#define span_blue(str) ("<span class='blue'>" + str + "</span>")
|
||||
#define span_blueteamradio(str) ("<span class='blueteamradio'>" + str + "</span>")
|
||||
#define span_bold(str) ("<span class='bold'>" + str + "</span>")
|
||||
#define span_boldannounce(str) ("<span class='boldannounce'>" + str + "</span>")
|
||||
#define span_boldnotice(str) ("<span class='boldnotice'>" + str + "</span>")
|
||||
#define span_boldwarning(str) ("<span class='boldwarning'>" + str + "</span>")
|
||||
#define span_centcomradio(str) ("<span class='centcomradio'>" + str + "</span>")
|
||||
#define span_changeling(str) ("<span class='changeling'>" + str + "</span>")
|
||||
#define span_clown(str) ("<span class='clown'>" + str + "</span>")
|
||||
#define span_colossus(str) ("<span class='colossus'>" + str + "</span>")
|
||||
#define span_command_headset(str) ("<span class='command_headset'>" + str + "</span>")
|
||||
#define span_comradio(str) ("<span class='comradio'>" + str + "</span>")
|
||||
#define span_cult(str) ("<span class='cult'>" + str + "</span>")
|
||||
#define span_cultbold(str) ("<span class='cultbold'>" + str + "</span>")
|
||||
#define span_cultboldtalic(str) ("<span class='cultboldtalic'>" + str + "</span>")
|
||||
#define span_cultitalic(str) ("<span class='cultitalic'>" + str + "</span>")
|
||||
#define span_cultlarge(str) ("<span class='cultlarge'>" + str + "</span>")
|
||||
#define span_danger(str) ("<span class='danger'>" + str + "</span>")
|
||||
#define span_deadsay(str) ("<span class='deadsay'>" + str + "</span>")
|
||||
#define span_deconversion_message(str) ("<span class='deconversion_message'>" + str + "</span>")
|
||||
#define span_drone(str) ("<span class='drone'>" + str + "</span>")
|
||||
#define span_engradio(str) ("<span class='engradio'>" + str + "</span>")
|
||||
#define span_extremelybig(str) ("<span class='extremelybig'>" + str + "</span>")
|
||||
#define span_ghostalert(str) ("<span class='ghostalert'>" + str + "</span>")
|
||||
#define span_green(str) ("<span class='green'>" + str + "</span>")
|
||||
#define span_greenannounce(str) ("<span class='greenannounce'>" + str + "</span>")
|
||||
#define span_greenteamradio(str) ("<span class='greenteamradio'>" + str + "</span>")
|
||||
#define span_greentext(str) ("<span class='greentext'>" + str + "</span>")
|
||||
#define span_hear(str) ("<span class='hear'>" + str + "</span>")
|
||||
#define span_hidden(str) ("<span class='hidden'>" + str + "</span>")
|
||||
#define span_hierophant(str) ("<span class='hierophant'>" + str + "</span>")
|
||||
#define span_hierophant_warning(str) ("<span class='hierophant_warning'>" + str + "</span>")
|
||||
#define span_highlight(str) ("<span class='highlight'>" + str + "</span>")
|
||||
#define span_his_grace(str) ("<span class='his_grace'>" + str + "</span>")
|
||||
#define span_holoparasite(str) ("<span class='holoparasite'>" + str + "</span>")
|
||||
#define span_hypnophrase(str) ("<span class='hypnophrase'>" + str + "</span>")
|
||||
#define span_icon(str) ("<span class='icon'>" + str + "</span>")
|
||||
#define span_info(str) ("<span class='info'>" + str + "</span>")
|
||||
#define span_interface(str) ("<span class='interface'>" + str + "</span>")
|
||||
#define span_looc(str) ("<span class='looc'>" + str + "</span>")
|
||||
#define span_medal(str) ("<span class='medal'>" + str + "</span>")
|
||||
#define span_medradio(str) ("<span class='medradio'>" + str + "</span>")
|
||||
#define span_memo(str) ("<span class='memo'>" + str + "</span>")
|
||||
#define span_memoedit(str) ("<span class='memoedit'>" + str + "</span>")
|
||||
#define span_mind_control(str) ("<span class='mind_control'>" + str + "</span>")
|
||||
#define span_minorannounce(str) ("<span class='minorannounce'>" + str + "</span>")
|
||||
#define span_monkey(str) ("<span class='monkey'>" + str + "</span>")
|
||||
#define span_monkeyhive(str) ("<span class='monkeyhive'>" + str + "</span>")
|
||||
#define span_monkeylead(str) ("<span class='monkeylead'>" + str + "</span>")
|
||||
#define span_name(str) ("<span class='name'>" + str + "</span>")
|
||||
#define span_narsie(str) ("<span class='narsie'>" + str + "</span>")
|
||||
#define span_narsiesmall(str) ("<span class='narsiesmall'>" + str + "</span>")
|
||||
#define span_nicegreen(str) ("<span class='nicegreen'>" + str + "</span>")
|
||||
#define span_notice(str) ("<span class='notice'>" + str + "</span>")
|
||||
#define span_noticealien(str) ("<span class='noticealien'>" + str + "</span>")
|
||||
#define span_ooc(str) ("<span class='ooc'>" + str + "</span>")
|
||||
#define span_papyrus(str) ("<span class='papyrus'>" + str + "</span>")
|
||||
#define span_phobia(str) ("<span class='phobia'>" + str + "</span>")
|
||||
#define span_prefix(str) ("<span class='prefix'>" + str + "</span>")
|
||||
#define span_purple(str) ("<span class='purple'>" + str + "</span>")
|
||||
#define span_radio(str) ("<span class='radio'>" + str + "</span>")
|
||||
#define span_reallybig(str) ("<span class='reallybig'>" + str + "</span>")
|
||||
#define span_red(str) ("<span class='red'>" + str + "</span>")
|
||||
#define span_redteamradio(str) ("<span class='redteamradio'>" + str + "</span>")
|
||||
#define span_redtext(str) ("<span class='redtext'>" + str + "</span>")
|
||||
#define span_resonate(str) ("<span class='resonate'>" + str + "</span>")
|
||||
#define span_revenbignotice(str) ("<span class='revenbignotice'>" + str + "</span>")
|
||||
#define span_revenboldnotice(str) ("<span class='revenboldnotice'>" + str + "</span>")
|
||||
#define span_revendanger(str) ("<span class='revendanger'>" + str + "</span>")
|
||||
#define span_revenminor(str) ("<span class='revenminor'>" + str + "</span>")
|
||||
#define span_revennotice(str) ("<span class='revennotice'>" + str + "</span>")
|
||||
#define span_revenwarning(str) ("<span class='revenwarning'>" + str + "</span>")
|
||||
#define span_robot(str) ("<span class='robot'>" + str + "</span>")
|
||||
#define span_rose(str) ("<span class='rose'>" + str + "</span>")
|
||||
#define span_sans(str) ("<span class='sans'>" + str + "</span>")
|
||||
#define span_sciradio(str) ("<span class='sciradio'>" + str + "</span>")
|
||||
#define span_secradio(str) ("<span class='secradio'>" + str + "</span>")
|
||||
#define span_servradio(str) ("<span class='servradio'>" + str + "</span>")
|
||||
#define span_singing(str) ("<span class='singing'>" + str + "</span>")
|
||||
#define span_slime(str) ("<span class='slime'>" + str + "</span>")
|
||||
#define span_small(str) ("<span class='small'>" + str + "</span>")
|
||||
#define span_smallnotice(str) ("<span class='smallnotice'>" + str + "</span>")
|
||||
#define span_smallnoticeital(str) ("<span class='smallnoticeital'>" + str + "</span>")
|
||||
#define span_spider(str) ("<span class='spider'>" + str + "</span>")
|
||||
#define span_suicide(str) ("<span class='suicide'>" + str + "</span>")
|
||||
#define span_suppradio(str) ("<span class='suppradio'>" + str + "</span>")
|
||||
#define span_swarmer(str) ("<span class='swarmer'>" + str + "</span>")
|
||||
#define span_syndradio(str) ("<span class='syndradio'>" + str + "</span>")
|
||||
#define span_tape_recorder(str) ("<span class='tape_recorder'>" + str + "</span>")
|
||||
#define span_tinynotice(str) ("<span class='tinynotice'>" + str + "</span>")
|
||||
#define span_tinynoticeital(str) ("<span class='tinynoticeital'>" + str + "</span>")
|
||||
#define span_unconscious(str) ("<span class='unconscious'>" + str + "</span>")
|
||||
#define span_userdanger(str) ("<span class='userdanger'>" + str + "</span>")
|
||||
#define span_warning(str) ("<span class='warning'>" + str + "</span>")
|
||||
#define span_yell(str) ("<span class='yell'>" + str + "</span>")
|
||||
#define span_yellowteamradio(str) ("<span class='yellowteamradio'>" + str + "</span>")
|
||||
@@ -215,6 +215,12 @@
|
||||
#define SSAIR_ATMOSMACHINERY_AIR 12
|
||||
#define SSAIR_DEFERRED_AIRS 13
|
||||
|
||||
// Subsystem delta times or tickrates, in seconds. I.e, how many seconds in between each process() call for objects being processed by that subsystem.
|
||||
// Only use these defines if you want to access some other objects processing delta_time, otherwise use the delta_time that is sent as a parameter to process()
|
||||
#define SSFLUIDS_DT (SSfluids.wait/10)
|
||||
#define SSMACHINES_DT (SSmachines.wait/10)
|
||||
#define SSMOBS_DT (SSmobs.wait/10)
|
||||
#define SSOBJ_DT (SSobj.wait/10)
|
||||
|
||||
//! ## Overlays subsystem
|
||||
|
||||
|
||||
@@ -10,12 +10,16 @@
|
||||
GLOBAL_LIST_EMPTY(auxtools_initialized)
|
||||
|
||||
#define AUXTOOLS_CHECK(LIB)\
|
||||
if (!GLOB.auxtools_initialized[LIB] && fexists(LIB)) {\
|
||||
var/string = call(LIB,"auxtools_init")();\
|
||||
if(findtext(string, "SUCCESS")) {\
|
||||
GLOB.auxtools_initialized[LIB] = TRUE;\
|
||||
if (!GLOB.auxtools_initialized[LIB]) {\
|
||||
if (fexists(LIB)) {\
|
||||
var/string = call(LIB,"auxtools_init")();\
|
||||
if(findtext(string, "SUCCESS")) {\
|
||||
GLOB.auxtools_initialized[LIB] = TRUE;\
|
||||
} else {\
|
||||
CRASH(string);\
|
||||
}\
|
||||
} else {\
|
||||
CRASH(string);\
|
||||
CRASH("No file named [LIB] found!")\
|
||||
}\
|
||||
}\
|
||||
|
||||
|
||||
@@ -163,6 +163,7 @@ Turf and target are separate in case you want to teleport some distance from a t
|
||||
|
||||
//Generalised helper proc for letting mobs rename themselves. Used to be clname() and ainame()
|
||||
/mob/proc/apply_pref_name(role, client/C)
|
||||
set waitfor = FALSE
|
||||
if(!C)
|
||||
C = client
|
||||
var/oldname = real_name
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
/datum/config_entry/flag/admin_legacy_system //Defines whether the server uses the legacy admin system with admins.txt or the SQL system
|
||||
protection = CONFIG_ENTRY_LOCKED
|
||||
|
||||
/datum/config_entry/flag/protect_legacy_admins //Stops any admins loaded by the legacy system from having their rank edited by the permissions panel
|
||||
protection = CONFIG_ENTRY_LOCKED
|
||||
|
||||
/datum/config_entry/flag/protect_legacy_ranks //Stops any ranks loaded by the legacy system from having their flags edited by the permissions panel
|
||||
protection = CONFIG_ENTRY_LOCKED
|
||||
|
||||
/datum/config_entry/flag/enable_localhost_rank //Gives the !localhost! rank to any client connecting from 127.0.0.1 or ::1
|
||||
protection = CONFIG_ENTRY_LOCKED
|
||||
|
||||
/datum/config_entry/flag/load_legacy_ranks_only //Loads admin ranks only from legacy admin_ranks.txt, while enabled ranks are mirrored to the database
|
||||
protection = CONFIG_ENTRY_LOCKED
|
||||
|
||||
/datum/config_entry/flag/mentors_mobname_only
|
||||
|
||||
/datum/config_entry/flag/mentor_legacy_system //Defines whether the server uses the legacy mentor system with mentors.txt or the SQL system
|
||||
protection = CONFIG_ENTRY_LOCKED
|
||||
|
||||
/datum/config_entry/flag/forbid_singulo_possession
|
||||
|
||||
/datum/config_entry/flag/see_own_notes //Can players see their own admin notes
|
||||
|
||||
/datum/config_entry/number/note_fresh_days
|
||||
config_entry_value = null
|
||||
min_val = 0
|
||||
integer = FALSE
|
||||
|
||||
/datum/config_entry/number/note_stale_days
|
||||
config_entry_value = null
|
||||
min_val = 0
|
||||
integer = FALSE
|
||||
|
||||
/datum/config_entry/flag/autoconvert_notes //if all connecting player's notes should attempt to be converted to the database
|
||||
protection = CONFIG_ENTRY_LOCKED
|
||||
|
||||
/datum/config_entry/flag/announce_admin_logout
|
||||
|
||||
/datum/config_entry/flag/announce_admin_login
|
||||
|
||||
/datum/config_entry/string/centcom_ban_db // URL for the CentCom Galactic Ban DB API
|
||||
|
||||
/datum/config_entry/flag/autoadmin // if autoadmin is enabled
|
||||
protection = CONFIG_ENTRY_LOCKED
|
||||
|
||||
/datum/config_entry/string/autoadmin_rank // the rank for autoadmins
|
||||
config_entry_value = "Game Master"
|
||||
protection = CONFIG_ENTRY_LOCKED
|
||||
|
||||
/datum/config_entry/flag/allow_admin_ooccolor // Allows admins with relevant permissions to have their own ooc colour
|
||||
|
||||
/datum/config_entry/flag/popup_admin_pm // adminPMs to non-admins show in a pop-up 'reply' window when set
|
||||
|
||||
/datum/config_entry/flag/guest_jobban
|
||||
|
||||
/datum/config_entry/flag/ban_legacy_system //Defines whether the server uses the legacy banning system with the files in /data or the SQL system.
|
||||
protection = CONFIG_ENTRY_LOCKED
|
||||
|
||||
/datum/config_entry/flag/guest_ban
|
||||
|
||||
/datum/config_entry/flag/automute_on //enables automuting/spam prevention
|
||||
|
||||
/datum/config_entry/flag/debug_admin_hrefs
|
||||
@@ -0,0 +1,26 @@
|
||||
/datum/config_entry/string/alert_green
|
||||
config_entry_value = "All threats to the station have passed. Security may not have weapons visible, privacy laws are once again fully enforced."
|
||||
|
||||
/datum/config_entry/string/alert_blue_upto
|
||||
config_entry_value = "The station has received reliable information about potential threats to the station. Security staff may have weapons visible, random searches are permitted."
|
||||
|
||||
/datum/config_entry/string/alert_blue_downto
|
||||
config_entry_value = "Significant confirmed threats have been neutralized. Security may no longer have weapons drawn at all times, but may continue to have them visible. Random searches are still permitted."
|
||||
|
||||
/datum/config_entry/string/alert_amber_upto
|
||||
config_entry_value = "There are significant confirmed threats to the station. Security staff may have weapons unholstered at all times. Random searches are allowed and advised."
|
||||
|
||||
/datum/config_entry/string/alert_amber_downto
|
||||
config_entry_value = "The immediate threat has passed. Security is no longer authorized to use lethal force, but may continue to have weapons drawn. Access requirements have been restored."
|
||||
|
||||
/datum/config_entry/string/alert_red_upto
|
||||
config_entry_value = "There is an immediate serious threat to the station. Security is now authorized to use lethal force. Additionally, access requirements on some machines have been lifted."
|
||||
|
||||
/datum/config_entry/string/alert_red_downto
|
||||
config_entry_value = "The station's destruction has been averted. There is still however an immediate serious threat to the station. Security is still authorized to use lethal force."
|
||||
|
||||
/datum/config_entry/string/alert_delta
|
||||
config_entry_value = "Destruction of the station is imminent. All crew are instructed to obey all instructions given by heads of staff. Any violations of these orders can be punished by death. This is not a drill."
|
||||
|
||||
/datum/config_entry/number/minimum_secborg_alert //Minimum alert level for secborgs to be chosen.
|
||||
config_entry_value = 3
|
||||
@@ -0,0 +1,17 @@
|
||||
/datum/config_entry/flag/use_antag_rep // see game_options.txt for details
|
||||
|
||||
/datum/config_entry/number/antag_rep_maximum
|
||||
config_entry_value = 200
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/default_antag_tickets
|
||||
config_entry_value = 100
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/max_tickets_per_roll
|
||||
config_entry_value = 100
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/keyed_list/antag_rep
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_NUM
|
||||
@@ -0,0 +1,106 @@
|
||||
/datum/config_entry/flag/panic_bunker // prevents people the server hasn't seen before from connecting
|
||||
|
||||
/datum/config_entry/number/panic_bunker_living // living time in minutes that a player needs to pass the panic bunker
|
||||
|
||||
/datum/config_entry/string/panic_bunker_message
|
||||
config_entry_value = "Sorry but the server is currently not accepting connections from never before seen players."
|
||||
|
||||
/datum/config_entry/string/panic_server_name
|
||||
|
||||
/datum/config_entry/string/panic_server_name/ValidateAndSet(str_val)
|
||||
return str_val != "\[Put the name here\]" && ..()
|
||||
|
||||
/datum/config_entry/string/panic_server_address //Reconnect a player this linked server if this server isn't accepting new players
|
||||
|
||||
/datum/config_entry/string/panic_server_address/ValidateAndSet(str_val)
|
||||
return str_val != "byond://address:port" && ..()
|
||||
|
||||
/datum/config_entry/number/max_bunker_days
|
||||
config_entry_value = 7
|
||||
min_val = 1
|
||||
|
||||
/datum/config_entry/number/notify_new_player_age // how long do we notify admins of a new player
|
||||
min_val = -1
|
||||
|
||||
/datum/config_entry/number/notify_new_player_account_age // how long do we notify admins of a new byond account
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/flag/age_verification //are we using the automated age verification which asks users if they're 18+?
|
||||
config_entry_value = TRUE
|
||||
|
||||
/datum/config_entry/flag/irc_first_connection_alert // do we notify the irc channel when somebody is connecting for the first time?
|
||||
|
||||
/datum/config_entry/flag/check_randomizer
|
||||
|
||||
/datum/config_entry/string/ipintel_email
|
||||
|
||||
/datum/config_entry/string/ipintel_email/ValidateAndSet(str_val)
|
||||
return str_val != "ch@nge.me" && ..()
|
||||
|
||||
/datum/config_entry/number/ipintel_rating_bad
|
||||
config_entry_value = 1
|
||||
integer = FALSE
|
||||
min_val = 0
|
||||
max_val = 1
|
||||
|
||||
/datum/config_entry/number/ipintel_save_good
|
||||
config_entry_value = 12
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/ipintel_save_bad
|
||||
config_entry_value = 1
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/string/ipintel_domain
|
||||
config_entry_value = "check.getipintel.net"
|
||||
|
||||
/datum/config_entry/flag/aggressive_changelog
|
||||
|
||||
/datum/config_entry/flag/allow_webclient
|
||||
|
||||
/datum/config_entry/flag/webclient_only_byond_members
|
||||
|
||||
/datum/config_entry/number/client_warn_version
|
||||
config_entry_value = null
|
||||
min_val = 500
|
||||
|
||||
/datum/config_entry/number/client_warn_version
|
||||
config_entry_value = null
|
||||
min_val = 500
|
||||
|
||||
/datum/config_entry/string/client_warn_message
|
||||
config_entry_value = "Your version of byond may have issues or be blocked from accessing this server in the future."
|
||||
|
||||
/datum/config_entry/flag/client_warn_popup
|
||||
|
||||
/datum/config_entry/number/client_error_version
|
||||
config_entry_value = null
|
||||
min_val = 500
|
||||
|
||||
/datum/config_entry/string/client_error_message
|
||||
config_entry_value = "Your version of byond is too old, may have issues, and is blocked from accessing this server."
|
||||
|
||||
/datum/config_entry/number/client_error_build
|
||||
config_entry_value = null
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/soft_popcap
|
||||
config_entry_value = null
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/hard_popcap
|
||||
config_entry_value = null
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/extreme_popcap
|
||||
config_entry_value = null
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/string/soft_popcap_message
|
||||
config_entry_value = "Be warned that the server is currently serving a high number of users, consider using alternative game servers."
|
||||
|
||||
/datum/config_entry/string/hard_popcap_message
|
||||
config_entry_value = "The server is currently serving a high number of users, You cannot currently join. You may wait for the number of living crew to decline, observe, or find alternative servers."
|
||||
|
||||
/datum/config_entry/string/extreme_popcap_message
|
||||
config_entry_value = "The server is currently serving a high number of users, find alternative servers."
|
||||
@@ -0,0 +1,16 @@
|
||||
/// Amount of dirtyness tiles need to spawn dirt.
|
||||
/datum/config_entry/number/turf_dirt_threshold
|
||||
config_entry_value = 100
|
||||
min_val = 1
|
||||
integer = TRUE
|
||||
|
||||
/// Alpha dirt starts at
|
||||
/datum/config_entry/number/dirt_alpha_starting
|
||||
config_entry_value = 127
|
||||
max_val = 255
|
||||
min_val = 0
|
||||
integer = TRUE
|
||||
|
||||
/// Dirtyness multiplier for making turfs dirty
|
||||
/datum/config_entry/number/turf_dirty_multiplier
|
||||
config_entry_value = 1
|
||||
@@ -0,0 +1,45 @@
|
||||
/datum/config_entry/keyed_list/breasts_cups_prefs
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_FLAG
|
||||
config_entry_value = list("a", "b", "c", "d", "e") //keep these lowercase
|
||||
|
||||
/datum/config_entry/number/penis_min_inches_prefs
|
||||
config_entry_value = 1
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/penis_max_inches_prefs
|
||||
config_entry_value = 20
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/keyed_list/safe_visibility_toggles
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_FLAG
|
||||
config_entry_value = list(GEN_VISIBLE_NO_CLOTHES, GEN_VISIBLE_NO_UNDIES, GEN_VISIBLE_NEVER) //refer to cit_helpers for all toggles.
|
||||
|
||||
//Body size configs, the feature will be disabled if both min and max have the same value.
|
||||
/datum/config_entry/number/body_size_min
|
||||
config_entry_value = 0.9
|
||||
min_val = 0.1 //to avoid issues with zeros and negative values.
|
||||
max_val = RESIZE_DEFAULT_SIZE
|
||||
integer = FALSE
|
||||
|
||||
/datum/config_entry/number/body_size_max
|
||||
config_entry_value = 1.25
|
||||
min_val = RESIZE_DEFAULT_SIZE
|
||||
integer = FALSE
|
||||
|
||||
//Penalties given to characters with a body size smaller than this value,
|
||||
//to compensate for their smaller hitbox.
|
||||
//To disable, just make sure the value is lower than 'body_size_min'
|
||||
/datum/config_entry/number/threshold_body_size_penalty
|
||||
config_entry_value = RESIZE_DEFAULT_SIZE
|
||||
min_val = 0
|
||||
max_val = RESIZE_DEFAULT_SIZE
|
||||
integer = FALSE
|
||||
|
||||
//multiplicative slowdown multiplier. See 'dna.update_body_size' for the operation.
|
||||
//doesn't apply to floating or crawling mobs
|
||||
/datum/config_entry/number/body_size_slowdown_multiplier
|
||||
config_entry_value = 0
|
||||
min_val = 0
|
||||
integer = FALSE
|
||||
@@ -1,619 +0,0 @@
|
||||
/datum/config_entry/number_list/repeated_mode_adjust
|
||||
|
||||
/datum/config_entry/keyed_list/probability
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_NUM
|
||||
|
||||
/datum/config_entry/keyed_list/probability/ValidateListEntry(key_name)
|
||||
return key_name in config.modes
|
||||
|
||||
/datum/config_entry/keyed_list/chaos_level
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_NUM
|
||||
|
||||
/datum/config_entry/keyed_list/chaos_level/ValidateListEntry(key_name)
|
||||
return key_name in config.modes
|
||||
|
||||
/datum/config_entry/keyed_list/max_pop
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_NUM
|
||||
|
||||
/datum/config_entry/keyed_list/max_pop/ValidateListEntry(key_name)
|
||||
return key_name in config.modes
|
||||
|
||||
/datum/config_entry/keyed_list/min_pop
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_NUM
|
||||
|
||||
/datum/config_entry/keyed_list/min_pop/ValidateListEntry(key_name, key_value)
|
||||
return key_name in config.modes
|
||||
|
||||
/datum/config_entry/keyed_list/continuous // which roundtypes continue if all antagonists die
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_FLAG
|
||||
|
||||
/datum/config_entry/keyed_list/continuous/ValidateListEntry(key_name, key_value)
|
||||
return key_name in config.modes
|
||||
|
||||
/datum/config_entry/keyed_list/midround_antag // which roundtypes use the midround antagonist system
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_FLAG
|
||||
|
||||
/datum/config_entry/keyed_list/midround_antag/ValidateListEntry(key_name, key_value)
|
||||
return key_name in config.modes
|
||||
|
||||
/datum/config_entry/keyed_list/force_antag_count
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_FLAG
|
||||
|
||||
/datum/config_entry/keyed_list/force_antag_count/ValidateListEntry(key_name, key_value)
|
||||
return key_name in config.modes
|
||||
|
||||
/datum/config_entry/keyed_list/policy
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_TEXT
|
||||
|
||||
/datum/config_entry/number/damage_multiplier
|
||||
config_entry_value = 1
|
||||
integer = FALSE
|
||||
|
||||
/datum/config_entry/number/minimal_access_threshold //If the number of players is larger than this threshold, minimal access will be turned on.
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/flag/jobs_have_minimal_access //determines whether jobs use minimal access or expanded access.
|
||||
|
||||
/datum/config_entry/flag/assistants_have_maint_access
|
||||
|
||||
/datum/config_entry/flag/security_has_maint_access
|
||||
|
||||
/datum/config_entry/flag/everyone_has_maint_access
|
||||
|
||||
/datum/config_entry/flag/sec_start_brig //makes sec start in brig instead of dept sec posts
|
||||
|
||||
/datum/config_entry/flag/force_random_names
|
||||
|
||||
/datum/config_entry/flag/humans_need_surnames
|
||||
|
||||
/datum/config_entry/flag/allow_ai // allow ai job
|
||||
|
||||
/datum/config_entry/flag/allow_ai_multicam //whether the AI can use their multicam
|
||||
|
||||
/datum/config_entry/flag/disable_human_mood
|
||||
|
||||
/datum/config_entry/flag/disable_borg_flash_knockdown //Should borg flashes be capable of knocking humanoid entities down?
|
||||
|
||||
/datum/config_entry/flag/weaken_secborg //Brings secborgs and k9s back in-line with the other borg modules
|
||||
|
||||
/datum/config_entry/flag/disable_secborg // disallow secborg module to be chosen.
|
||||
|
||||
/datum/config_entry/flag/disable_peaceborg
|
||||
|
||||
/datum/config_entry/flag/economy //money money money money money money money money money money money money
|
||||
|
||||
/datum/config_entry/number/minimum_secborg_alert //Minimum alert level for secborgs to be chosen.
|
||||
config_entry_value = 3
|
||||
|
||||
/datum/config_entry/number/traitor_scaling_coeff //how much does the amount of players get divided by to determine traitors
|
||||
config_entry_value = 6
|
||||
min_val = 1
|
||||
|
||||
/datum/config_entry/number/brother_scaling_coeff //how many players per brother team
|
||||
config_entry_value = 25
|
||||
min_val = 1
|
||||
|
||||
/datum/config_entry/number/changeling_scaling_coeff //how much does the amount of players get divided by to determine changelings
|
||||
config_entry_value = 6
|
||||
min_val = 1
|
||||
|
||||
/datum/config_entry/number/ecult_scaling_coeff //how much does the amount of players get divided by to determine e_cult
|
||||
config_entry_value = 6
|
||||
integer = FALSE
|
||||
min_val = 1
|
||||
|
||||
/datum/config_entry/number/security_scaling_coeff //how much does the amount of players get divided by to determine open security officer positions
|
||||
config_entry_value = 8
|
||||
min_val = 1
|
||||
|
||||
/datum/config_entry/number/abductor_scaling_coeff //how many players per abductor team
|
||||
config_entry_value = 15
|
||||
min_val = 1
|
||||
|
||||
/datum/config_entry/number/traitor_objectives_amount
|
||||
config_entry_value = 2
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/brother_objectives_amount
|
||||
config_entry_value = 2
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/flag/reactionary_explosions //If we use reactionary explosions, explosions that react to walls and doors
|
||||
|
||||
/datum/config_entry/flag/protect_roles_from_antagonist //If security and such can be traitor/cult/other
|
||||
|
||||
/datum/config_entry/flag/protect_assistant_from_antagonist //If assistants can be traitor/cult/other
|
||||
|
||||
/datum/config_entry/flag/enforce_human_authority //If non-human species are barred from joining as a head of staff
|
||||
|
||||
/datum/config_entry/flag/allow_latejoin_antagonists // If late-joining players can be traitor/changeling
|
||||
|
||||
/datum/config_entry/flag/use_antag_rep // see game_options.txt for details
|
||||
|
||||
/datum/config_entry/number/antag_rep_maximum
|
||||
config_entry_value = 200
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/default_antag_tickets
|
||||
config_entry_value = 100
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/max_tickets_per_roll
|
||||
config_entry_value = 100
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/midround_antag_time_check // How late (in minutes you want the midround antag system to stay on, setting this to 0 will disable the system)
|
||||
config_entry_value = 60
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/midround_antag_life_check // A ratio of how many people need to be alive in order for the round not to immediately end in midround antagonist
|
||||
config_entry_value = 0.7
|
||||
integer = FALSE
|
||||
min_val = 0
|
||||
max_val = 1
|
||||
|
||||
/datum/config_entry/number/suicide_reenter_round_timer
|
||||
config_entry_value = 30
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/roundstart_suicide_time_limit
|
||||
config_entry_value = 30
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/shuttle_refuel_delay
|
||||
config_entry_value = 12000
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/flag/show_game_type_odds //if set this allows players to see the odds of each roundtype on the get revision screen
|
||||
|
||||
/datum/config_entry/keyed_list/roundstart_races //races you can play as from the get go.
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_FLAG
|
||||
|
||||
/datum/config_entry/flag/join_with_mutant_humans //players can pick mutant bodyparts for humans before joining the game
|
||||
|
||||
/datum/config_entry/flag/no_summon_guns //No
|
||||
|
||||
/datum/config_entry/flag/no_summon_magic //Fun
|
||||
|
||||
/datum/config_entry/flag/no_summon_events //Allowed
|
||||
|
||||
/datum/config_entry/flag/no_summon_traumas //!
|
||||
|
||||
/datum/config_entry/flag/no_intercept_report //Whether or not to send a communications intercept report roundstart. This may be overridden by gamemodes.
|
||||
|
||||
/datum/config_entry/number/arrivals_shuttle_dock_window //Time from when a player late joins on the arrivals shuttle to when the shuttle docks on the station
|
||||
config_entry_value = 55
|
||||
min_val = 30
|
||||
|
||||
/datum/config_entry/flag/arrivals_shuttle_require_undocked //Require the arrivals shuttle to be undocked before latejoiners can join
|
||||
|
||||
/datum/config_entry/flag/arrivals_shuttle_require_safe_latejoin //Require the arrivals shuttle to be operational in order for latejoiners to join
|
||||
|
||||
/datum/config_entry/string/alert_green
|
||||
config_entry_value = "All threats to the station have passed. Security may not have weapons visible, privacy laws are once again fully enforced."
|
||||
|
||||
/datum/config_entry/string/alert_blue_upto
|
||||
config_entry_value = "The station has received reliable information about potential threats to the station. Security staff may have weapons visible, random searches are permitted."
|
||||
|
||||
/datum/config_entry/string/alert_blue_downto
|
||||
config_entry_value = "Significant confirmed threats have been neutralized. Security may no longer have weapons drawn at all times, but may continue to have them visible. Random searches are still permitted."
|
||||
|
||||
/datum/config_entry/string/alert_amber_upto
|
||||
config_entry_value = "There are significant confirmed threats to the station. Security staff may have weapons unholstered at all times. Random searches are allowed and advised."
|
||||
|
||||
/datum/config_entry/string/alert_amber_downto
|
||||
config_entry_value = "The immediate threat has passed. Security is no longer authorized to use lethal force, but may continue to have weapons drawn. Access requirements have been restored."
|
||||
|
||||
/datum/config_entry/string/alert_red_upto
|
||||
config_entry_value = "There is an immediate serious threat to the station. Security is now authorized to use lethal force. Additionally, access requirements on some machines have been lifted."
|
||||
|
||||
/datum/config_entry/string/alert_red_downto
|
||||
config_entry_value = "The station's destruction has been averted. There is still however an immediate serious threat to the station. Security is still authorized to use lethal force."
|
||||
|
||||
/datum/config_entry/string/alert_delta
|
||||
config_entry_value = "Destruction of the station is imminent. All crew are instructed to obey all instructions given by heads of staff. Any violations of these orders can be punished by death. This is not a drill."
|
||||
|
||||
/datum/config_entry/flag/revival_pod_plants
|
||||
|
||||
/datum/config_entry/flag/revival_cloning
|
||||
|
||||
/datum/config_entry/number/revival_brain_life
|
||||
config_entry_value = -1
|
||||
min_val = -1
|
||||
|
||||
/datum/config_entry/flag/ooc_during_round
|
||||
|
||||
/datum/config_entry/flag/emojis
|
||||
|
||||
/datum/config_entry/keyed_list/multiplicative_movespeed
|
||||
key_mode = KEY_MODE_TYPE
|
||||
value_mode = VALUE_MODE_NUM
|
||||
abstract_type = /datum/config_entry/keyed_list/multiplicative_movespeed
|
||||
|
||||
/datum/config_entry/keyed_list/multiplicative_movespeed/ValidateAndSet()
|
||||
. = ..()
|
||||
if(.)
|
||||
update_config_movespeed_type_lookup(TRUE)
|
||||
|
||||
/datum/config_entry/keyed_list/multiplicative_movespeed/vv_edit_var(var_name, var_value)
|
||||
. = ..()
|
||||
if(. && (var_name == NAMEOF(src, config_entry_value)))
|
||||
update_config_movespeed_type_lookup(TRUE)
|
||||
|
||||
/datum/config_entry/keyed_list/multiplicative_movespeed/normal
|
||||
name = "multiplicative_movespeed"
|
||||
config_entry_value = list( //DEFAULTS
|
||||
/mob/living/simple_animal = 1,
|
||||
/mob/living/silicon/pai = 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
|
||||
)
|
||||
|
||||
/datum/config_entry/keyed_list/multiplicative_movespeed/floating
|
||||
name = "multiplicative_movespeed_floating"
|
||||
config_entry_value = list(
|
||||
/mob/living = 0,
|
||||
/mob/living/carbon/alien/humanoid = 0,
|
||||
/mob/living/carbon/alien/humanoid/royal/praetorian = 0,
|
||||
/mob/living/carbon/alien/humanoid/royal/queen = 2
|
||||
)
|
||||
|
||||
/datum/config_entry/number/sprintless_stagger_slowdown
|
||||
config_entry_value = 0
|
||||
|
||||
/datum/config_entry/number/melee_stagger_factor
|
||||
config_entry_value = 1
|
||||
|
||||
/datum/config_entry/number/sprintless_off_balance_slowdown
|
||||
config_entry_value = 0.85
|
||||
|
||||
/datum/config_entry/number/movedelay //Used for modifying movement speed for mobs.
|
||||
abstract_type = /datum/config_entry/number/movedelay
|
||||
integer = FALSE
|
||||
|
||||
/datum/config_entry/number/movedelay/ValidateAndSet()
|
||||
. = ..()
|
||||
if(.)
|
||||
update_mob_config_movespeeds()
|
||||
|
||||
/datum/config_entry/number/movedelay/vv_edit_var(var_name, var_value)
|
||||
. = ..()
|
||||
if(. && (var_name == NAMEOF(src, config_entry_value)))
|
||||
update_mob_config_movespeeds()
|
||||
|
||||
/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/flag/sprint_enabled
|
||||
config_entry_value = TRUE
|
||||
|
||||
/datum/config_entry/flag/sprint_enabled/ValidateAndSet(str_val)
|
||||
. = ..()
|
||||
for(var/datum/hud/human/H)
|
||||
H.assert_move_intent_ui()
|
||||
if(!config_entry_value) // disabled
|
||||
for(var/mob/living/L in world)
|
||||
L.disable_intentional_sprint_mode()
|
||||
|
||||
/datum/config_entry/number/movedelay/sprint_speed_increase
|
||||
config_entry_value = 1
|
||||
|
||||
/datum/config_entry/number/movedelay/sprint_max_tiles_increase
|
||||
config_entry_value = 5
|
||||
|
||||
/datum/config_entry/number/movedelay/sprint_absolute_max_tiles
|
||||
config_entry_value = 13
|
||||
|
||||
/datum/config_entry/number/movedelay/sprint_buffer_max
|
||||
config_entry_value = 24
|
||||
|
||||
/datum/config_entry/number/movedelay/sprint_stamina_cost
|
||||
config_entry_value = 1.4
|
||||
|
||||
/datum/config_entry/number/movedelay/sprint_buffer_regen_per_ds
|
||||
config_entry_value = 0.4
|
||||
|
||||
/////////////////////////////////////////////////Outdated move delay
|
||||
/datum/config_entry/number/outdated_movedelay
|
||||
deprecated_by = /datum/config_entry/keyed_list/multiplicative_movespeed/normal
|
||||
abstract_type = /datum/config_entry/number/outdated_movedelay
|
||||
|
||||
var/movedelay_type
|
||||
|
||||
/datum/config_entry/number/outdated_movedelay/DeprecationUpdate(value)
|
||||
return "[movedelay_type] [value]"
|
||||
|
||||
/datum/config_entry/number/outdated_movedelay/human_delay
|
||||
movedelay_type = /mob/living/carbon/human
|
||||
/datum/config_entry/number/outdated_movedelay/robot_delay
|
||||
movedelay_type = /mob/living/silicon/robot
|
||||
/datum/config_entry/number/outdated_movedelay/monkey_delay
|
||||
movedelay_type = /mob/living/carbon/monkey
|
||||
/datum/config_entry/number/outdated_movedelay/alien_delay
|
||||
movedelay_type = /mob/living/carbon/alien
|
||||
/datum/config_entry/number/outdated_movedelay/slime_delay
|
||||
movedelay_type = /mob/living/simple_animal/slime
|
||||
/datum/config_entry/number/outdated_movedelay/animal_delay
|
||||
movedelay_type = /mob/living/simple_animal
|
||||
/////////////////////////////////////////////////
|
||||
|
||||
/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
|
||||
|
||||
/datum/config_entry/flag/ghost_interaction
|
||||
|
||||
/datum/config_entry/flag/silent_ai
|
||||
/datum/config_entry/flag/silent_borg
|
||||
|
||||
/datum/config_entry/flag/sandbox_autoclose // close the sandbox panel after spawning an item, potentially reducing griff
|
||||
|
||||
/datum/config_entry/number/default_laws //Controls what laws the AI spawns with.
|
||||
config_entry_value = 0
|
||||
min_val = 0
|
||||
max_val = 3
|
||||
|
||||
/datum/config_entry/number/silicon_max_law_amount
|
||||
config_entry_value = 12
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/keyed_list/random_laws
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_FLAG
|
||||
|
||||
/datum/config_entry/keyed_list/law_weight
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_NUM
|
||||
splitter = ","
|
||||
|
||||
/datum/config_entry/number/overflow_cap
|
||||
config_entry_value = -1
|
||||
min_val = -1
|
||||
|
||||
/datum/config_entry/string/overflow_job
|
||||
config_entry_value = "Assistant"
|
||||
|
||||
/datum/config_entry/flag/starlight
|
||||
/datum/config_entry/flag/grey_assistants
|
||||
|
||||
/datum/config_entry/number/lavaland_budget
|
||||
config_entry_value = 60
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/space_budget
|
||||
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
|
||||
|
||||
/datum/config_entry/flag/allow_random_events // Enables random events mid-round when set
|
||||
|
||||
/datum/config_entry/number/events_min_time_mul // Multipliers for random events minimal starting time and minimal players amounts
|
||||
config_entry_value = 1
|
||||
min_val = 0
|
||||
integer = FALSE
|
||||
|
||||
/datum/config_entry/number/events_min_players_mul
|
||||
config_entry_value = 1
|
||||
min_val = 0
|
||||
integer = FALSE
|
||||
|
||||
/datum/config_entry/number/mice_roundstart
|
||||
config_entry_value = 10
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/bombcap
|
||||
config_entry_value = 14
|
||||
min_val = 4
|
||||
|
||||
/datum/config_entry/number/bombcap/ValidateAndSet(str_val)
|
||||
. = ..()
|
||||
if(.)
|
||||
GLOB.MAX_EX_DEVESTATION_RANGE = round(config_entry_value / 4)
|
||||
GLOB.MAX_EX_HEAVY_RANGE = round(config_entry_value / 2)
|
||||
GLOB.MAX_EX_LIGHT_RANGE = config_entry_value
|
||||
GLOB.MAX_EX_FLASH_RANGE = config_entry_value
|
||||
GLOB.MAX_EX_FLAME_RANGE = config_entry_value
|
||||
|
||||
/datum/config_entry/number/emergency_shuttle_autocall_threshold
|
||||
min_val = 0
|
||||
max_val = 1
|
||||
integer = FALSE
|
||||
|
||||
/datum/config_entry/flag/ic_printing
|
||||
|
||||
/datum/config_entry/flag/roundstart_traits
|
||||
|
||||
/datum/config_entry/flag/enable_night_shifts
|
||||
|
||||
/datum/config_entry/number/night_shift_public_areas_only
|
||||
config_entry_value = NIGHTSHIFT_AREA_PUBLIC
|
||||
|
||||
/datum/config_entry/flag/nightshift_toggle_requires_auth
|
||||
config_entry_value = FALSE
|
||||
|
||||
/datum/config_entry/flag/nightshift_toggle_public_requires_auth
|
||||
config_entry_value = TRUE
|
||||
|
||||
/datum/config_entry/flag/randomize_shift_time
|
||||
|
||||
/datum/config_entry/flag/shift_time_realtime
|
||||
|
||||
/datum/config_entry/keyed_list/antag_rep
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_NUM
|
||||
|
||||
/datum/config_entry/keyed_list/job_threat
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_NUM
|
||||
|
||||
/datum/config_entry/keyed_list/antag_threat
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_NUM
|
||||
|
||||
/datum/config_entry/number/monkeycap
|
||||
config_entry_value = 64
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/ratcap
|
||||
config_entry_value = 64
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/flag/disable_stambuffer
|
||||
|
||||
/datum/config_entry/keyed_list/box_random_engine
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_NUM
|
||||
lowercase = FALSE
|
||||
splitter = ","
|
||||
|
||||
/datum/config_entry/flag/pai_custom_holoforms
|
||||
|
||||
/datum/config_entry/number/marauder_delay_non_reebe
|
||||
config_entry_value = 1800
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/flag/allow_clockwork_marauder_on_station
|
||||
config_entry_value = TRUE
|
||||
|
||||
/datum/config_entry/flag/modetier_voting
|
||||
|
||||
/datum/config_entry/flag/must_be_readied_to_vote_gamemode
|
||||
|
||||
/datum/config_entry/number/dropped_modes
|
||||
config_entry_value = 3
|
||||
|
||||
/datum/config_entry/flag/suicide_allowed
|
||||
|
||||
/datum/config_entry/keyed_list/breasts_cups_prefs
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_FLAG
|
||||
config_entry_value = list("a", "b", "c", "d", "e") //keep these lowercase
|
||||
|
||||
/datum/config_entry/number/penis_min_inches_prefs
|
||||
config_entry_value = 1
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/penis_max_inches_prefs
|
||||
config_entry_value = 20
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/keyed_list/safe_visibility_toggles
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_FLAG
|
||||
config_entry_value = list(GEN_VISIBLE_NO_CLOTHES, GEN_VISIBLE_NO_UNDIES, GEN_VISIBLE_NEVER) //refer to cit_helpers for all toggles.
|
||||
|
||||
//Body size configs, the feature will be disabled if both min and max have the same value.
|
||||
/datum/config_entry/number/body_size_min
|
||||
config_entry_value = 0.9
|
||||
min_val = 0.1 //to avoid issues with zeros and negative values.
|
||||
max_val = RESIZE_DEFAULT_SIZE
|
||||
integer = FALSE
|
||||
|
||||
/datum/config_entry/number/body_size_max
|
||||
config_entry_value = 1.25
|
||||
min_val = RESIZE_DEFAULT_SIZE
|
||||
integer = FALSE
|
||||
|
||||
//Penalties given to characters with a body size smaller than this value,
|
||||
//to compensate for their smaller hitbox.
|
||||
//To disable, just make sure the value is lower than 'body_size_min'
|
||||
/datum/config_entry/number/threshold_body_size_penalty
|
||||
config_entry_value = RESIZE_DEFAULT_SIZE
|
||||
min_val = 0
|
||||
max_val = RESIZE_DEFAULT_SIZE
|
||||
integer = FALSE
|
||||
|
||||
//multiplicative slowdown multiplier. See 'dna.update_body_size' for the operation.
|
||||
//doesn't apply to floating or crawling mobs
|
||||
/datum/config_entry/number/body_size_slowdown_multiplier
|
||||
config_entry_value = 0
|
||||
min_val = 0
|
||||
integer = FALSE
|
||||
|
||||
//Allows players to set a hexadecimal color of their choice as skin tone, on top of the standard ones.
|
||||
/datum/config_entry/flag/allow_custom_skintones
|
||||
|
||||
///Initial loadout points
|
||||
/datum/config_entry/number/initial_gear_points
|
||||
config_entry_value = 10
|
||||
|
||||
/**
|
||||
* Enables the FoV component, which hides objects and mobs behind the parent from their sight, unless they turn around, duh.
|
||||
* Camera mobs, AIs, ghosts and some other are of course exempt from this. This also doesn't influence simplemob AI, for the best.
|
||||
*/
|
||||
/datum/config_entry/flag/use_field_of_vision
|
||||
|
||||
//Shuttle size limiter
|
||||
/datum/config_entry/number/max_shuttle_count
|
||||
config_entry_value = 6
|
||||
|
||||
/datum/config_entry/number/max_shuttle_size
|
||||
config_entry_value = 500
|
||||
|
||||
//wound config stuff (increases the max injury roll, making injuries more likely)
|
||||
/datum/config_entry/number/wound_exponent
|
||||
config_entry_value = WOUND_DAMAGE_EXPONENT
|
||||
min_val = 0
|
||||
integer = FALSE
|
||||
|
||||
//adds a set amount to any injury rolls on a limb using get_damage() multiplied by this number
|
||||
/datum/config_entry/number/wound_damage_multiplier
|
||||
config_entry_value = 0.333
|
||||
min_val = 0
|
||||
integer = FALSE
|
||||
|
||||
/// Amount of dirtyness tiles need to spawn dirt.
|
||||
/datum/config_entry/number/turf_dirt_threshold
|
||||
config_entry_value = 100
|
||||
min_val = 1
|
||||
integer = TRUE
|
||||
|
||||
/// Alpha dirt starts at
|
||||
/datum/config_entry/number/dirt_alpha_starting
|
||||
config_entry_value = 127
|
||||
max_val = 255
|
||||
min_val = 0
|
||||
integer = TRUE
|
||||
|
||||
/// Dirtyness multiplier for making turfs dirty
|
||||
/datum/config_entry/number/turf_dirty_multiplier
|
||||
config_entry_value = 1
|
||||
|
||||
/datum/config_entry/flag/weigh_by_recent_chaos
|
||||
|
||||
/datum/config_entry/number/chaos_exponent
|
||||
config_entry_value = 1
|
||||
@@ -0,0 +1,94 @@
|
||||
/datum/config_entry/number_list/repeated_mode_adjust
|
||||
|
||||
/datum/config_entry/flag/weigh_by_recent_chaos
|
||||
|
||||
/datum/config_entry/number/chaos_exponent
|
||||
config_entry_value = 1
|
||||
|
||||
/datum/config_entry/keyed_list/probability
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_NUM
|
||||
|
||||
/datum/config_entry/keyed_list/probability/ValidateListEntry(key_name)
|
||||
return key_name in config.modes
|
||||
|
||||
/datum/config_entry/keyed_list/chaos_level
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_NUM
|
||||
|
||||
/datum/config_entry/keyed_list/chaos_level/ValidateListEntry(key_name)
|
||||
return key_name in config.modes
|
||||
|
||||
/datum/config_entry/keyed_list/max_pop
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_NUM
|
||||
|
||||
/datum/config_entry/keyed_list/max_pop/ValidateListEntry(key_name)
|
||||
return key_name in config.modes
|
||||
|
||||
/datum/config_entry/keyed_list/min_pop
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_NUM
|
||||
|
||||
/datum/config_entry/keyed_list/min_pop/ValidateListEntry(key_name, key_value)
|
||||
return key_name in config.modes
|
||||
|
||||
/datum/config_entry/keyed_list/continuous // which roundtypes continue if all antagonists die
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_FLAG
|
||||
|
||||
/datum/config_entry/keyed_list/continuous/ValidateListEntry(key_name, key_value)
|
||||
return key_name in config.modes
|
||||
|
||||
/datum/config_entry/keyed_list/midround_antag // which roundtypes use the midround antagonist system
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_FLAG
|
||||
|
||||
/datum/config_entry/keyed_list/midround_antag/ValidateListEntry(key_name, key_value)
|
||||
return key_name in config.modes
|
||||
|
||||
/datum/config_entry/keyed_list/force_antag_count
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_FLAG
|
||||
|
||||
/datum/config_entry/keyed_list/force_antag_count/ValidateListEntry(key_name, key_value)
|
||||
return key_name in config.modes
|
||||
|
||||
/datum/config_entry/number/traitor_scaling_coeff //how much does the amount of players get divided by to determine traitors
|
||||
config_entry_value = 6
|
||||
min_val = 1
|
||||
|
||||
/datum/config_entry/number/brother_scaling_coeff //how many players per brother team
|
||||
config_entry_value = 25
|
||||
min_val = 1
|
||||
|
||||
/datum/config_entry/number/changeling_scaling_coeff //how much does the amount of players get divided by to determine changelings
|
||||
config_entry_value = 6
|
||||
min_val = 1
|
||||
|
||||
/datum/config_entry/number/ecult_scaling_coeff //how much does the amount of players get divided by to determine e_cult
|
||||
config_entry_value = 6
|
||||
integer = FALSE
|
||||
min_val = 1
|
||||
|
||||
/datum/config_entry/number/security_scaling_coeff //how much does the amount of players get divided by to determine open security officer positions
|
||||
config_entry_value = 8
|
||||
min_val = 1
|
||||
|
||||
/datum/config_entry/number/abductor_scaling_coeff //how many players per abductor team
|
||||
config_entry_value = 15
|
||||
min_val = 1
|
||||
|
||||
/datum/config_entry/number/traitor_objectives_amount
|
||||
config_entry_value = 2
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/brother_objectives_amount
|
||||
config_entry_value = 2
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/flag/protect_roles_from_antagonist //If security and such can be traitor/cult/other
|
||||
|
||||
/datum/config_entry/flag/protect_assistant_from_antagonist //If assistants can be traitor/cult/other
|
||||
|
||||
/datum/config_entry/flag/allow_latejoin_antagonists // If late-joining players can be traitor/changeling
|
||||
@@ -1,21 +1,3 @@
|
||||
/datum/config_entry/flag/auto_profile // Automatically start profiler on server start
|
||||
|
||||
/datum/config_entry/flag/autoadmin // if autoadmin is enabled
|
||||
protection = CONFIG_ENTRY_LOCKED
|
||||
|
||||
/datum/config_entry/string/autoadmin_rank // the rank for autoadmins
|
||||
config_entry_value = "Game Master"
|
||||
protection = CONFIG_ENTRY_LOCKED
|
||||
|
||||
/datum/config_entry/string/servername // server name (the name of the game window)
|
||||
|
||||
/datum/config_entry/string/servertagline
|
||||
config_entry_value = "We forgot to set the server's tagline in config.txt"
|
||||
|
||||
/datum/config_entry/string/serversqlname // short form server name used for the DB
|
||||
|
||||
/datum/config_entry/string/stationname // station name (the name of the station in-game)
|
||||
|
||||
/datum/config_entry/number/lobby_countdown // In between round countdown.
|
||||
config_entry_value = 120
|
||||
min_val = 0
|
||||
@@ -24,164 +6,11 @@
|
||||
config_entry_value = 25
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/flag/hub // if the game appears on the hub or not
|
||||
|
||||
/datum/config_entry/flag/allow_admin_ooccolor // Allows admins with relevant permissions to have their own ooc colour
|
||||
|
||||
/datum/config_entry/flag/allow_vote_restart // allow votes to restart
|
||||
|
||||
/datum/config_entry/flag/allow_vote_mode // allow votes to change mode
|
||||
|
||||
/datum/config_entry/number/vote_delay // minimum time between voting sessions (deciseconds, 10 minute default)
|
||||
config_entry_value = 6000
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/vote_period // length of voting period (deciseconds, default 1 minute)
|
||||
config_entry_value = 600
|
||||
min_val = 0
|
||||
|
||||
/// Length of time before the first autotransfer vote is called (deciseconds, default 2 hours)
|
||||
/// Set to 0 to disable the subsystem altogether.
|
||||
/datum/config_entry/number/vote_autotransfer_initial
|
||||
config_entry_value = 72000
|
||||
min_val = 0
|
||||
|
||||
///length of time to wait before subsequent autotransfer votes (deciseconds, default 30 minutes)
|
||||
/datum/config_entry/number/vote_autotransfer_interval
|
||||
config_entry_value = 18000
|
||||
min_val = 0
|
||||
|
||||
/// maximum extensions until the round autoends.
|
||||
/// Set to 0 to force automatic crew transfer after the 'vote_autotransfer_initial' elapsed.
|
||||
/// Set to -1 to disable the maximum extensions cap.
|
||||
/datum/config_entry/number/vote_autotransfer_maximum
|
||||
config_entry_value = 4
|
||||
min_val = -1
|
||||
|
||||
/datum/config_entry/flag/default_no_vote // vote does not default to nochange/norestart
|
||||
|
||||
/datum/config_entry/flag/no_dead_vote // dead people can't vote
|
||||
|
||||
/datum/config_entry/flag/allow_metadata // Metadata is supported.
|
||||
|
||||
/datum/config_entry/flag/popup_admin_pm // adminPMs to non-admins show in a pop-up 'reply' window when set
|
||||
|
||||
/datum/config_entry/number/fps
|
||||
config_entry_value = 20
|
||||
min_val = 1
|
||||
max_val = 100 //byond will start crapping out at 50, so this is just ridic
|
||||
var/sync_validate = FALSE
|
||||
|
||||
/datum/config_entry/number/fps/ValidateAndSet(str_val)
|
||||
. = ..()
|
||||
if(.)
|
||||
sync_validate = TRUE
|
||||
var/datum/config_entry/number/ticklag/TL = config.entries_by_type[/datum/config_entry/number/ticklag]
|
||||
if(!TL.sync_validate)
|
||||
TL.ValidateAndSet(10 / config_entry_value)
|
||||
sync_validate = FALSE
|
||||
|
||||
/datum/config_entry/number/ticklag
|
||||
integer = FALSE
|
||||
var/sync_validate = FALSE
|
||||
|
||||
/datum/config_entry/number/ticklag/New() //ticklag weirdly just mirrors fps
|
||||
var/datum/config_entry/CE = /datum/config_entry/number/fps
|
||||
config_entry_value = 10 / initial(CE.config_entry_value)
|
||||
..()
|
||||
|
||||
/datum/config_entry/number/ticklag/ValidateAndSet(str_val)
|
||||
. = text2num(str_val) > 0 && ..()
|
||||
if(.)
|
||||
sync_validate = TRUE
|
||||
var/datum/config_entry/number/fps/FPS = config.entries_by_type[/datum/config_entry/number/fps]
|
||||
if(!FPS.sync_validate)
|
||||
FPS.ValidateAndSet(10 / config_entry_value)
|
||||
sync_validate = FALSE
|
||||
|
||||
/datum/config_entry/flag/allow_holidays
|
||||
|
||||
/datum/config_entry/number/tick_limit_mc_init //SSinitialization throttling
|
||||
config_entry_value = TICK_LIMIT_MC_INIT_DEFAULT
|
||||
min_val = 0 //oranges warned us
|
||||
integer = FALSE
|
||||
|
||||
/datum/config_entry/flag/admin_legacy_system //Defines whether the server uses the legacy admin system with admins.txt or the SQL system
|
||||
protection = CONFIG_ENTRY_LOCKED
|
||||
|
||||
/datum/config_entry/flag/protect_legacy_admins //Stops any admins loaded by the legacy system from having their rank edited by the permissions panel
|
||||
protection = CONFIG_ENTRY_LOCKED
|
||||
|
||||
/datum/config_entry/flag/protect_legacy_ranks //Stops any ranks loaded by the legacy system from having their flags edited by the permissions panel
|
||||
protection = CONFIG_ENTRY_LOCKED
|
||||
|
||||
/datum/config_entry/flag/enable_localhost_rank //Gives the !localhost! rank to any client connecting from 127.0.0.1 or ::1
|
||||
protection = CONFIG_ENTRY_LOCKED
|
||||
|
||||
/datum/config_entry/flag/load_legacy_ranks_only //Loads admin ranks only from legacy admin_ranks.txt, while enabled ranks are mirrored to the database
|
||||
protection = CONFIG_ENTRY_LOCKED
|
||||
|
||||
/datum/config_entry/flag/mentors_mobname_only
|
||||
|
||||
/datum/config_entry/flag/mentor_legacy_system //Defines whether the server uses the legacy mentor system with mentors.txt or the SQL system
|
||||
protection = CONFIG_ENTRY_LOCKED
|
||||
|
||||
/datum/config_entry/string/hostedby
|
||||
|
||||
/datum/config_entry/flag/guest_jobban
|
||||
|
||||
/datum/config_entry/flag/usewhitelist
|
||||
|
||||
/datum/config_entry/flag/ban_legacy_system //Defines whether the server uses the legacy banning system with the files in /data or the SQL system.
|
||||
protection = CONFIG_ENTRY_LOCKED
|
||||
|
||||
/datum/config_entry/flag/use_age_restriction_for_jobs //Do jobs use account age restrictions? --requires database
|
||||
|
||||
/datum/config_entry/flag/use_account_age_for_jobs //Uses the time they made the account for the job restriction stuff. New player joining alerts should be unaffected.
|
||||
|
||||
/datum/config_entry/flag/use_exp_tracking
|
||||
|
||||
/datum/config_entry/flag/use_exp_restrictions_heads
|
||||
|
||||
/datum/config_entry/number/use_exp_restrictions_heads_hours
|
||||
config_entry_value = 0
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/flag/use_exp_restrictions_heads_department
|
||||
|
||||
/datum/config_entry/flag/use_exp_restrictions_other
|
||||
|
||||
/datum/config_entry/flag/use_exp_restrictions_admin_bypass
|
||||
|
||||
/datum/config_entry/string/server
|
||||
|
||||
/datum/config_entry/string/banappeals
|
||||
|
||||
/datum/config_entry/string/wikiurl
|
||||
config_entry_value = "https://katlin.dog/citadel-wiki"
|
||||
|
||||
/datum/config_entry/string/wikiurltg
|
||||
config_entry_value = "http://www.tgstation13.org/wiki"
|
||||
|
||||
/datum/config_entry/string/forumurl
|
||||
config_entry_value = "http://tgstation13.org/phpBB/index.php"
|
||||
|
||||
/datum/config_entry/string/rulesurl
|
||||
config_entry_value = "http://www.tgstation13.org/wiki/Rules"
|
||||
|
||||
/datum/config_entry/string/githuburl
|
||||
config_entry_value = "https://www.github.com/tgstation/-tg-station"
|
||||
|
||||
/datum/config_entry/string/roundstatsurl
|
||||
|
||||
/datum/config_entry/string/gamelogurl
|
||||
|
||||
/datum/config_entry/number/githubrepoid
|
||||
config_entry_value = null
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/flag/guest_ban
|
||||
|
||||
/datum/config_entry/number/id_console_jobslot_delay
|
||||
config_entry_value = 30
|
||||
min_val = 0
|
||||
@@ -208,181 +37,8 @@
|
||||
|
||||
/datum/config_entry/flag/load_jobs_from_txt
|
||||
|
||||
/datum/config_entry/flag/forbid_singulo_possession
|
||||
|
||||
/datum/config_entry/flag/automute_on //enables automuting/spam prevention
|
||||
|
||||
/datum/config_entry/string/panic_server_name
|
||||
|
||||
/datum/config_entry/string/panic_server_name/ValidateAndSet(str_val)
|
||||
return str_val != "\[Put the name here\]" && ..()
|
||||
|
||||
/datum/config_entry/string/panic_server_address //Reconnect a player this linked server if this server isn't accepting new players
|
||||
|
||||
/datum/config_entry/string/panic_server_address/ValidateAndSet(str_val)
|
||||
return str_val != "byond://address:port" && ..()
|
||||
|
||||
/datum/config_entry/string/invoke_youtubedl
|
||||
protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN
|
||||
|
||||
/datum/config_entry/flag/show_irc_name
|
||||
|
||||
/datum/config_entry/flag/see_own_notes //Can players see their own admin notes
|
||||
|
||||
/datum/config_entry/number/note_fresh_days
|
||||
config_entry_value = null
|
||||
min_val = 0
|
||||
integer = FALSE
|
||||
|
||||
/datum/config_entry/number/note_stale_days
|
||||
config_entry_value = null
|
||||
min_val = 0
|
||||
integer = FALSE
|
||||
|
||||
/datum/config_entry/flag/maprotation
|
||||
|
||||
/datum/config_entry/flag/tgstyle_maprotation
|
||||
|
||||
/datum/config_entry/string/map_vote_type
|
||||
config_entry_value = APPROVAL_VOTING
|
||||
|
||||
/datum/config_entry/number/maprotatechancedelta
|
||||
config_entry_value = 0.75
|
||||
min_val = 0
|
||||
max_val = 1
|
||||
integer = FALSE
|
||||
|
||||
/datum/config_entry/number/soft_popcap
|
||||
config_entry_value = null
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/hard_popcap
|
||||
config_entry_value = null
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/extreme_popcap
|
||||
config_entry_value = null
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/string/soft_popcap_message
|
||||
config_entry_value = "Be warned that the server is currently serving a high number of users, consider using alternative game servers."
|
||||
|
||||
/datum/config_entry/string/hard_popcap_message
|
||||
config_entry_value = "The server is currently serving a high number of users, You cannot currently join. You may wait for the number of living crew to decline, observe, or find alternative servers."
|
||||
|
||||
/datum/config_entry/string/extreme_popcap_message
|
||||
config_entry_value = "The server is currently serving a high number of users, find alternative servers."
|
||||
|
||||
/datum/config_entry/flag/panic_bunker // prevents people the server hasn't seen before from connecting
|
||||
|
||||
/datum/config_entry/number/panic_bunker_living // living time in minutes that a player needs to pass the panic bunker
|
||||
|
||||
/datum/config_entry/string/panic_bunker_message
|
||||
config_entry_value = "Sorry but the server is currently not accepting connections from never before seen players."
|
||||
|
||||
/datum/config_entry/number/notify_new_player_age // how long do we notify admins of a new player
|
||||
min_val = -1
|
||||
|
||||
/datum/config_entry/number/notify_new_player_account_age // how long do we notify admins of a new byond account
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/flag/age_verification //are we using the automated age verification which asks users if they're 18+?
|
||||
config_entry_value = TRUE
|
||||
|
||||
/datum/config_entry/flag/irc_first_connection_alert // do we notify the irc channel when somebody is connecting for the first time?
|
||||
|
||||
/datum/config_entry/flag/check_randomizer
|
||||
|
||||
/datum/config_entry/string/ipintel_email
|
||||
|
||||
/datum/config_entry/string/ipintel_email/ValidateAndSet(str_val)
|
||||
return str_val != "ch@nge.me" && ..()
|
||||
|
||||
/datum/config_entry/number/ipintel_rating_bad
|
||||
config_entry_value = 1
|
||||
integer = FALSE
|
||||
min_val = 0
|
||||
max_val = 1
|
||||
|
||||
/datum/config_entry/number/ipintel_save_good
|
||||
config_entry_value = 12
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/ipintel_save_bad
|
||||
config_entry_value = 1
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/string/ipintel_domain
|
||||
config_entry_value = "check.getipintel.net"
|
||||
|
||||
/datum/config_entry/flag/aggressive_changelog
|
||||
|
||||
/datum/config_entry/flag/autoconvert_notes //if all connecting player's notes should attempt to be converted to the database
|
||||
protection = CONFIG_ENTRY_LOCKED
|
||||
|
||||
/datum/config_entry/flag/allow_webclient
|
||||
|
||||
/datum/config_entry/flag/webclient_only_byond_members
|
||||
|
||||
/datum/config_entry/flag/announce_admin_logout
|
||||
|
||||
/datum/config_entry/flag/announce_admin_login
|
||||
|
||||
/datum/config_entry/flag/allow_map_voting
|
||||
|
||||
/datum/config_entry/number/client_warn_version
|
||||
config_entry_value = null
|
||||
min_val = 500
|
||||
|
||||
/datum/config_entry/number/client_warn_version
|
||||
config_entry_value = null
|
||||
min_val = 500
|
||||
|
||||
/datum/config_entry/string/client_warn_message
|
||||
config_entry_value = "Your version of byond may have issues or be blocked from accessing this server in the future."
|
||||
|
||||
/datum/config_entry/flag/client_warn_popup
|
||||
|
||||
/datum/config_entry/number/client_error_version
|
||||
config_entry_value = null
|
||||
min_val = 500
|
||||
|
||||
/datum/config_entry/string/client_error_message
|
||||
config_entry_value = "Your version of byond is too old, may have issues, and is blocked from accessing this server."
|
||||
|
||||
/datum/config_entry/number/client_error_build
|
||||
config_entry_value = null
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/minute_topic_limit
|
||||
config_entry_value = null
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/second_topic_limit
|
||||
config_entry_value = null
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/minute_click_limit
|
||||
config_entry_value = 400
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/second_click_limit
|
||||
config_entry_value = 15
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/error_cooldown // The "cooldown" time for each occurrence of a unique error
|
||||
config_entry_value = 600
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/error_limit // How many occurrences before the next will silence them
|
||||
config_entry_value = 50
|
||||
|
||||
/datum/config_entry/number/error_silence_time // How long a unique error will be silenced for
|
||||
config_entry_value = 6000
|
||||
|
||||
/datum/config_entry/number/error_msg_delay // How long to wait between messaging admins about occurrences of a unique error
|
||||
config_entry_value = 50
|
||||
|
||||
/datum/config_entry/flag/irc_announce_new_game
|
||||
deprecated_by = /datum/config_entry/string/chat_announce_new_game
|
||||
|
||||
@@ -390,54 +46,290 @@
|
||||
return "" //default broadcast
|
||||
|
||||
/datum/config_entry/string/chat_announce_new_game
|
||||
|
||||
config_entry_value = null
|
||||
|
||||
/datum/config_entry/flag/debug_admin_hrefs
|
||||
|
||||
/datum/config_entry/number/mc_tick_rate/base_mc_tick_rate
|
||||
integer = FALSE
|
||||
config_entry_value = 1
|
||||
|
||||
/datum/config_entry/number/mc_tick_rate/high_pop_mc_tick_rate
|
||||
integer = FALSE
|
||||
config_entry_value = 1.1
|
||||
|
||||
/datum/config_entry/number/mc_tick_rate/high_pop_mc_mode_amount
|
||||
config_entry_value = 65
|
||||
|
||||
/datum/config_entry/number/mc_tick_rate/disable_high_pop_mc_mode_amount
|
||||
config_entry_value = 60
|
||||
|
||||
/datum/config_entry/number/mc_tick_rate
|
||||
abstract_type = /datum/config_entry/number/mc_tick_rate
|
||||
|
||||
/datum/config_entry/number/mc_tick_rate/ValidateAndSet(str_val)
|
||||
. = ..()
|
||||
if (.)
|
||||
Master.UpdateTickRate()
|
||||
|
||||
/datum/config_entry/flag/resume_after_initializations
|
||||
|
||||
/datum/config_entry/flag/resume_after_initializations/ValidateAndSet(str_val)
|
||||
. = ..()
|
||||
if(. && Master.current_runlevel)
|
||||
world.sleep_offline = !config_entry_value
|
||||
|
||||
/datum/config_entry/number/rounds_until_hard_restart
|
||||
config_entry_value = -1
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/string/default_view
|
||||
config_entry_value = "15x15"
|
||||
|
||||
/datum/config_entry/string/default_view_square
|
||||
config_entry_value = "15x15"
|
||||
|
||||
/datum/config_entry/number/max_bunker_days
|
||||
config_entry_value = 7
|
||||
min_val = 1
|
||||
|
||||
/datum/config_entry/flag/minimaps_enabled
|
||||
config_entry_value = TRUE
|
||||
|
||||
/datum/config_entry/string/centcom_ban_db // URL for the CentCom Galactic Ban DB API
|
||||
|
||||
|
||||
/datum/config_entry/number/damage_multiplier
|
||||
config_entry_value = 1
|
||||
integer = FALSE
|
||||
|
||||
/datum/config_entry/number/minimal_access_threshold //If the number of players is larger than this threshold, minimal access will be turned on.
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/flag/jobs_have_minimal_access //determines whether jobs use minimal access or expanded access.
|
||||
|
||||
/datum/config_entry/flag/assistants_have_maint_access
|
||||
|
||||
/datum/config_entry/flag/security_has_maint_access
|
||||
|
||||
/datum/config_entry/flag/everyone_has_maint_access
|
||||
|
||||
/datum/config_entry/flag/sec_start_brig //makes sec start in brig instead of dept sec posts
|
||||
|
||||
/datum/config_entry/flag/force_random_names
|
||||
|
||||
/datum/config_entry/flag/humans_need_surnames
|
||||
|
||||
/datum/config_entry/flag/allow_ai // allow ai job
|
||||
|
||||
/datum/config_entry/flag/allow_ai_multicam //whether the AI can use their multicam
|
||||
|
||||
/datum/config_entry/flag/disable_human_mood
|
||||
|
||||
/datum/config_entry/flag/disable_borg_flash_knockdown //Should borg flashes be capable of knocking humanoid entities down?
|
||||
|
||||
/datum/config_entry/flag/weaken_secborg //Brings secborgs and k9s back in-line with the other borg modules
|
||||
|
||||
/datum/config_entry/flag/disable_secborg // disallow secborg module to be chosen.
|
||||
|
||||
/datum/config_entry/flag/disable_peaceborg
|
||||
|
||||
/datum/config_entry/flag/economy //money money money money money money money money money money money money
|
||||
|
||||
/datum/config_entry/flag/reactionary_explosions //If we use reactionary explosions, explosions that react to walls and doors
|
||||
|
||||
/datum/config_entry/flag/enforce_human_authority //If non-human species are barred from joining as a head of staff
|
||||
|
||||
/datum/config_entry/number/midround_antag_time_check // How late (in minutes you want the midround antag system to stay on, setting this to 0 will disable the system)
|
||||
config_entry_value = 60
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/midround_antag_life_check // A ratio of how many people need to be alive in order for the round not to immediately end in midround antagonist
|
||||
config_entry_value = 0.7
|
||||
integer = FALSE
|
||||
min_val = 0
|
||||
max_val = 1
|
||||
|
||||
/datum/config_entry/number/suicide_reenter_round_timer
|
||||
config_entry_value = 30
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/roundstart_suicide_time_limit
|
||||
config_entry_value = 30
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/shuttle_refuel_delay
|
||||
config_entry_value = 12000
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/flag/show_game_type_odds //if set this allows players to see the odds of each roundtype on the get revision screen
|
||||
|
||||
/datum/config_entry/keyed_list/roundstart_races //races you can play as from the get go.
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_FLAG
|
||||
|
||||
/datum/config_entry/flag/join_with_mutant_humans //players can pick mutant bodyparts for humans before joining the game
|
||||
|
||||
/datum/config_entry/flag/no_summon_guns //No
|
||||
|
||||
/datum/config_entry/flag/no_summon_magic //Fun
|
||||
|
||||
/datum/config_entry/flag/no_summon_events //Allowed
|
||||
|
||||
/datum/config_entry/flag/no_summon_traumas //!
|
||||
|
||||
/datum/config_entry/flag/no_intercept_report //Whether or not to send a communications intercept report roundstart. This may be overridden by gamemodes.
|
||||
|
||||
/datum/config_entry/number/arrivals_shuttle_dock_window //Time from when a player late joins on the arrivals shuttle to when the shuttle docks on the station
|
||||
config_entry_value = 55
|
||||
min_val = 30
|
||||
|
||||
/datum/config_entry/flag/arrivals_shuttle_require_undocked //Require the arrivals shuttle to be undocked before latejoiners can join
|
||||
|
||||
/datum/config_entry/flag/arrivals_shuttle_require_safe_latejoin //Require the arrivals shuttle to be operational in order for latejoiners to join
|
||||
|
||||
|
||||
/datum/config_entry/flag/revival_pod_plants
|
||||
|
||||
/datum/config_entry/flag/revival_cloning
|
||||
|
||||
/datum/config_entry/number/revival_brain_life
|
||||
config_entry_value = -1
|
||||
min_val = -1
|
||||
|
||||
/datum/config_entry/flag/ooc_during_round
|
||||
|
||||
/datum/config_entry/flag/emojis
|
||||
|
||||
/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
|
||||
|
||||
/datum/config_entry/flag/ghost_interaction
|
||||
|
||||
/datum/config_entry/flag/silent_ai
|
||||
/datum/config_entry/flag/silent_borg
|
||||
|
||||
/datum/config_entry/flag/sandbox_autoclose // close the sandbox panel after spawning an item, potentially reducing griff
|
||||
|
||||
/datum/config_entry/number/default_laws //Controls what laws the AI spawns with.
|
||||
config_entry_value = 0
|
||||
min_val = 0
|
||||
max_val = 3
|
||||
|
||||
/datum/config_entry/number/silicon_max_law_amount
|
||||
config_entry_value = 12
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/keyed_list/random_laws
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_FLAG
|
||||
|
||||
/datum/config_entry/keyed_list/law_weight
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_NUM
|
||||
splitter = ","
|
||||
|
||||
/datum/config_entry/number/overflow_cap
|
||||
config_entry_value = -1
|
||||
min_val = -1
|
||||
|
||||
/datum/config_entry/string/overflow_job
|
||||
config_entry_value = "Assistant"
|
||||
|
||||
/datum/config_entry/flag/starlight
|
||||
/datum/config_entry/flag/grey_assistants
|
||||
|
||||
/datum/config_entry/number/lavaland_budget
|
||||
config_entry_value = 60
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/space_budget
|
||||
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
|
||||
|
||||
/datum/config_entry/flag/allow_random_events // Enables random events mid-round when set
|
||||
|
||||
/datum/config_entry/number/events_min_time_mul // Multipliers for random events minimal starting time and minimal players amounts
|
||||
config_entry_value = 1
|
||||
min_val = 0
|
||||
integer = FALSE
|
||||
|
||||
/datum/config_entry/number/events_min_players_mul
|
||||
config_entry_value = 1
|
||||
min_val = 0
|
||||
integer = FALSE
|
||||
|
||||
/datum/config_entry/number/mice_roundstart
|
||||
config_entry_value = 10
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/bombcap
|
||||
config_entry_value = 14
|
||||
min_val = 4
|
||||
|
||||
/datum/config_entry/number/bombcap/ValidateAndSet(str_val)
|
||||
. = ..()
|
||||
if(.)
|
||||
GLOB.MAX_EX_DEVESTATION_RANGE = round(config_entry_value / 4)
|
||||
GLOB.MAX_EX_HEAVY_RANGE = round(config_entry_value / 2)
|
||||
GLOB.MAX_EX_LIGHT_RANGE = config_entry_value
|
||||
GLOB.MAX_EX_FLASH_RANGE = config_entry_value
|
||||
GLOB.MAX_EX_FLAME_RANGE = config_entry_value
|
||||
|
||||
/datum/config_entry/number/emergency_shuttle_autocall_threshold
|
||||
min_val = 0
|
||||
max_val = 1
|
||||
integer = FALSE
|
||||
|
||||
/datum/config_entry/flag/ic_printing
|
||||
|
||||
/datum/config_entry/flag/roundstart_traits
|
||||
|
||||
/datum/config_entry/flag/enable_night_shifts
|
||||
|
||||
/datum/config_entry/number/night_shift_public_areas_only
|
||||
config_entry_value = NIGHTSHIFT_AREA_PUBLIC
|
||||
|
||||
/datum/config_entry/flag/nightshift_toggle_requires_auth
|
||||
config_entry_value = FALSE
|
||||
|
||||
/datum/config_entry/flag/nightshift_toggle_public_requires_auth
|
||||
config_entry_value = TRUE
|
||||
|
||||
/datum/config_entry/flag/randomize_shift_time
|
||||
|
||||
/datum/config_entry/flag/shift_time_realtime
|
||||
|
||||
/datum/config_entry/number/monkeycap
|
||||
config_entry_value = 64
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/ratcap
|
||||
config_entry_value = 64
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/keyed_list/box_random_engine
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_NUM
|
||||
lowercase = FALSE
|
||||
splitter = ","
|
||||
|
||||
/datum/config_entry/flag/pai_custom_holoforms
|
||||
|
||||
/datum/config_entry/number/marauder_delay_non_reebe
|
||||
config_entry_value = 1800
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/flag/allow_clockwork_marauder_on_station
|
||||
config_entry_value = TRUE
|
||||
|
||||
/datum/config_entry/flag/suicide_allowed
|
||||
|
||||
|
||||
//Allows players to set a hexadecimal color of their choice as skin tone, on top of the standard ones.
|
||||
/datum/config_entry/flag/allow_custom_skintones
|
||||
|
||||
///Initial loadout points
|
||||
/datum/config_entry/number/initial_gear_points
|
||||
config_entry_value = 10
|
||||
|
||||
/**
|
||||
* Enables the FoV component, which hides objects and mobs behind the parent from their sight, unless they turn around, duh.
|
||||
* Camera mobs, AIs, ghosts and some other are of course exempt from this. This also doesn't influence simplemob AI, for the best.
|
||||
*/
|
||||
/datum/config_entry/flag/use_field_of_vision
|
||||
|
||||
//Shuttle size limiter
|
||||
/datum/config_entry/number/max_shuttle_count
|
||||
config_entry_value = 6
|
||||
|
||||
/datum/config_entry/number/max_shuttle_size
|
||||
config_entry_value = 500
|
||||
|
||||
//wound config stuff (increases the max injury roll, making injuries more likely)
|
||||
/datum/config_entry/number/wound_exponent
|
||||
config_entry_value = WOUND_DAMAGE_EXPONENT
|
||||
min_val = 0
|
||||
integer = FALSE
|
||||
|
||||
//adds a set amount to any injury rolls on a limb using get_damage() multiplied by this number
|
||||
/datum/config_entry/number/wound_damage_multiplier
|
||||
config_entry_value = 0.333
|
||||
min_val = 0
|
||||
integer = FALSE
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
/datum/config_entry/flag/use_age_restriction_for_jobs //Do jobs use account age restrictions? --requires database
|
||||
|
||||
/datum/config_entry/flag/use_account_age_for_jobs //Uses the time they made the account for the job restriction stuff. New player joining alerts should be unaffected.
|
||||
|
||||
/datum/config_entry/flag/use_exp_tracking
|
||||
|
||||
/datum/config_entry/flag/use_exp_restrictions_heads
|
||||
|
||||
/datum/config_entry/number/use_exp_restrictions_heads_hours
|
||||
config_entry_value = 0
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/flag/use_exp_restrictions_heads_department
|
||||
|
||||
/datum/config_entry/flag/use_exp_restrictions_other
|
||||
|
||||
/datum/config_entry/flag/use_exp_restrictions_admin_bypass
|
||||
@@ -9,6 +9,7 @@
|
||||
|
||||
/datum/config_entry/flag/log_admin // log admin actions
|
||||
protection = CONFIG_ENTRY_LOCKED
|
||||
config_entry_value = TRUE
|
||||
|
||||
/datum/config_entry/flag/log_prayer // log prayers
|
||||
config_entry_value = TRUE
|
||||
@@ -68,3 +69,16 @@
|
||||
/// forces log_href for tgui
|
||||
/datum/config_entry/flag/emergency_tgui_logging
|
||||
config_entry_value = FALSE
|
||||
|
||||
/datum/config_entry/number/error_cooldown // The "cooldown" time for each occurrence of a unique error
|
||||
config_entry_value = 600
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/error_limit // How many occurrences before the next will silence them
|
||||
config_entry_value = 50
|
||||
|
||||
/datum/config_entry/number/error_silence_time // How long a unique error will be silenced for
|
||||
config_entry_value = 6000
|
||||
|
||||
/datum/config_entry/number/error_msg_delay // How long to wait between messaging admins about occurrences of a unique error
|
||||
config_entry_value = 50
|
||||
|
||||
@@ -0,0 +1,124 @@
|
||||
/datum/config_entry/keyed_list/multiplicative_movespeed
|
||||
key_mode = KEY_MODE_TYPE
|
||||
value_mode = VALUE_MODE_NUM
|
||||
abstract_type = /datum/config_entry/keyed_list/multiplicative_movespeed
|
||||
|
||||
/datum/config_entry/keyed_list/multiplicative_movespeed/ValidateAndSet()
|
||||
. = ..()
|
||||
if(.)
|
||||
update_config_movespeed_type_lookup(TRUE)
|
||||
|
||||
/datum/config_entry/keyed_list/multiplicative_movespeed/vv_edit_var(var_name, var_value)
|
||||
. = ..()
|
||||
if(. && (var_name == NAMEOF(src, config_entry_value)))
|
||||
update_config_movespeed_type_lookup(TRUE)
|
||||
|
||||
/datum/config_entry/keyed_list/multiplicative_movespeed/normal
|
||||
name = "multiplicative_movespeed"
|
||||
config_entry_value = list( //DEFAULTS
|
||||
/mob/living/simple_animal = 1,
|
||||
/mob/living/silicon/pai = 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
|
||||
)
|
||||
|
||||
/datum/config_entry/keyed_list/multiplicative_movespeed/floating
|
||||
name = "multiplicative_movespeed_floating"
|
||||
config_entry_value = list(
|
||||
/mob/living = 0,
|
||||
/mob/living/carbon/alien/humanoid = 0,
|
||||
/mob/living/carbon/alien/humanoid/royal/praetorian = 0,
|
||||
/mob/living/carbon/alien/humanoid/royal/queen = 2
|
||||
)
|
||||
|
||||
/datum/config_entry/number/movedelay //Used for modifying movement speed for mobs.
|
||||
abstract_type = /datum/config_entry/number/movedelay
|
||||
integer = FALSE
|
||||
|
||||
/datum/config_entry/number/movedelay/ValidateAndSet()
|
||||
. = ..()
|
||||
if(.)
|
||||
update_mob_config_movespeeds()
|
||||
|
||||
/datum/config_entry/number/movedelay/vv_edit_var(var_name, var_value)
|
||||
. = ..()
|
||||
if(. && (var_name == NAMEOF(src, config_entry_value)))
|
||||
update_mob_config_movespeeds()
|
||||
|
||||
/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/flag/sprint_enabled
|
||||
config_entry_value = TRUE
|
||||
|
||||
/datum/config_entry/flag/sprint_enabled/ValidateAndSet(str_val)
|
||||
. = ..()
|
||||
for(var/datum/hud/human/H)
|
||||
H.assert_move_intent_ui()
|
||||
if(!config_entry_value) // disabled
|
||||
for(var/mob/living/L in world)
|
||||
L.disable_intentional_sprint_mode()
|
||||
|
||||
/datum/config_entry/number/sprintless_stagger_slowdown
|
||||
config_entry_value = 0
|
||||
|
||||
/datum/config_entry/number/sprintless_off_balance_slowdown
|
||||
config_entry_value = 0.85
|
||||
|
||||
/datum/config_entry/number/melee_stagger_factor
|
||||
config_entry_value = 1
|
||||
|
||||
/datum/config_entry/number/movedelay/sprint_speed_increase
|
||||
config_entry_value = 1
|
||||
|
||||
/datum/config_entry/number/movedelay/sprint_max_tiles_increase
|
||||
config_entry_value = 5
|
||||
|
||||
/datum/config_entry/number/movedelay/sprint_absolute_max_tiles
|
||||
config_entry_value = 13
|
||||
|
||||
/datum/config_entry/number/movedelay/sprint_buffer_max
|
||||
config_entry_value = 24
|
||||
|
||||
/datum/config_entry/number/movedelay/sprint_stamina_cost
|
||||
config_entry_value = 1.4
|
||||
|
||||
/datum/config_entry/number/movedelay/sprint_buffer_regen_per_ds
|
||||
config_entry_value = 0.4
|
||||
|
||||
/////////////////////////////////////////////////Outdated move delay
|
||||
/datum/config_entry/number/outdated_movedelay
|
||||
deprecated_by = /datum/config_entry/keyed_list/multiplicative_movespeed/normal
|
||||
abstract_type = /datum/config_entry/number/outdated_movedelay
|
||||
|
||||
var/movedelay_type
|
||||
|
||||
/datum/config_entry/number/outdated_movedelay/DeprecationUpdate(value)
|
||||
return "[movedelay_type] [value]"
|
||||
|
||||
/datum/config_entry/number/outdated_movedelay/human_delay
|
||||
movedelay_type = /mob/living/carbon/human
|
||||
/datum/config_entry/number/outdated_movedelay/robot_delay
|
||||
movedelay_type = /mob/living/silicon/robot
|
||||
/datum/config_entry/number/outdated_movedelay/monkey_delay
|
||||
movedelay_type = /mob/living/carbon/monkey
|
||||
/datum/config_entry/number/outdated_movedelay/alien_delay
|
||||
movedelay_type = /mob/living/carbon/alien
|
||||
/datum/config_entry/number/outdated_movedelay/slime_delay
|
||||
movedelay_type = /mob/living/simple_animal/slime
|
||||
/datum/config_entry/number/outdated_movedelay/animal_delay
|
||||
movedelay_type = /mob/living/simple_animal
|
||||
/////////////////////////////////////////////////
|
||||
@@ -3,9 +3,9 @@
|
||||
config_entry_value = 300
|
||||
integer = TRUE
|
||||
|
||||
/datum/config_entry/keyed_list/policyconfig
|
||||
/datum/config_entry/keyed_list/policy
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_TEXT
|
||||
|
||||
/datum/config_entry/keyed_list/policyconfig/preprocess_key(key)
|
||||
/datum/config_entry/keyed_list/policy/preprocess_key(key)
|
||||
return uppertext(..())
|
||||
|
||||
+16
-1
@@ -9,7 +9,6 @@
|
||||
protection = CONFIG_ENTRY_LOCKED //affects physical server configuration, no touchies!!
|
||||
|
||||
/datum/config_entry/flag/fail2topic_enabled
|
||||
config_entry_value = TRUE
|
||||
|
||||
/datum/config_entry/number/topic_max_size
|
||||
config_entry_value = 8192
|
||||
@@ -17,3 +16,19 @@
|
||||
/datum/config_entry/keyed_list/topic_rate_limit_whitelist
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_FLAG
|
||||
|
||||
/datum/config_entry/number/minute_topic_limit
|
||||
config_entry_value = null
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/second_topic_limit
|
||||
config_entry_value = null
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/minute_click_limit
|
||||
config_entry_value = 400
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/second_click_limit
|
||||
config_entry_value = 15
|
||||
min_val = 0
|
||||
@@ -0,0 +1,90 @@
|
||||
/datum/config_entry/flag/auto_profile // Automatically start profiler on server start
|
||||
|
||||
/datum/config_entry/string/servername // server name (the name of the game window)
|
||||
|
||||
/datum/config_entry/string/servertagline
|
||||
config_entry_value = "We forgot to set the server's tagline in config.txt"
|
||||
|
||||
/datum/config_entry/string/serversqlname // short form server name used for the DB
|
||||
|
||||
/datum/config_entry/string/stationname // station name (the name of the station in-game)
|
||||
|
||||
/datum/config_entry/number/fps
|
||||
config_entry_value = 20
|
||||
min_val = 1
|
||||
max_val = 100 //byond will start crapping out at 50, so this is just ridic
|
||||
var/sync_validate = FALSE
|
||||
|
||||
/datum/config_entry/number/fps/ValidateAndSet(str_val)
|
||||
. = ..()
|
||||
if(.)
|
||||
sync_validate = TRUE
|
||||
var/datum/config_entry/number/ticklag/TL = config.entries_by_type[/datum/config_entry/number/ticklag]
|
||||
if(!TL.sync_validate)
|
||||
TL.ValidateAndSet(10 / config_entry_value)
|
||||
sync_validate = FALSE
|
||||
|
||||
/datum/config_entry/number/ticklag
|
||||
integer = FALSE
|
||||
var/sync_validate = FALSE
|
||||
|
||||
/datum/config_entry/number/ticklag/New() //ticklag weirdly just mirrors fps
|
||||
var/datum/config_entry/CE = /datum/config_entry/number/fps
|
||||
config_entry_value = 10 / initial(CE.config_entry_value)
|
||||
..()
|
||||
|
||||
/datum/config_entry/number/ticklag/ValidateAndSet(str_val)
|
||||
. = text2num(str_val) > 0 && ..()
|
||||
if(.)
|
||||
sync_validate = TRUE
|
||||
var/datum/config_entry/number/fps/FPS = config.entries_by_type[/datum/config_entry/number/fps]
|
||||
if(!FPS.sync_validate)
|
||||
FPS.ValidateAndSet(10 / config_entry_value)
|
||||
sync_validate = FALSE
|
||||
|
||||
/datum/config_entry/number/tick_limit_mc_init //SSinitialization throttling
|
||||
config_entry_value = TICK_LIMIT_MC_INIT_DEFAULT
|
||||
min_val = 0 //oranges warned us
|
||||
integer = FALSE
|
||||
|
||||
/datum/config_entry/flag/usewhitelist
|
||||
|
||||
/datum/config_entry/string/hostedby
|
||||
|
||||
/datum/config_entry/flag/hub // if the game appears on the hub or not
|
||||
|
||||
/datum/config_entry/string/invoke_youtubedl
|
||||
protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN
|
||||
|
||||
/datum/config_entry/number/mc_tick_rate/base_mc_tick_rate
|
||||
integer = FALSE
|
||||
config_entry_value = 1
|
||||
|
||||
/datum/config_entry/number/mc_tick_rate/high_pop_mc_tick_rate
|
||||
integer = FALSE
|
||||
config_entry_value = 1.1
|
||||
|
||||
/datum/config_entry/number/mc_tick_rate/high_pop_mc_mode_amount
|
||||
config_entry_value = 65
|
||||
|
||||
/datum/config_entry/number/mc_tick_rate/disable_high_pop_mc_mode_amount
|
||||
config_entry_value = 60
|
||||
|
||||
/datum/config_entry/number/mc_tick_rate
|
||||
abstract_type = /datum/config_entry/number/mc_tick_rate
|
||||
|
||||
/datum/config_entry/number/mc_tick_rate/ValidateAndSet(str_val)
|
||||
. = ..()
|
||||
if (.)
|
||||
Master.UpdateTickRate()
|
||||
|
||||
/datum/config_entry/flag/resume_after_initializations
|
||||
|
||||
/datum/config_entry/flag/resume_after_initializations/ValidateAndSet(str_val)
|
||||
. = ..()
|
||||
if(. && Master.current_runlevel)
|
||||
world.sleep_offline = !config_entry_value
|
||||
|
||||
/datum/config_entry/number/rounds_until_hard_restart
|
||||
config_entry_value = -1
|
||||
min_val = 0
|
||||
@@ -29,3 +29,5 @@
|
||||
/// Factor to multiply by for stamina usage past buffer into health
|
||||
/datum/config_entry/number/stamina_combat/overdraw_penalty_factor
|
||||
config_entry_value = 1.5
|
||||
|
||||
/datum/config_entry/flag/disable_stambuffer
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
/datum/config_entry/keyed_list/job_threat
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_NUM
|
||||
|
||||
/datum/config_entry/keyed_list/antag_threat
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_NUM
|
||||
@@ -0,0 +1,26 @@
|
||||
/datum/config_entry/string/server
|
||||
|
||||
/datum/config_entry/string/banappeals
|
||||
|
||||
/datum/config_entry/string/wikiurl
|
||||
config_entry_value = "https://katlin.dog/citadel-wiki"
|
||||
|
||||
/datum/config_entry/string/wikiurltg
|
||||
config_entry_value = "http://www.tgstation13.org/wiki"
|
||||
|
||||
/datum/config_entry/string/forumurl
|
||||
config_entry_value = "http://tgstation13.org/phpBB/index.php"
|
||||
|
||||
/datum/config_entry/string/rulesurl
|
||||
config_entry_value = "http://www.tgstation13.org/wiki/Rules"
|
||||
|
||||
/datum/config_entry/string/githuburl
|
||||
config_entry_value = "https://www.github.com/tgstation/-tg-station"
|
||||
|
||||
/datum/config_entry/string/roundstatsurl
|
||||
|
||||
/datum/config_entry/string/gamelogurl
|
||||
|
||||
/datum/config_entry/number/githubrepoid
|
||||
config_entry_value = null
|
||||
min_val = 0
|
||||
@@ -0,0 +1,55 @@
|
||||
/datum/config_entry/flag/allow_vote_restart // allow votes to restart
|
||||
|
||||
/datum/config_entry/flag/allow_vote_mode // allow votes to change mode
|
||||
|
||||
/datum/config_entry/number/vote_delay // minimum time between voting sessions (deciseconds, 10 minute default)
|
||||
config_entry_value = 6000
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/vote_period // length of voting period (deciseconds, default 1 minute)
|
||||
config_entry_value = 600
|
||||
min_val = 0
|
||||
|
||||
/// Length of time before the first autotransfer vote is called (deciseconds, default 2 hours)
|
||||
/// Set to 0 to disable the subsystem altogether.
|
||||
/datum/config_entry/number/vote_autotransfer_initial
|
||||
config_entry_value = 72000
|
||||
min_val = 0
|
||||
|
||||
///length of time to wait before subsequent autotransfer votes (deciseconds, default 30 minutes)
|
||||
/datum/config_entry/number/vote_autotransfer_interval
|
||||
config_entry_value = 18000
|
||||
min_val = 0
|
||||
|
||||
/// maximum extensions until the round autoends.
|
||||
/// Set to 0 to force automatic crew transfer after the 'vote_autotransfer_initial' elapsed.
|
||||
/// Set to -1 to disable the maximum extensions cap.
|
||||
/datum/config_entry/number/vote_autotransfer_maximum
|
||||
config_entry_value = 4
|
||||
min_val = -1
|
||||
|
||||
/datum/config_entry/flag/default_no_vote // vote does not default to nochange/norestart
|
||||
|
||||
/datum/config_entry/flag/no_dead_vote // dead people can't vote
|
||||
|
||||
/datum/config_entry/flag/maprotation
|
||||
|
||||
/datum/config_entry/flag/tgstyle_maprotation
|
||||
|
||||
/datum/config_entry/string/map_vote_type
|
||||
config_entry_value = APPROVAL_VOTING
|
||||
|
||||
/datum/config_entry/number/maprotatechancedelta
|
||||
config_entry_value = 0.75
|
||||
min_val = 0
|
||||
max_val = 1
|
||||
integer = FALSE
|
||||
|
||||
/datum/config_entry/flag/allow_map_voting
|
||||
|
||||
/datum/config_entry/flag/modetier_voting
|
||||
|
||||
/datum/config_entry/number/dropped_modes
|
||||
config_entry_value = 3
|
||||
|
||||
/datum/config_entry/flag/must_be_readied_to_vote_gamemode
|
||||
@@ -11,6 +11,7 @@ SUBSYSTEM_DEF(activity)
|
||||
/datum/controller/subsystem/activity/Initialize(timeofday)
|
||||
RegisterSignal(SSdcs,COMSIG_GLOB_EXPLOSION,.proc/on_explosion)
|
||||
RegisterSignal(SSdcs,COMSIG_GLOB_MOB_DEATH,.proc/on_death)
|
||||
return ..()
|
||||
|
||||
/datum/controller/subsystem/activity/fire(resumed = 0)
|
||||
calculate_threat()
|
||||
@@ -54,7 +55,10 @@ SUBSYSTEM_DEF(activity)
|
||||
var/weight = (text2num(threat_history[i+1])-text2num(threat_history[i]))
|
||||
total_weight += weight
|
||||
total_amt += weight * (threat_history[threat_history[i]])
|
||||
return round(total_amt / total_weight,0.1)
|
||||
if(total_weight == 0)
|
||||
return total_amt
|
||||
else
|
||||
return round(total_amt / total_weight,0.1)
|
||||
|
||||
/datum/controller/subsystem/activity/proc/get_max_threat()
|
||||
. = 0
|
||||
|
||||
@@ -58,9 +58,9 @@ SUBSYSTEM_DEF(air)
|
||||
// Whether turf-to-turf heat exchanging should be enabled.
|
||||
var/heat_enabled = FALSE
|
||||
// Max number of times process_turfs will share in a tick.
|
||||
var/share_max_steps = 1
|
||||
var/share_max_steps = 3
|
||||
// Excited group processing will try to equalize groups with total pressure difference less than this amount.
|
||||
var/excited_group_pressure_goal = 0.25
|
||||
var/excited_group_pressure_goal = 1
|
||||
|
||||
/datum/controller/subsystem/air/stat_entry(msg)
|
||||
msg += "C:{"
|
||||
|
||||
@@ -409,8 +409,7 @@ SUBSYSTEM_DEF(research)
|
||||
var/datum/techweb_node/TN = techweb_nodes[id]
|
||||
TN.Initialize()
|
||||
techweb_nodes = returned
|
||||
if (!verify_techweb_nodes()) //Verify all nodes have ids and such.
|
||||
stack_trace("Invalid techweb nodes detected")
|
||||
verify_techweb_nodes()
|
||||
calculate_techweb_nodes()
|
||||
calculate_techweb_boost_list()
|
||||
if (!verify_techweb_nodes()) //Verify nodes and designs have been crosslinked properly.
|
||||
@@ -442,52 +441,52 @@ SUBSYSTEM_DEF(research)
|
||||
for(var/n in techweb_nodes)
|
||||
var/datum/techweb_node/N = techweb_nodes[n]
|
||||
if(!istype(N))
|
||||
WARNING("Invalid research node with ID [n] detected and removed.")
|
||||
stack_trace("Invalid research node with ID [n] detected and removed.")
|
||||
techweb_nodes -= n
|
||||
research_node_id_error(n)
|
||||
. = FALSE
|
||||
for(var/p in N.prereq_ids)
|
||||
var/datum/techweb_node/P = techweb_nodes[p]
|
||||
if(!istype(P))
|
||||
WARNING("Invalid research prerequisite node with ID [p] detected in node [N.display_name]\[[N.id]\] removed.")
|
||||
stack_trace("Invalid research prerequisite node with ID [p] detected in node [N.display_name]\[[N.id]\] removed.")
|
||||
N.prereq_ids -= p
|
||||
research_node_id_error(p)
|
||||
. = FALSE
|
||||
for(var/d in N.design_ids)
|
||||
var/datum/design/D = techweb_designs[d]
|
||||
if(!istype(D))
|
||||
WARNING("Invalid research design with ID [d] detected in node [N.display_name]\[[N.id]\] removed.")
|
||||
stack_trace("Invalid research design with ID [d] detected in node [N.display_name]\[[N.id]\] removed.")
|
||||
N.design_ids -= d
|
||||
design_id_error(d)
|
||||
. = FALSE
|
||||
for(var/u in N.unlock_ids)
|
||||
var/datum/techweb_node/U = techweb_nodes[u]
|
||||
if(!istype(U))
|
||||
WARNING("Invalid research unlock node with ID [u] detected in node [N.display_name]\[[N.id]\] removed.")
|
||||
stack_trace("Invalid research unlock node with ID [u] detected in node [N.display_name]\[[N.id]\] removed.")
|
||||
N.unlock_ids -= u
|
||||
research_node_id_error(u)
|
||||
. = FALSE
|
||||
for(var/p in N.boost_item_paths)
|
||||
if(!ispath(p))
|
||||
N.boost_item_paths -= p
|
||||
WARNING("[p] is not a valid path.")
|
||||
stack_trace("[p] is not a valid path.")
|
||||
node_boost_error(N.id, "[p] is not a valid path.")
|
||||
. = FALSE
|
||||
var/list/points = N.boost_item_paths[p]
|
||||
if(islist(points))
|
||||
for(var/i in points)
|
||||
if(!isnum(points[i]))
|
||||
WARNING("[points[i]] is not a valid number.")
|
||||
stack_trace("[points[i]] is not a valid number.")
|
||||
node_boost_error(N.id, "[points[i]] is not a valid number.")
|
||||
. = FALSE
|
||||
else if(!point_types[i])
|
||||
WARNING("[i] is not a valid point type.")
|
||||
stack_trace("[i] is not a valid point type.")
|
||||
node_boost_error(N.id, "[i] is not a valid point type.")
|
||||
. = FALSE
|
||||
else if(!isnull(points))
|
||||
N.boost_item_paths -= p
|
||||
node_boost_error(N.id, "No valid list.")
|
||||
WARNING("No valid list.")
|
||||
stack_trace("No valid list.")
|
||||
. = FALSE
|
||||
CHECK_TICK
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ SUBSYSTEM_DEF(title)
|
||||
|
||||
/datum/controller/subsystem/title/Initialize()
|
||||
if(file_path && icon)
|
||||
return
|
||||
return ..()
|
||||
|
||||
if(fexists("data/previous_title.dat"))
|
||||
var/previous_path = file2text("data/previous_title.dat")
|
||||
@@ -31,15 +31,13 @@ SUBSYSTEM_DEF(title)
|
||||
if(length(title_screens))
|
||||
file_path = "[global.config.directory]/title_screens/images/[pick(title_screens)]"
|
||||
|
||||
if(!file_path)
|
||||
if(!file_path || !fexists(file_path))
|
||||
file_path = "icons/default_title.dmi"
|
||||
|
||||
ASSERT(fexists(file_path))
|
||||
|
||||
icon = new(fcopy_rsc(file_path))
|
||||
|
||||
if(splash_turf)
|
||||
splash_turf.icon = icon
|
||||
if(fexists(file_path))
|
||||
icon = new(fcopy_rsc(file_path))
|
||||
if(splash_turf)
|
||||
splash_turf.icon = icon
|
||||
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
return
|
||||
SEND_SIGNAL(parent, COMSIG_ATOM_ORBIT_END, orbiter, refreshing)
|
||||
UnregisterSignal(orbiter, COMSIG_MOVABLE_MOVED)
|
||||
orbiter.SpinAnimation(0, 0)
|
||||
orbiter.SpinAnimation(0, 0, parallel = FALSE)
|
||||
if(istype(orbiters[orbiter],/matrix)) //This is ugly.
|
||||
orbiter.transform = orbiters[orbiter]
|
||||
orbiters -= orbiter
|
||||
|
||||
@@ -159,9 +159,9 @@
|
||||
/datum/symptom/heal/metabolism/Heal(mob/living/carbon/C, datum/disease/advance/A, actual_power)
|
||||
if(!istype(C))
|
||||
return
|
||||
C.reagents.metabolize(C, can_overdose=TRUE) //this works even without a liver; it's intentional since the virus is metabolizing by itself
|
||||
C.reagents.metabolize(C, SSMOBS_DT, 0, can_overdose=TRUE) //this works even without a liver; it's intentional since the virus is metabolizing by itself
|
||||
if(triple_metabolism)
|
||||
C.reagents.metabolize(C, can_overdose=TRUE)
|
||||
C.reagents.metabolize(C, SSMOBS_DT, 0, can_overdose=TRUE)
|
||||
C.overeatduration = max(C.overeatduration - 2, 0)
|
||||
var/lost_nutrition = 9 - (reduced_hunger * 5)
|
||||
C.adjust_nutrition(-lost_nutrition * HUNGER_FACTOR) //Hunger depletes at 10x the normal speed
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/datum/element/trash
|
||||
element_flags = ELEMENT_BESPOKE|ELEMENT_DETACH
|
||||
element_flags = ELEMENT_DETACH
|
||||
|
||||
/datum/element/trash/Attach(datum/target)
|
||||
. = ..()
|
||||
|
||||
@@ -35,6 +35,14 @@
|
||||
cost = 10
|
||||
allow_duplicates = FALSE
|
||||
|
||||
/datum/map_template/ruin/lavaland/library
|
||||
name = "Lavaland Library"
|
||||
id = "llibrary"
|
||||
description = "A once grand library, now lost to the confines of lavaland."
|
||||
suffix = "lavaland_surface_library.dmm"
|
||||
cost = 5
|
||||
allow_duplicates = FALSE
|
||||
|
||||
/datum/map_template/ruin/lavaland/seed_vault
|
||||
name = "Seed Vault"
|
||||
id = "seed-vault"
|
||||
@@ -79,6 +87,20 @@
|
||||
suffix = "lavaland_surface_animal_hospital.dmm"
|
||||
allow_duplicates = FALSE
|
||||
|
||||
/datum/map_template/ruin/lavaland/hotsprings
|
||||
name = "Hot Springs"
|
||||
id = "lhotsprings"
|
||||
description = "Just relax and take a dip! Lavaland's finest hot springs await!"
|
||||
suffix = "lavaland_surface_hotsprings.dmm"
|
||||
|
||||
/datum/map_template/ruin/lavaland/engioutpost
|
||||
name = "Engineer Outpost"
|
||||
id = "lengioutpost"
|
||||
description = "Blown up by an unfortunate accident."
|
||||
suffix = "lavaland_surface_engioutpost.dmm"
|
||||
cost = 10
|
||||
allow_duplicates = FALSE
|
||||
|
||||
/datum/map_template/ruin/lavaland/sin
|
||||
cost = 10
|
||||
allow_duplicates = FALSE
|
||||
@@ -115,6 +137,24 @@
|
||||
suffix = "lavaland_surface_sloth.dmm"
|
||||
// Generates nothing but atmos runtimes and salt
|
||||
|
||||
/datum/map_template/ruin/lavaland/sin/lust
|
||||
name = "Ruin of Lust"
|
||||
id = "llust"
|
||||
description = "Not exactly what you expected."
|
||||
suffix = "lavaland_surface_lust.dmm"
|
||||
|
||||
/datum/map_template/ruin/lavaland/sin/wrath
|
||||
name = "Ruin of Wrath"
|
||||
id = "lwrath"
|
||||
description = "You'll fight and fight and just keep fighting."
|
||||
suffix = "lavaland_surface_wrath.dmm"
|
||||
|
||||
/datum/map_template/ruin/lavaland/bathhouse
|
||||
name = "Bath House"
|
||||
id = "lbathhouse"
|
||||
description = "A taste of paradise, locked in the hell of Lavaland."
|
||||
suffix = "lavaland_surface_bathhouse.dmm"
|
||||
|
||||
/datum/map_template/ruin/lavaland/ratvar
|
||||
name = "Dead God"
|
||||
id = "ratvar"
|
||||
@@ -132,19 +172,20 @@
|
||||
|
||||
/datum/map_template/ruin/lavaland/blood_drunk_miner
|
||||
name = "Blood-Drunk Miner"
|
||||
id = "blooddrunk"
|
||||
description = "A strange arrangement of stone tiles and an insane, beastly miner contemplating them."
|
||||
suffix = "lavaland_surface_blooddrunk1.dmm"
|
||||
description = "An insane, beastly miner contemplating stone tiles..."
|
||||
always_place = TRUE
|
||||
allow_duplicates = FALSE //will only spawn one variant of the ruin
|
||||
|
||||
/datum/map_template/ruin/lavaland/blood_drunk_miner/guidance
|
||||
name = "Blood-Drunk Miner (Guidance)"
|
||||
suffix = "lavaland_surface_blooddrunk2.dmm"
|
||||
|
||||
/datum/map_template/ruin/lavaland/blood_drunk_miner/hunter
|
||||
name = "Blood-Drunk Miner (Hunter)"
|
||||
suffix = "lavaland_surface_blooddrunk3.dmm"
|
||||
allow_duplicates = FALSE
|
||||
id = "blooddrunk"
|
||||
/datum/map_template/ruin/lavaland/blood_drunk_miner/New()
|
||||
if(prob(25))
|
||||
suffix = "lavaland_surface_blooddrunk1.dmm"
|
||||
else if(prob(34))
|
||||
suffix = "lavaland_surface_blooddrunk2.dmm"
|
||||
else if(prob(50))
|
||||
suffix = "lavaland_surface_blooddrunk3.dmm"
|
||||
else
|
||||
suffix = "lavaland_surface_mining_site.dmm"
|
||||
. = ..()
|
||||
|
||||
/datum/map_template/ruin/lavaland/ufo_crash
|
||||
name = "UFO Crash"
|
||||
|
||||
@@ -199,6 +199,23 @@
|
||||
movespeed_mod = /datum/movespeed_modifier/status_effect/tased/no_combat_mode
|
||||
stamdmg_per_ds = 1
|
||||
|
||||
/datum/status_effect/vtec_disabled
|
||||
id = "vtec_disable"
|
||||
tick = FALSE
|
||||
|
||||
/datum/status_effect/vtec_disabled/on_creation(mob/living/new_owner, set_duration)
|
||||
if(isnum(set_duration))
|
||||
duration = set_duration
|
||||
. = ..()
|
||||
if(iscyborg(owner))
|
||||
var/mob/living/silicon/robot/R = owner
|
||||
R.vtec_disabled = TRUE
|
||||
|
||||
/datum/status_effect/vtec_disabled/on_remove()
|
||||
if(iscyborg(owner))
|
||||
var/mob/living/silicon/robot/R = owner
|
||||
R.vtec_disabled = FALSE
|
||||
return ..()
|
||||
|
||||
//OTHER DEBUFFS
|
||||
/datum/status_effect/his_wrath //does minor damage over time unless holding His Grace
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
/datum/status_effect
|
||||
var/id = "effect" //Used for screen alerts.
|
||||
var/duration = -1 //How long the status effect lasts in DECISECONDS. Enter -1 for an effect that never ends unless removed through some means.
|
||||
/// do we tick()?
|
||||
var/tick = TRUE
|
||||
var/tick_interval = 10 //How many deciseconds between ticks, approximately. Leave at 10 for every second.
|
||||
var/next_tick //The scheduled time for the next tick.
|
||||
var/mob/living/owner //The mob affected by the status effect.
|
||||
|
||||
+1
-1
@@ -169,7 +169,7 @@
|
||||
* * [/turf/open/space/proc/Initialize]
|
||||
*/
|
||||
/atom/proc/Initialize(mapload, ...)
|
||||
// SHOULD_NOT_SLEEP(TRUE)
|
||||
SHOULD_NOT_SLEEP(TRUE)
|
||||
SHOULD_CALL_PARENT(TRUE)
|
||||
if(flags_1 & INITIALIZED_1)
|
||||
stack_trace("Warning: [src]([type]) initialized multiple times!")
|
||||
|
||||
@@ -388,7 +388,7 @@
|
||||
to_chat(occupant, "<span class='notice'><b>There is a bright flash!</b><br><i>You feel like a new being.</i></span>")
|
||||
mob_occupant.flash_act()
|
||||
|
||||
var/list/policies = CONFIG_GET(keyed_list/policyconfig)
|
||||
var/list/policies = CONFIG_GET(keyed_list/policy)
|
||||
var/policy = policies[POLICYCONFIG_ON_CLONE]
|
||||
if(policy)
|
||||
to_chat(occupant, policy)
|
||||
|
||||
@@ -296,7 +296,7 @@
|
||||
var/mob/C = pick(candidates)
|
||||
message_admins("[key_name_admin(C)] has taken control of ([key_name_admin(S)])")
|
||||
C.transfer_ckey(S, FALSE)
|
||||
var/list/policies = CONFIG_GET(keyed_list/policyconfig)
|
||||
var/list/policies = CONFIG_GET(keyed_list/policy)
|
||||
var/policy = policies[POLICYCONFIG_ON_PYROCLASTIC_SENTIENT]
|
||||
if(policy)
|
||||
to_chat(S,policy)
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
bloodiness = 0
|
||||
|
||||
/obj/effect/decal/cleanable/blood/old/Initialize(mapload, list/datum/disease/diseases)
|
||||
..()
|
||||
. = ..()
|
||||
icon_state += "-old"
|
||||
add_blood_DNA(list("Non-human DNA" = "A+"))
|
||||
|
||||
|
||||
@@ -620,7 +620,7 @@
|
||||
if(req_defib)
|
||||
if(defib.healdisk)
|
||||
H.heal_overall_damage(25, 25)
|
||||
var/list/policies = CONFIG_GET(keyed_list/policyconfig)
|
||||
var/list/policies = CONFIG_GET(keyed_list/policy)
|
||||
var/timelimit = CONFIG_GET(number/defib_cmd_time_limit) * 10 //the config is in seconds, not deciseconds
|
||||
var/late = timelimit && (tplus > timelimit)
|
||||
var/policy = late? policies[POLICYCONFIG_ON_DEFIB_LATE] : policies[POLICYCONFIG_ON_DEFIB_INTACT]
|
||||
|
||||
@@ -122,7 +122,7 @@
|
||||
/obj/item/paicard/proc/setPersonality(mob/living/silicon/pai/personality)
|
||||
src.pai = personality
|
||||
src.add_overlay("pai-null")
|
||||
var/list/policies = CONFIG_GET(keyed_list/policyconfig)
|
||||
var/list/policies = CONFIG_GET(keyed_list/policy)
|
||||
var/policy = policies[POLICYCONFIG_PAI]
|
||||
if(policy)
|
||||
to_chat(personality, policy)
|
||||
|
||||
@@ -337,7 +337,7 @@
|
||||
page_link = "Guide_to_chemistry"
|
||||
|
||||
/obj/item/book/manual/wiki/chemistry/Initialize()
|
||||
..()
|
||||
. = ..()
|
||||
new /obj/item/book/manual/wiki/cit/chemistry(loc)
|
||||
new /obj/item/book/manual/wiki/cit/chem_recipies(loc)
|
||||
|
||||
|
||||
@@ -73,14 +73,14 @@
|
||||
|
||||
/datum/block_parry_data/captain_saber
|
||||
parry_time_windup = 0
|
||||
parry_time_active = 6
|
||||
parry_time_active = 10
|
||||
parry_time_spindown = 0
|
||||
parry_time_perfect = 0.75
|
||||
parry_time_perfect_leeway = 0.75
|
||||
parry_time_perfect_leeway = 1.5
|
||||
parry_imperfect_falloff_percent = 30
|
||||
parry_efficiency_perfect = 100
|
||||
parry_failed_stagger_duration = 3 SECONDS
|
||||
parry_failed_clickcd_duration = 1 SECONDS
|
||||
parry_failed_clickcd_duration = 0
|
||||
parry_flags = PARRY_DEFAULT_HANDLE_FEEDBACK
|
||||
parry_automatic_enabled = TRUE
|
||||
|
||||
@@ -179,19 +179,23 @@
|
||||
// Fast, efficient parry.
|
||||
/datum/block_parry_data/traitor_rapier
|
||||
parry_time_windup = 0
|
||||
parry_time_active = 6
|
||||
parry_time_active = 10
|
||||
parry_time_spindown = 0
|
||||
parry_time_active_visual_override = 3
|
||||
parry_time_spindown_visual_override = 2
|
||||
parry_flags = PARRY_DEFAULT_HANDLE_FEEDBACK | PARRY_LOCK_ATTACKING
|
||||
parry_time_perfect = 1
|
||||
parry_time_perfect_leeway = 1
|
||||
parry_time_perfect = 2
|
||||
parry_time_perfect_leeway = 2
|
||||
parry_time_perfect_leeway_override = list(
|
||||
TEXT_ATTACK_TYPE_PROJECTILE = 1
|
||||
)
|
||||
parry_imperfect_falloff_percent = 30
|
||||
parry_efficiency_to_counterattack = INFINITY
|
||||
parry_efficiency_to_counterattack = 100
|
||||
parry_efficiency_considered_successful = 1
|
||||
parry_data = list(
|
||||
PARRY_KNOCKDOWN_ATTACKER = 10,
|
||||
PARRY_DISARM_ATTACKER = TRUE
|
||||
)
|
||||
parry_efficiency_perfect = 100
|
||||
parry_stamina_cost = 5
|
||||
parry_failed_stagger_duration = 2 SECONDS
|
||||
|
||||
@@ -466,7 +466,7 @@ GLOBAL_LIST_INIT(valid_plushie_paths, valid_plushie_paths())
|
||||
can_random_spawn = FALSE
|
||||
|
||||
/obj/item/toy/plush/random/Initialize()
|
||||
SHOULD_CALL_PARENT(FALSE)
|
||||
..()
|
||||
var/newtype
|
||||
var/list/snowflake_list = CONFIG_GET(keyed_list/snowflake_plushies)
|
||||
|
||||
|
||||
@@ -90,7 +90,7 @@ as performing this in action() will cause the upgrade to end up in the borg inst
|
||||
to_chat(user, "<span class='notice'>There's no room for another VTEC unit!</span>")
|
||||
return FALSE
|
||||
|
||||
//R.speed = -2 // Gotta go fast.
|
||||
//R.vtec = -2 // Gotta go fast.
|
||||
//Citadel change - makes vtecs give an ability rather than reducing the borg's speed instantly
|
||||
VC = new /obj/effect/proc_holder/silicon/cyborg/vtecControl
|
||||
R.AddAbility(VC)
|
||||
@@ -100,7 +100,7 @@ as performing this in action() will cause the upgrade to end up in the borg inst
|
||||
. = ..()
|
||||
if (.)
|
||||
R.RemoveAbility(VC)
|
||||
R.speed = initial(R.speed)
|
||||
R.vtec = initial(R.vtec)
|
||||
R.cansprint = 1
|
||||
|
||||
/obj/item/borg/upgrade/disablercooler
|
||||
@@ -690,11 +690,11 @@ as performing this in action() will cause the upgrade to end up in the borg inst
|
||||
if(istype(user))
|
||||
switch(currentState)
|
||||
if (0)
|
||||
user.speed = initial(user.speed)
|
||||
user.vtec = initial(user.vtec)
|
||||
if (1)
|
||||
user.speed = initial(user.speed) - maxReduction * 0.5
|
||||
user.vtec = initial(user.vtec) - maxReduction * 0.5
|
||||
if (2)
|
||||
user.speed = initial(user.speed) - maxReduction * 1
|
||||
user.vtec = initial(user.vtec) - maxReduction * 1
|
||||
|
||||
action.button_icon_state = "Chevron_State_[currentState]"
|
||||
action.UpdateButtonIcon()
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
amount -= max_amount
|
||||
new type(loc, max_amount, FALSE)
|
||||
if(!merge_type)
|
||||
merge_type = type
|
||||
merge_type = src.type
|
||||
|
||||
if(LAZYLEN(mats_per_unit))
|
||||
set_mats_per_unit(mats_per_unit, 1)
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 50, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 80)
|
||||
attack_speed = CLICK_CD_MELEE
|
||||
|
||||
var/stamina_loss_amount = 35
|
||||
var/stamina_loss_amount = 40
|
||||
var/turned_on = FALSE
|
||||
var/knockdown = TRUE
|
||||
/// block percent needed to prevent knockdown/disarm
|
||||
@@ -25,7 +25,7 @@
|
||||
var/hitcost = 750
|
||||
var/throw_hit_chance = 35
|
||||
var/preload_cell_type //if not empty the baton starts with this type of cell
|
||||
var/cooldown_duration = 5 SECONDS //How long our baton rightclick goes on cooldown for after applying a knockdown
|
||||
var/cooldown_duration = 3.5 SECONDS //How long our baton rightclick goes on cooldown for after applying a knockdown
|
||||
var/status_duration = 5 SECONDS //how long our status effects last for otherwise
|
||||
COOLDOWN_DECLARE(shove_cooldown)
|
||||
|
||||
|
||||
@@ -243,6 +243,32 @@
|
||||
new framestack(T, framestackamount)
|
||||
qdel(src)
|
||||
|
||||
|
||||
/**
|
||||
* Gets all connected tables
|
||||
* Cardinals only
|
||||
*/
|
||||
/obj/structure/table/proc/connected_floodfill(max = 25)
|
||||
. = list()
|
||||
connected_floodfill_internal(., list())
|
||||
|
||||
/obj/structure/table/proc/connected_floodfill_internal(list/out = list(), list/processed = list())
|
||||
if(processed[src])
|
||||
return
|
||||
processed[src] = TRUE
|
||||
out += src
|
||||
var/obj/structure/table/other
|
||||
#define RUN_TABLE(dir) \
|
||||
other = locate(/obj/structure/table) in get_step(src, dir); \
|
||||
if(other) { \
|
||||
other.connected_floodfill_internal(out, processed); \
|
||||
}
|
||||
RUN_TABLE(NORTH)
|
||||
RUN_TABLE(SOUTH)
|
||||
RUN_TABLE(EAST)
|
||||
RUN_TABLE(WEST)
|
||||
#undef RUN_TABLE
|
||||
|
||||
/obj/structure/table/greyscale
|
||||
icon = 'icons/obj/smooth_structures/table_greyscale.dmi'
|
||||
icon_state = "table"
|
||||
|
||||
@@ -15,3 +15,7 @@
|
||||
barefootstep = FOOTSTEP_WATER
|
||||
clawfootstep = FOOTSTEP_WATER
|
||||
heavyfootstep = FOOTSTEP_WATER
|
||||
|
||||
/turf/open/water/decorative
|
||||
initial_gas_mix = OPENTURF_DEFAULT_ATMOS
|
||||
planetary_atmos = FALSE
|
||||
|
||||
@@ -13,5 +13,5 @@
|
||||
|
||||
//Recover from stuns.
|
||||
/obj/effect/proc_holder/changeling/adrenaline/sting_action(mob/living/user)
|
||||
user.do_adrenaline(0, FALSE, 70, 0, TRUE, list(/datum/reagent/medicine/epinephrine = 3, /datum/reagent/drug/methamphetamine/changeling = 10, /datum/reagent/medicine/changelingadrenaline = 5), "<span class='notice'>Energy rushes through us.</span>", 0, 0.75, 0)
|
||||
user.do_adrenaline(0, FALSE, 70, 0, TRUE, list(/datum/reagent/medicine/epinephrine = 3, /datum/reagent/medicine/changelinghaste = 10, /datum/reagent/medicine/changelingadrenaline = 5), "<span class='notice'>Energy rushes through us.</span>", 0, 0.75, 0)
|
||||
return TRUE
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging
|
||||
level = 2
|
||||
var/minimum_temperature_difference = 20
|
||||
var/minimum_temperature_difference = 0.01
|
||||
var/thermal_conductivity = WINDOW_HEAT_TRANSFER_COEFFICIENT
|
||||
color = "#404040"
|
||||
buckle_lying = 1
|
||||
|
||||
@@ -433,7 +433,7 @@
|
||||
var/list/danger = list()
|
||||
for(var/id in air_contents.get_gases())
|
||||
var/gas = air_contents.get_moles(id)
|
||||
if(!GLOB.gas_data.flags[id] & GAS_FLAG_DANGEROUS)
|
||||
if(!(GLOB.gas_data.flags[id] & GAS_FLAG_DANGEROUS))
|
||||
continue
|
||||
if(gas > (GLOB.gas_data.visibility[id] || MOLES_GAS_VISIBLE)) //if moles_visible is undefined, default to default visibility
|
||||
danger[GLOB.gas_data.names[id]] = gas //ex. "plasma" = 20
|
||||
|
||||
@@ -103,14 +103,14 @@
|
||||
. = ..()
|
||||
AddElement(/datum/element/polychromic, poly_colors, 3)
|
||||
|
||||
/obj/item/clothing/neck/cancloak/polychromic
|
||||
/obj/item/clothing/neck/cloak/cancloak/polychromic
|
||||
name = "canvas cloak"
|
||||
desc = "A rugged cloak made of canvas."
|
||||
icon_state = "cancloak"
|
||||
item_state = "cloak"
|
||||
var/list/poly_colors = list("#585858", "#373737", "#BEBEBE")
|
||||
|
||||
/obj/item/clothing/neck/cancloak/polychromic/ComponentInitialize()
|
||||
/obj/item/clothing/neck/cloak/cancloak/polychromic/ComponentInitialize()
|
||||
. = ..()
|
||||
AddElement(/datum/element/polychromic, poly_colors, 3)
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ GLOBAL_LIST_INIT(hallucination_list, list(
|
||||
if(!hallucination)
|
||||
return
|
||||
|
||||
hallucination--
|
||||
hallucination = max(hallucination-1, 0)
|
||||
|
||||
if(world.time < next_hallucination)
|
||||
return
|
||||
|
||||
@@ -468,7 +468,7 @@
|
||||
/obj/item/reagent_containers/medspray/sterilizine = 1)
|
||||
|
||||
/obj/machinery/smartfridge/organ/preloaded/Initialize()
|
||||
..()
|
||||
. = ..()
|
||||
var/list = list(/obj/item/organ/tongue, /obj/item/organ/brain, /obj/item/organ/heart, /obj/item/organ/liver, /obj/item/organ/ears, /obj/item/organ/eyes, /obj/item/organ/tail, /obj/item/organ/stomach)
|
||||
var/newtype = pick(list)
|
||||
load(new newtype(src.loc))
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
/obj/item/integrated_circuit/atmospherics/Initialize()
|
||||
air_contents = new(volume)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/integrated_circuit/atmospherics/return_air()
|
||||
return air_contents
|
||||
|
||||
@@ -439,6 +439,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
||||
* * pref_load - Preferences to be loaded from character setup, loads in preferred mutant things like bodyparts, digilegs, skin color, etc.
|
||||
*/
|
||||
/datum/species/proc/on_species_gain(mob/living/carbon/C, datum/species/old_species, pref_load)
|
||||
set waitfor = FALSE
|
||||
// Drop the items the new species can't wear
|
||||
for(var/slot_id in no_equip)
|
||||
var/obj/item/thing = C.get_item_by_slot(slot_id)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/mob/living/carbon/BiologicalLife(seconds, times_fired)
|
||||
//Reagent processing needs to come before breathing, to prevent edge cases.
|
||||
handle_organs()
|
||||
handle_organs(seconds, times_fired)
|
||||
. = ..() // if . is false, we are dead.
|
||||
if(stat == DEAD)
|
||||
stop_sound_channel(CHANNEL_HEARTBEAT)
|
||||
@@ -23,7 +23,7 @@
|
||||
handle_brain_damage()
|
||||
|
||||
if(stat != DEAD)
|
||||
handle_liver()
|
||||
handle_liver(seconds, times_fired)
|
||||
|
||||
if(stat != DEAD)
|
||||
handle_corruption()
|
||||
@@ -378,25 +378,25 @@
|
||||
/mob/living/carbon/proc/handle_blood()
|
||||
return
|
||||
|
||||
/mob/living/carbon/proc/handle_bodyparts()
|
||||
/mob/living/carbon/proc/handle_bodyparts(seconds, times_fired)
|
||||
for(var/I in bodyparts)
|
||||
var/obj/item/bodypart/BP = I
|
||||
if(BP.needs_processing)
|
||||
. |= BP.on_life()
|
||||
. |= BP.on_life(seconds, times_fired)
|
||||
|
||||
/mob/living/carbon/proc/handle_organs()
|
||||
/mob/living/carbon/proc/handle_organs(seconds, times_fired)
|
||||
if(stat != DEAD)
|
||||
for(var/V in internal_organs)
|
||||
var/obj/item/organ/O = V
|
||||
if(O)
|
||||
O.on_life()
|
||||
O.on_life(seconds, times_fired)
|
||||
else
|
||||
if(reagents.has_reagent(/datum/reagent/toxin/formaldehyde, 1) || reagents.has_reagent(/datum/reagent/preservahyde, 1)) // No organ decay if the body contains formaldehyde. Or preservahyde.
|
||||
return
|
||||
for(var/V in internal_organs)
|
||||
var/obj/item/organ/O = V
|
||||
if(O)
|
||||
O.on_death() //Needed so organs decay while inside the body.
|
||||
O.on_death(seconds, times_fired) //Needed so organs decay while inside the body.
|
||||
|
||||
/mob/living/carbon/handle_diseases()
|
||||
for(var/thing in diseases)
|
||||
@@ -687,16 +687,16 @@ GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put
|
||||
//LIVER//
|
||||
/////////
|
||||
|
||||
/mob/living/carbon/proc/handle_liver()
|
||||
/mob/living/carbon/proc/handle_liver(seconds, times_fired)
|
||||
var/obj/item/organ/liver/liver = getorganslot(ORGAN_SLOT_LIVER)
|
||||
if((!dna && !liver) || (NOLIVER in dna.species.species_traits))
|
||||
return
|
||||
if(!liver || liver.organ_flags & ORGAN_FAILING)
|
||||
liver_failure()
|
||||
liver_failure(seconds, times_fired)
|
||||
|
||||
/mob/living/carbon/proc/liver_failure()
|
||||
/mob/living/carbon/proc/liver_failure(seconds, times_fired)
|
||||
reagents.end_metabolization(src, keep_liverless = TRUE) //Stops trait-based effects on reagents, to prevent permanent buffs
|
||||
reagents.metabolize(src, can_overdose=FALSE, liverless = TRUE)
|
||||
reagents.metabolize(src, seconds, times_fired, can_overdose=FALSE, liverless = TRUE)
|
||||
if(HAS_TRAIT(src, TRAIT_STABLELIVER))
|
||||
return
|
||||
adjustToxLoss(4, TRUE, TRUE)
|
||||
|
||||
@@ -173,4 +173,4 @@
|
||||
if(prob(10))
|
||||
var/obj/item/clothing/head/helmet/justice/escape/helmet = new(src)
|
||||
equip_to_slot_or_del(helmet,SLOT_HEAD)
|
||||
helmet.attack_self(src) // todo encapsulate toggle
|
||||
INVOKE_ASYNC(helmet, /obj/item.proc/attack_self, src) // todo encapsulate toggle
|
||||
|
||||
@@ -966,7 +966,8 @@
|
||||
|
||||
upgrades.Cut()
|
||||
|
||||
speed = 0
|
||||
vtec = 0
|
||||
vtec_disabled = FALSE
|
||||
ionpulse = FALSE
|
||||
revert_shell()
|
||||
|
||||
|
||||
@@ -82,6 +82,18 @@ GLOBAL_LIST_INIT(blacklisted_borg_hats, typecacheof(list( //Hats that don't real
|
||||
if(!opened)
|
||||
return ..()
|
||||
|
||||
/mob/living/silicon/robot/disarm_shove(mob/living/carbon/human/H)
|
||||
visible_message(span_danger("[src]'s motors grind as they are shoved by [H]!"))
|
||||
vtec_disable(10 SECONDS)
|
||||
|
||||
/mob/living/silicon/robot/proc/vtec_disable(time)
|
||||
var/datum/status_effect/vtec_disabled/V = has_status_effect(/datum/status_effect/vtec_disabled)
|
||||
if(V)
|
||||
V.duration = max(V.duration, world.time + time)
|
||||
else
|
||||
apply_status_effect(/datum/status_effect/vtec_disabled, time)
|
||||
update_movespeed()
|
||||
|
||||
/mob/living/silicon/robot/fire_act()
|
||||
if(!on_fire) //Silicons don't gain stacks from hotspots, but hotspots can ignite them
|
||||
IgniteMob()
|
||||
|
||||
@@ -61,7 +61,9 @@
|
||||
|
||||
var/alarms = list("Motion"=list(), "Fire"=list(), "Atmosphere"=list(), "Power"=list(), "Camera"=list(), "Burglar"=list())
|
||||
|
||||
var/speed = 0 // VTEC speed boost.
|
||||
var/vtec = 0 // VTEC speed boost.
|
||||
/// vtec shorted out
|
||||
var/vtec_disabled = FALSE
|
||||
var/magpulse = FALSE // Magboot-like effect.
|
||||
var/ionpulse = FALSE // Jetpack-like effect.
|
||||
var/ionpulse_on = FALSE // Jetpack-like effect.
|
||||
|
||||
@@ -23,4 +23,4 @@
|
||||
. = ..()
|
||||
if(!resting && !(combat_flags & COMBAT_FLAG_SPRINT_ACTIVE))
|
||||
. += 1
|
||||
. += speed
|
||||
. += vtec_disabled? 0 : vtec
|
||||
|
||||
@@ -79,6 +79,8 @@
|
||||
M.visible_message("[M] pets [src].", \
|
||||
"<span class='notice'>You pet [src].</span>", target = src,
|
||||
target_message = "[M] pets you.")
|
||||
if(INTENT_DISARM)
|
||||
disarm_shove(M)
|
||||
if(INTENT_GRAB)
|
||||
grabbedby(M)
|
||||
else
|
||||
@@ -88,6 +90,9 @@
|
||||
"<span class='warning'>[M] punches you, but doesn't leave a dent.</span>", null, COMBAT_MESSAGE_RANGE, null, M,
|
||||
"<span class='danger'>You punch [src], but don't leave a dent.</span>")
|
||||
|
||||
/mob/living/silicon/proc/disarm_shove(mob/living/carbon/human/H)
|
||||
visible_message(span_danger("[H] shoves [src], but doesn't manage to make much of an effect."))
|
||||
|
||||
/mob/living/silicon/attack_drone(mob/living/simple_animal/drone/M)
|
||||
if(M.a_intent == INTENT_HARM)
|
||||
return
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
/mob/living/simple_animal/bot/secbot/grievous/Initialize()
|
||||
. = ..()
|
||||
weapon = new baton_type(src)
|
||||
weapon.attack_self(src)
|
||||
INVOKE_ASYNC(weapon, /obj/item.proc/attack_self, src)
|
||||
|
||||
/mob/living/simple_animal/bot/secbot/grievous/Destroy()
|
||||
QDEL_NULL(weapon)
|
||||
|
||||
@@ -381,6 +381,7 @@
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/pet/dog/corgi/Ian/proc/Read_Memory()
|
||||
set waitfor = FALSE
|
||||
if(fexists("data/npc_saves/Ian.sav")) //legacy compatability to convert old format to new
|
||||
var/savefile/S = new /savefile("data/npc_saves/Ian.sav")
|
||||
S["age"] >> age
|
||||
|
||||
@@ -35,14 +35,16 @@
|
||||
coffer.Grant(src)
|
||||
riot = new /datum/action/cooldown/riot
|
||||
riot.Grant(src)
|
||||
AddElement(/datum/element/ventcrawling, given_tier = VENTCRAWLER_ALWAYS)
|
||||
INVOKE_ASYNC(src, .proc/poll_for_player)
|
||||
|
||||
/mob/living/simple_animal/hostile/regalrat/proc/poll_for_player()
|
||||
var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as the Royal Rat, cheesey be his crown?", ROLE_SENTIENCE, null, FALSE, 100, POLL_IGNORE_SENTIENCE_POTION)
|
||||
if(LAZYLEN(candidates) && !mind)
|
||||
var/mob/dead/observer/C = pick(candidates)
|
||||
key = C.key
|
||||
notify_ghosts("All rise for the rat king, ascendant to the throne in \the [get_area(src)].", source = src, action = NOTIFY_ORBIT, flashwindow = FALSE)
|
||||
|
||||
AddElement(/datum/element/ventcrawling, given_tier = VENTCRAWLER_ALWAYS)
|
||||
|
||||
/mob/living/simple_animal/hostile/regalrat/handle_automated_action()
|
||||
if(prob(20))
|
||||
riot.Trigger()
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
setup_visuals()
|
||||
|
||||
/mob/living/simple_animal/hostile/zombie/proc/setup_visuals()
|
||||
set waitfor = FALSE
|
||||
var/datum/preferences/dummy_prefs = new
|
||||
dummy_prefs.pref_species = new /datum/species/zombie
|
||||
dummy_prefs.be_random_body = TRUE
|
||||
|
||||
@@ -144,33 +144,14 @@
|
||||
message = "<span class='emote'><b>[user]</b> <i>[user.say_emphasis(message)]</i></span>"
|
||||
|
||||
var/list/show_to = list()
|
||||
var/list/processing = list()
|
||||
var/safety = 25
|
||||
var/list/processed = list()
|
||||
for(var/obj/structure/table/T in range(user, 1))
|
||||
processing |= T
|
||||
for(var/i = 1; i <= processing.len; ++i)
|
||||
var/obj/structure/table/T = processing[i]
|
||||
if(safety-- <= 0)
|
||||
to_chat(user, "Table scan aborted early, some people might have not received the message (max 25)")
|
||||
break
|
||||
if(get_dist(T, user) > 7)
|
||||
continue // nah
|
||||
processing |= T
|
||||
for(var/mob/living/M in range(T, 1)) // no ghosts/cameramobs
|
||||
show_to |= M
|
||||
var/obj/structure/table/other
|
||||
other = locate() in get_step(T, NORTH)
|
||||
if(other)
|
||||
processing |= other
|
||||
other = locate() in get_step(T, SOUTH)
|
||||
if(other)
|
||||
processing |= other
|
||||
other = locate() in get_step(T, WEST)
|
||||
if(other)
|
||||
processing |= other
|
||||
other = locate() in get_step(T, EAST)
|
||||
if(other)
|
||||
processing |= other
|
||||
if(processed[T])
|
||||
continue
|
||||
for(var/obj/structure/table/T2 in T.connected_floodfill(25))
|
||||
processed[T2] = TRUE
|
||||
for(var/mob/living/L in range(T2, 1))
|
||||
show_to |= L
|
||||
|
||||
for(var/i in show_to)
|
||||
var/mob/M = i
|
||||
|
||||
@@ -2,17 +2,53 @@
|
||||
blacklisted_movetypes = (FLYING|FLOATING)
|
||||
|
||||
/datum/movespeed_modifier/reagent/stimulants
|
||||
multiplicative_slowdown = -0.5
|
||||
multiplicative_slowdown = -0.55
|
||||
|
||||
/datum/movespeed_modifier/reagent/ephedrine
|
||||
// strong painkiller effect that caps out at slightly above runspeed
|
||||
multiplicative_slowdown = -1.5
|
||||
priority = -100
|
||||
complex_calculation = TRUE
|
||||
absolute_max_tiles_per_second = 7
|
||||
|
||||
/datum/movespeed_modifier/reagent/pepperspray
|
||||
multiplicative_slowdown = 0.25
|
||||
|
||||
/datum/movespeed_modifier/reagent/monkey_energy
|
||||
multiplicative_slowdown = -0.35
|
||||
|
||||
/datum/movespeed_modifier/reagent/changelinghaste
|
||||
multiplicative_slowdown = -2
|
||||
// extremely strong painkiller effect: allows user to run at old sprint speeds but not over by cancelling out slowdowns.
|
||||
// however, will not make user go faster than that
|
||||
multiplicative_slowdown = -4
|
||||
priority = -100
|
||||
complex_calculation = TRUE
|
||||
absolute_max_tiles_per_second = 8
|
||||
|
||||
/datum/movespeed_modifier/reagent/methamphetamine
|
||||
// very strong painkiller effect that caps out at slightly above runspeed
|
||||
multiplicative_slowdown = -2.5
|
||||
priority = -100
|
||||
complex_calculation = TRUE
|
||||
absolute_max_tiles_per_second = 7.5
|
||||
|
||||
/datum/movespeed_modifier/reagent/nitryl
|
||||
multiplicative_slowdown = -0.65
|
||||
|
||||
/datum/movespeed_modifier/reagent/freon
|
||||
multiplicative_slowdown = 1.6
|
||||
|
||||
/datum/movespeed_modifier/reagent/halon
|
||||
multiplicative_slowdown = 1.8
|
||||
|
||||
/datum/movespeed_modifier/reagent/lenturi
|
||||
multiplicative_slowdown = 1.5
|
||||
|
||||
/datum/movespeed_modifier/reagent/nuka_cola
|
||||
multiplicative_slowdown = -0.35
|
||||
|
||||
/datum/movespeed_modifier/reagent/nooartrium
|
||||
multiplicative_slowdown = 2
|
||||
|
||||
/datum/movespeed_modifier/reagent/skooma
|
||||
multiplicative_slowdown = -1
|
||||
|
||||
/datum/movespeed_modifier/reagent/nitryl
|
||||
multiplicative_slowdown = -1
|
||||
|
||||
/datum/movespeed_modifier/reagent/meth
|
||||
multiplicative_slowdown = -0.5
|
||||
absolute_max_tiles_per_second = 11
|
||||
|
||||
@@ -51,3 +51,11 @@
|
||||
|
||||
/datum/movespeed_modifier/status_effect/off_balance
|
||||
variable = TRUE
|
||||
|
||||
/datum/movespeed_modifier/status_effect/slime/light_pink
|
||||
// decently good painkiller + speedup effect
|
||||
blacklisted_movetypes = FLYING | FLOATING
|
||||
priority = -150 // someday we really need to make these defines lmao
|
||||
multiplicative_slowdown = -2
|
||||
complex_calculation = TRUE
|
||||
absolute_max_tiles_per_second = 7
|
||||
|
||||
@@ -77,6 +77,11 @@ Contents:
|
||||
cell.name = "black power cell"
|
||||
cell.icon_state = "bscell"
|
||||
|
||||
/obj/item/clothing/suit/space/space_ninja/Destroy()
|
||||
if(affecting)
|
||||
unlock_suit()
|
||||
return ..()
|
||||
|
||||
//Simply deletes all the attachments and self, killing all related procs.
|
||||
/obj/item/clothing/suit/space/space_ninja/proc/terminate()
|
||||
qdel(n_hood)
|
||||
@@ -84,7 +89,6 @@ Contents:
|
||||
qdel(n_shoes)
|
||||
qdel(src)
|
||||
|
||||
|
||||
//Randomizes suit parameters.
|
||||
/obj/item/clothing/suit/space/space_ninja/proc/randomize_param()
|
||||
s_cost = rand(1,20)
|
||||
@@ -93,7 +97,6 @@ Contents:
|
||||
s_bombs = rand(5,20)
|
||||
a_boost = rand(1,7)
|
||||
|
||||
|
||||
//This proc prevents the suit from being taken off.
|
||||
/obj/item/clothing/suit/space/space_ninja/proc/lock_suit(mob/living/carbon/human/H)
|
||||
if(!istype(H))
|
||||
@@ -113,14 +116,14 @@ Contents:
|
||||
return FALSE
|
||||
affecting = H
|
||||
ADD_TRAIT(src, TRAIT_NODROP, NINJA_SUIT_TRAIT) //colons make me go all |=
|
||||
slowdown = 0
|
||||
n_hood = H.head
|
||||
ADD_TRAIT(n_hood, TRAIT_NODROP, NINJA_SUIT_TRAIT)
|
||||
n_shoes = H.shoes
|
||||
ADD_TRAIT(n_shoes, TRAIT_NODROP, NINJA_SUIT_TRAIT)
|
||||
n_shoes.slowdown -= 0.5
|
||||
n_shoes.slowdown = -0.25
|
||||
n_gloves = H.gloves
|
||||
ADD_TRAIT(n_gloves, TRAIT_NODROP, NINJA_SUIT_TRAIT)
|
||||
ADD_TRAIT(affecting, TRAIT_TASED_RESISTANCE, NINJA_SUIT_TRAIT)
|
||||
return TRUE
|
||||
|
||||
/obj/item/clothing/suit/space/space_ninja/proc/lockIcons(mob/living/carbon/human/H)
|
||||
@@ -133,19 +136,19 @@ Contents:
|
||||
/obj/item/clothing/suit/space/space_ninja/proc/unlock_suit()
|
||||
affecting = null
|
||||
REMOVE_TRAIT(src, TRAIT_NODROP, NINJA_SUIT_TRAIT)
|
||||
slowdown = 1
|
||||
icon_state = "s-ninja"
|
||||
if(n_hood)//Should be attached, might not be attached.
|
||||
REMOVE_TRAIT(n_hood, TRAIT_NODROP, NINJA_SUIT_TRAIT)
|
||||
if(n_shoes)
|
||||
REMOVE_TRAIT(n_shoes, TRAIT_NODROP, NINJA_SUIT_TRAIT)
|
||||
n_shoes.slowdown += 0.5
|
||||
n_shoes.slowdown = 0.25
|
||||
if(n_gloves)
|
||||
n_gloves.icon_state = "s-ninja"
|
||||
n_gloves.item_state = "s-ninja"
|
||||
REMOVE_TRAIT(n_gloves, TRAIT_NODROP, NINJA_SUIT_TRAIT)
|
||||
n_gloves.candrain=0
|
||||
n_gloves.draining=0
|
||||
REMOVE_TRAIT(affecting, TRAIT_TASED_RESISTANCE, NINJA_SUIT_TRAIT)
|
||||
|
||||
|
||||
/obj/item/clothing/suit/space/space_ninja/examine(mob/user)
|
||||
|
||||
@@ -241,7 +241,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
|
||||
///How much the bullets damage should be multiplied by when it is added to the internal variables
|
||||
var/bullet_energy = 2
|
||||
///How much hallucination should we produce per unit of power?
|
||||
var/hallucination_power = 0.1
|
||||
var/hallucination_power = 0.05 // 2 seconds per second at a distance of 7 with a typical nitrogen setup
|
||||
|
||||
///Our internal radio
|
||||
var/obj/item/radio/radio
|
||||
@@ -648,6 +648,8 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
|
||||
for(var/mob/living/carbon/human/l in fov_viewers(src, HALLUCINATION_RANGE(power))) // If they can see it without mesons on. Bad on them.
|
||||
if(!istype(l.glasses, /obj/item/clothing/glasses/meson))
|
||||
var/D = sqrt(1 / max(1, get_dist(l, src)))
|
||||
if(!l.hallucination)
|
||||
to_chat(l, "<span class='warning'>Looking at the supermatter unprotected gives you a headache...</span>")
|
||||
l.hallucination += power * hallucination_power * D
|
||||
l.hallucination = clamp(l.hallucination, 0, 200)
|
||||
for(var/mob/living/l in range(src, round((power / 100) ** 0.25)))
|
||||
|
||||
@@ -114,7 +114,7 @@
|
||||
can_unsuppress = FALSE
|
||||
|
||||
/obj/item/gun/syringe/dart/Initialize()
|
||||
..()
|
||||
. = ..()
|
||||
chambered = new /obj/item/ammo_casing/syringegun/dart(src)
|
||||
|
||||
/obj/item/gun/syringe/dart/attackby(obj/item/A, mob/user, params, show_msg = TRUE)
|
||||
|
||||
@@ -31,6 +31,11 @@
|
||||
else if(tase_duration && (C.status_flags & CANKNOCKDOWN) && !HAS_TRAIT(C, TRAIT_STUNIMMUNE) && !HAS_TRAIT(C, TRAIT_TASED_RESISTANCE))
|
||||
C.apply_status_effect(strong_tase? STATUS_EFFECT_TASED : STATUS_EFFECT_TASED_WEAK, tase_duration)
|
||||
addtimer(CALLBACK(C, /mob/living/carbon.proc/do_jitter_animation, jitter), 5)
|
||||
else if(iscyborg(target))
|
||||
target.visible_message(span_danger("A shower of sparks emit from [target] on impact from [src]!"))
|
||||
do_sparks(1, TRUE, target)
|
||||
var/mob/living/silicon/robot/R = target
|
||||
R.vtec_disable(10 SECONDS)
|
||||
|
||||
/obj/item/projectile/energy/electrode/on_range() //to ensure the bolt sparks when it reaches the end of its range if it didn't hit a target yet
|
||||
do_sparks(1, TRUE, src)
|
||||
|
||||
@@ -280,71 +280,114 @@
|
||||
R.handle_reactions()
|
||||
return amount
|
||||
|
||||
/datum/reagents/proc/metabolize(mob/living/carbon/C, can_overdose = FALSE, liverless = FALSE)
|
||||
/**
|
||||
* Triggers metabolizing for all the reagents in this holder
|
||||
*
|
||||
* Arguments:
|
||||
* * mob/living/carbon/carbon - The mob to metabolize in, if null it uses [/datum/reagents/var/my_atom]
|
||||
* * delta_time - the time in server seconds between proc calls (when performing normally it will be 2)
|
||||
* * times_fired - the number of times the owner's life() tick has been called aka The number of times SSmobs has fired
|
||||
* * can_overdose - Allows overdosing
|
||||
* * liverless - Stops reagents that aren't set as [/datum/reagent/var/self_consuming] from metabolizing
|
||||
*/
|
||||
/datum/reagents/proc/metabolize(mob/living/carbon/owner, delta_time, times_fired, can_overdose = FALSE, liverless = FALSE)
|
||||
var/list/cached_reagents = reagent_list
|
||||
var/list/cached_addictions = addiction_list
|
||||
if(C)
|
||||
expose_temperature(C.bodytemperature, 0.25)
|
||||
var/need_mob_update = 0
|
||||
for(var/reagent in cached_reagents)
|
||||
var/datum/reagent/R = reagent
|
||||
if(QDELETED(R.holder))
|
||||
continue
|
||||
if(liverless && !R.self_consuming) //need to be metabolized
|
||||
continue
|
||||
if(!C)
|
||||
C = R.holder.my_atom
|
||||
if(!R.metabolizing)
|
||||
R.metabolizing = TRUE
|
||||
R.on_mob_metabolize(C)
|
||||
if(C && R)
|
||||
if(C.reagent_check(R) != 1)
|
||||
if(can_overdose)
|
||||
if(R.overdose_threshold)
|
||||
if(R.volume > R.overdose_threshold && !R.overdosed)
|
||||
R.overdosed = 1
|
||||
var/turf/CT = get_turf(C)
|
||||
log_reagent("OVERDOSE START: [key_name(C)] at [AREACOORD(CT)] started overdosing on [R.volume] units of [R].")
|
||||
need_mob_update += R.overdose_start(C)
|
||||
if(R.addiction_threshold)
|
||||
if(R.volume > R.addiction_threshold && !is_type_in_list(R, cached_addictions))
|
||||
var/datum/reagent/new_reagent = new R.type()
|
||||
cached_addictions.Add(new_reagent)
|
||||
if(R.overdosed)
|
||||
need_mob_update += R.overdose_process(C)
|
||||
if(is_type_in_list(R,cached_addictions))
|
||||
for(var/addiction in cached_addictions)
|
||||
var/datum/reagent/A = addiction
|
||||
if(istype(R, A))
|
||||
A.addiction_stage = -15 // you're satisfied for a good while.
|
||||
need_mob_update += R.on_mob_life(C)
|
||||
|
||||
if(owner)
|
||||
expose_temperature(owner.bodytemperature, 0.25)
|
||||
var/need_mob_update = FALSE
|
||||
for(var/datum/reagent/reagent as anything in cached_reagents)
|
||||
need_mob_update += metabolize_reagent(owner, reagent, delta_time, times_fired, can_overdose, liverless)
|
||||
if(can_overdose)
|
||||
if(addiction_tick == 6)
|
||||
addiction_tick = 1
|
||||
for(var/addiction in cached_addictions)
|
||||
for(var/addiction in addiction_list)
|
||||
var/datum/reagent/R = addiction
|
||||
if(C && R)
|
||||
if(owner && R)
|
||||
R.addiction_stage++
|
||||
if(1 <= R.addiction_stage && R.addiction_stage <= R.addiction_stage1_end)
|
||||
need_mob_update += R.addiction_act_stage1(C)
|
||||
need_mob_update += R.addiction_act_stage1(owner)
|
||||
else if(R.addiction_stage1_end < R.addiction_stage && R.addiction_stage <= R.addiction_stage2_end)
|
||||
need_mob_update += R.addiction_act_stage2(C)
|
||||
need_mob_update += R.addiction_act_stage2(owner)
|
||||
else if(R.addiction_stage2_end < R.addiction_stage && R.addiction_stage <= R.addiction_stage3_end)
|
||||
need_mob_update += R.addiction_act_stage3(C)
|
||||
need_mob_update += R.addiction_act_stage3(owner)
|
||||
else if(R.addiction_stage3_end < R.addiction_stage && R.addiction_stage <= R.addiction_stage4_end)
|
||||
need_mob_update += R.addiction_act_stage4(C)
|
||||
need_mob_update += R.addiction_act_stage4(owner)
|
||||
else if(R.addiction_stage4_end < R.addiction_stage)
|
||||
remove_addiction(R)
|
||||
else
|
||||
SEND_SIGNAL(C, COMSIG_CLEAR_MOOD_EVENT, "[R.type]_overdose")
|
||||
SEND_SIGNAL(owner, COMSIG_CLEAR_MOOD_EVENT, "[R.type]_overdose")
|
||||
addiction_tick++
|
||||
if(C && need_mob_update) //some of the metabolized reagents had effects on the mob that requires some updates.
|
||||
C.updatehealth()
|
||||
C.update_mobility()
|
||||
C.update_stamina()
|
||||
if(owner && need_mob_update) //some of the metabolized reagents had effects on the mob that requires some updates.
|
||||
owner.updatehealth()
|
||||
owner.update_mobility()
|
||||
owner.update_stamina()
|
||||
update_total()
|
||||
|
||||
/*
|
||||
* Metabolises a single reagent for a target owner carbon mob. See above.
|
||||
*
|
||||
* Arguments:
|
||||
* * mob/living/carbon/owner - The mob to metabolize in, if null it uses [/datum/reagents/var/my_atom]
|
||||
* * delta_time - the time in server seconds between proc calls (when performing normally it will be 2)
|
||||
* * times_fired - the number of times the owner's life() tick has been called aka The number of times SSmobs has fired
|
||||
* * can_overdose - Allows overdosing
|
||||
* * liverless - Stops reagents that aren't set as [/datum/reagent/var/self_consuming] from metabolizing
|
||||
*/
|
||||
/datum/reagents/proc/metabolize_reagent(mob/living/carbon/owner, datum/reagent/reagent, delta_time, times_fired, can_overdose = FALSE, liverless = FALSE)
|
||||
var/need_mob_update = FALSE
|
||||
if(QDELETED(reagent.holder))
|
||||
return FALSE
|
||||
|
||||
if(!owner)
|
||||
owner = reagent.holder.my_atom
|
||||
|
||||
if(owner && reagent)
|
||||
if(!owner.reagent_check(reagent, delta_time, times_fired) != TRUE)
|
||||
return
|
||||
if(liverless && !reagent.self_consuming) //need to be metabolized
|
||||
return
|
||||
if(!reagent.metabolizing)
|
||||
reagent.metabolizing = TRUE
|
||||
reagent.on_mob_metabolize(owner)
|
||||
if(can_overdose)
|
||||
if(reagent.overdose_threshold)
|
||||
if(reagent.volume >= reagent.overdose_threshold && !reagent.overdosed)
|
||||
reagent.overdosed = TRUE
|
||||
need_mob_update += reagent.overdose_start(owner)
|
||||
log_game("[key_name(owner)] has started overdosing on [reagent.name] at [reagent.volume] units.")
|
||||
|
||||
// for(var/addiction in reagent.addiction_types)
|
||||
// owner.mind?.add_addiction_points(addiction, reagent.addiction_types[addiction] * REAGENTS_METABOLISM)
|
||||
if(reagent.addiction_threshold)
|
||||
if(reagent.volume > reagent.addiction_threshold && !is_type_in_list(reagent, addiction_list))
|
||||
var/datum/reagent/new_reagent = new reagent.type()
|
||||
addiction_list.Add(new_reagent)
|
||||
if(is_type_in_list(reagent, addiction_list))
|
||||
for(var/addiction in addiction_list)
|
||||
var/datum/reagent/A = addiction
|
||||
if(istype(reagent, A))
|
||||
A.addiction_stage = -15 // you're satisfied for a good while.
|
||||
|
||||
if(reagent.overdosed)
|
||||
need_mob_update += reagent.overdose_process(owner, delta_time, times_fired)
|
||||
|
||||
need_mob_update += reagent.on_mob_life(owner, delta_time, times_fired)
|
||||
return need_mob_update
|
||||
|
||||
/// Signals that metabolization has stopped, triggering the end of trait-based effects
|
||||
/datum/reagents/proc/end_metabolization(mob/living/carbon/C, keep_liverless = TRUE)
|
||||
var/list/cached_reagents = reagent_list
|
||||
for(var/datum/reagent/reagent as anything in cached_reagents)
|
||||
if(QDELETED(reagent.holder))
|
||||
continue
|
||||
if(keep_liverless && reagent.self_consuming) //Will keep working without a liver
|
||||
continue
|
||||
if(!C)
|
||||
C = reagent.holder.my_atom
|
||||
if(reagent.metabolizing)
|
||||
reagent.metabolizing = FALSE
|
||||
reagent.on_mob_end_metabolize(C)
|
||||
|
||||
/datum/reagents/proc/remove_addiction(datum/reagent/R)
|
||||
to_chat(my_atom, "<span class='notice'>You feel like you've gotten over your need for [R.name].</span>")
|
||||
SEND_SIGNAL(my_atom, COMSIG_CLEAR_MOOD_EVENT, "[R.type]_overdose")
|
||||
@@ -354,21 +397,6 @@
|
||||
addiction_list.Remove(R)
|
||||
qdel(R)
|
||||
|
||||
//Signals that metabolization has stopped, triggering the end of trait-based effects
|
||||
/datum/reagents/proc/end_metabolization(mob/living/carbon/C, keep_liverless = TRUE)
|
||||
var/list/cached_reagents = reagent_list
|
||||
for(var/reagent in cached_reagents)
|
||||
var/datum/reagent/R = reagent
|
||||
if(QDELETED(R.holder))
|
||||
continue
|
||||
if(keep_liverless && R.self_consuming) //Will keep working without a liver
|
||||
continue
|
||||
if(!C)
|
||||
C = R.holder.my_atom
|
||||
if(R.metabolizing)
|
||||
R.metabolizing = FALSE
|
||||
R.on_mob_end_metabolize(C)
|
||||
|
||||
/datum/reagents/proc/conditional_update_move(atom/A, Running = 0)
|
||||
var/list/cached_reagents = reagent_list
|
||||
for(var/reagent in cached_reagents)
|
||||
|
||||
@@ -505,11 +505,11 @@
|
||||
value = REAGENT_VALUE_COMMON
|
||||
|
||||
/datum/reagent/consumable/nuka_cola/on_mob_metabolize(mob/living/carbon/M)
|
||||
M.add_movespeed_modifier(/datum/movespeed_modifier/reagent/meth)
|
||||
M.add_movespeed_modifier(/datum/movespeed_modifier/reagent/nuka_cola)
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/nuka_cola/on_mob_end_metabolize(mob/living/carbon/M)
|
||||
M.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/meth)
|
||||
M.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/nuka_cola)
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/nuka_cola/on_mob_life(mob/living/carbon/M)
|
||||
|
||||
@@ -164,62 +164,54 @@
|
||||
|
||||
/datum/reagent/drug/methamphetamine
|
||||
name = "Methamphetamine"
|
||||
description = "Reduces stun times by about 300%, and allows the user to quickly recover stamina while dealing a small amount of Brain damage. If overdosed the subject will move randomly, laugh randomly, drop items and suffer from Toxin and Brain damage. If addicted the subject will constantly jitter and drool, before becoming dizzy and losing motor control and eventually suffer heavy toxin damage."
|
||||
description = "Reduces stun times by about 300%, speeds the user up, and allows the user to quickly recover stamina while dealing a small amount of Brain damage. If overdosed the subject will move randomly, laugh randomly, drop items and suffer from Toxin and Brain damage. If addicted the subject will constantly jitter and drool, before becoming dizzy and losing motor control and eventually suffer heavy toxin damage."
|
||||
reagent_state = LIQUID
|
||||
color = "#FAFAFA"
|
||||
overdose_threshold = 20
|
||||
addiction_threshold = 10
|
||||
metabolization_rate = 0.75 * REAGENTS_METABOLISM
|
||||
var/brain_damage = TRUE
|
||||
var/jitter = TRUE
|
||||
var/confusion = TRUE
|
||||
pH = 5
|
||||
addiction_threshold = 10
|
||||
value = REAGENT_VALUE_UNCOMMON
|
||||
|
||||
/datum/reagent/drug/methamphetamine/on_mob_metabolize(mob/living/L)
|
||||
..()
|
||||
ADD_TRAIT(L, TRAIT_IGNOREDAMAGESLOWDOWN, type)
|
||||
L.update_movespeed()
|
||||
ADD_TRAIT(L, TRAIT_TASED_RESISTANCE, type)
|
||||
L.add_movespeed_modifier(/datum/movespeed_modifier/reagent/meth)
|
||||
L.add_movespeed_modifier(/datum/movespeed_modifier/reagent/methamphetamine)
|
||||
|
||||
/datum/reagent/drug/methamphetamine/on_mob_end_metabolize(mob/living/L)
|
||||
REMOVE_TRAIT(L, TRAIT_IGNOREDAMAGESLOWDOWN, type)
|
||||
L.update_movespeed()
|
||||
REMOVE_TRAIT(L, TRAIT_TASED_RESISTANCE, type)
|
||||
L.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/meth)
|
||||
L.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/methamphetamine)
|
||||
..()
|
||||
|
||||
/datum/reagent/drug/methamphetamine/on_mob_life(mob/living/carbon/M)
|
||||
/datum/reagent/drug/methamphetamine/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
|
||||
var/high_message = pick("You feel hyper.", "You feel like you need to go faster.", "You feel like you can run the world.")
|
||||
if(prob(5))
|
||||
to_chat(M, "<span class='notice'>[high_message]</span>")
|
||||
M.AdjustAllImmobility(-40, 0)
|
||||
M.AdjustUnconscious(-40, 0)
|
||||
M.adjustStaminaLoss(-7.5 * REM, 0)
|
||||
if(jitter)
|
||||
M.Jitter(2)
|
||||
if(brain_damage)
|
||||
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, rand(1,4))
|
||||
M.heal_overall_damage(2, 2)
|
||||
if(prob(5))
|
||||
if(DT_PROB(2.5, delta_time))
|
||||
to_chat(M, span_notice("[high_message]"))
|
||||
// SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "tweaking", /datum/mood_event/stimulant_medium, name)
|
||||
M.AdjustStun(-40 * REM * delta_time)
|
||||
M.AdjustKnockdown(-40 * REM * delta_time)
|
||||
M.AdjustUnconscious(-40 * REM * delta_time)
|
||||
M.AdjustParalyzed(-40 * REM * delta_time)
|
||||
M.AdjustImmobilized(-40 * REM * delta_time)
|
||||
M.adjustStaminaLoss(-2 * REM * delta_time, 0)
|
||||
M.Jitter(2 * REM * delta_time)
|
||||
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, rand(1, 4) * REM * delta_time)
|
||||
if(DT_PROB(2.5, delta_time))
|
||||
M.emote(pick("twitch", "shiver"))
|
||||
..()
|
||||
. = 1
|
||||
. = TRUE
|
||||
|
||||
/datum/reagent/drug/methamphetamine/overdose_process(mob/living/M)
|
||||
/datum/reagent/drug/methamphetamine/overdose_process(mob/living/M, delta_time, times_fired)
|
||||
if(CHECK_MOBILITY(M, MOBILITY_MOVE) && !ismovable(M.loc))
|
||||
for(var/i in 1 to 4)
|
||||
for(var/i in 1 to round(4 * REM * delta_time, 1))
|
||||
step(M, pick(GLOB.cardinals))
|
||||
if(prob(20))
|
||||
if(DT_PROB(10, delta_time))
|
||||
M.emote("laugh")
|
||||
if(prob(33))
|
||||
M.visible_message("<span class='danger'>[M]'s hands flip out and flail everywhere!</span>")
|
||||
if(DT_PROB(18, delta_time))
|
||||
M.visible_message(span_danger("[M]'s hands flip out and flail everywhere!"))
|
||||
M.drop_all_held_items()
|
||||
..()
|
||||
M.adjustToxLoss(1, 0)
|
||||
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, pick(0.5, 0.6, 0.7, 0.8, 0.9, 1))
|
||||
. = 1
|
||||
M.adjustToxLoss(1 * REM * delta_time, 0)
|
||||
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, (rand(5, 10) / 10) * REM * delta_time)
|
||||
. = TRUE
|
||||
|
||||
/datum/reagent/drug/methamphetamine/addiction_act_stage1(mob/living/M)
|
||||
M.Jitter(5)
|
||||
@@ -256,14 +248,6 @@
|
||||
..()
|
||||
. = 1
|
||||
|
||||
/datum/reagent/drug/methamphetamine/changeling
|
||||
name = "Changeling Adrenaline"
|
||||
addiction_threshold = 35
|
||||
overdose_threshold = 35
|
||||
jitter = FALSE
|
||||
brain_damage = FALSE
|
||||
value = REAGENT_VALUE_RARE
|
||||
|
||||
/datum/reagent/drug/bath_salts
|
||||
name = "Bath Salts"
|
||||
description = "Makes you impervious to stuns and grants a stamina regeneration buff, but you will be a nearly uncontrollable tramp-bearded raving lunatic."
|
||||
|
||||
@@ -345,6 +345,8 @@
|
||||
victim.confused = max(M.confused, 3)
|
||||
victim.damageoverlaytemp = 60
|
||||
victim.DefaultCombatKnockdown(80, override_hardstun = 0.1, override_stamdmg = min(reac_volume * 3, 15))
|
||||
victim.add_movespeed_modifier(/datum/movespeed_modifier/reagent/pepperspray)
|
||||
addtimer(CALLBACK(victim, /mob.proc/remove_movespeed_modifier, /datum/movespeed_modifier/reagent/pepperspray), 10 SECONDS)
|
||||
return
|
||||
else if ( eyes_covered ) // Eye cover is better than mouth cover
|
||||
victim.blur_eyes(3)
|
||||
@@ -358,6 +360,8 @@
|
||||
victim.confused = max(M.confused, 6)
|
||||
victim.damageoverlaytemp = 75
|
||||
victim.DefaultCombatKnockdown(80, override_hardstun = 0.1, override_stamdmg = min(reac_volume * 5, 25))
|
||||
victim.add_movespeed_modifier(/datum/movespeed_modifier/reagent/pepperspray)
|
||||
addtimer(CALLBACK(victim, /mob.proc/remove_movespeed_modifier, /datum/movespeed_modifier/reagent/pepperspray), 10 SECONDS)
|
||||
victim.update_damage_hud()
|
||||
|
||||
/datum/reagent/consumable/condensedcapsaicin/on_mob_life(mob/living/carbon/M)
|
||||
|
||||
@@ -706,21 +706,42 @@
|
||||
addiction_threshold = 30
|
||||
pH = 12
|
||||
|
||||
/datum/reagent/medicine/ephedrine/on_mob_life(mob/living/carbon/M)
|
||||
M.AdjustAllImmobility(-20, FALSE)
|
||||
M.AdjustUnconscious(-20, FALSE)
|
||||
M.adjustStaminaLoss(-4.5*REM, FALSE)
|
||||
M.Jitter(10)
|
||||
if(prob(50))
|
||||
M.confused = max(M.confused, 1)
|
||||
/datum/reagent/medicine/ephedrine/on_mob_metabolize(mob/living/L)
|
||||
..()
|
||||
L.add_movespeed_modifier(/datum/movespeed_modifier/reagent/ephedrine)
|
||||
ADD_TRAIT(L, TRAIT_TASED_RESISTANCE, type)
|
||||
|
||||
/datum/reagent/medicine/ephedrine/on_mob_end_metabolize(mob/living/L)
|
||||
L.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/ephedrine)
|
||||
REMOVE_TRAIT(L, TRAIT_TASED_RESISTANCE, type)
|
||||
..()
|
||||
|
||||
/datum/reagent/medicine/ephedrine/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
|
||||
// if(DT_PROB(10 * (1-creation_purity), delta_time) && iscarbon(M))
|
||||
// var/obj/item/I = M.get_active_held_item()
|
||||
// if(I && M.dropItemToGround(I))
|
||||
// to_chat(M, span_notice("Your hands spaz out and you drop what you were holding!"))
|
||||
// M.Jitter(10)
|
||||
|
||||
M.AdjustAllImmobility(-20 * REM * delta_time)
|
||||
M.adjustStaminaLoss(-1 * REM * delta_time, FALSE)
|
||||
..()
|
||||
return TRUE
|
||||
|
||||
/datum/reagent/medicine/ephedrine/overdose_process(mob/living/M)
|
||||
if(prob(33))
|
||||
M.adjustToxLoss(0.5*REM, 0)
|
||||
/datum/reagent/medicine/ephedrine/overdose_process(mob/living/M, delta_time, times_fired)
|
||||
if(DT_PROB(1, delta_time) && iscarbon(M))
|
||||
var/datum/disease/D = new /datum/disease/heart_failure
|
||||
M.ForceContractDisease(D)
|
||||
to_chat(M, span_userdanger("You're pretty sure you just felt your heart stop for a second there.."))
|
||||
M.playsound_local(M, 'sound/effects/singlebeat.ogg', 100, 0)
|
||||
|
||||
if(DT_PROB(3.5, delta_time))
|
||||
to_chat(M, span_notice("[pick("Your head pounds.", "You feel a tight pain in your chest.", "You find it hard to stay still.", "You feel your heart practically beating out of your chest.")]"))
|
||||
|
||||
if(DT_PROB(18, delta_time))
|
||||
M.adjustToxLoss(1, 0)
|
||||
M.losebreath++
|
||||
. = 1
|
||||
. = TRUE
|
||||
return TRUE
|
||||
|
||||
/datum/reagent/medicine/ephedrine/addiction_act_stage1(mob/living/M)
|
||||
@@ -981,7 +1002,7 @@
|
||||
M.grab_ghost()
|
||||
M.emote("gasp")
|
||||
log_combat(M, M, "revived", src)
|
||||
var/list/policies = CONFIG_GET(keyed_list/policyconfig)
|
||||
var/list/policies = CONFIG_GET(keyed_list/policy)
|
||||
var/timelimit = CONFIG_GET(number/defib_cmd_time_limit) * 10 //the config is in seconds, not deciseconds
|
||||
var/late = timelimit && (tplus > timelimit)
|
||||
var/policy = late? policies[POLICYCONFIG_ON_DEFIB_LATE] : policies[POLICYCONFIG_ON_DEFIB_INTACT]
|
||||
@@ -1415,37 +1436,42 @@
|
||||
/datum/reagent/medicine/changelingadrenaline
|
||||
name = "Changeling Adrenaline"
|
||||
description = "Reduces the duration of unconciousness, knockdown and stuns. Restores stamina, but deals toxin damage when overdosed."
|
||||
color = "#918e53"
|
||||
color = "#C1151D"
|
||||
overdose_threshold = 30
|
||||
value = REAGENT_VALUE_VERY_RARE
|
||||
|
||||
/datum/reagent/medicine/changelingadrenaline/on_mob_metabolize(mob/living/L)
|
||||
..()
|
||||
ADD_TRAIT(L, TRAIT_TASED_RESISTANCE, type)
|
||||
|
||||
/datum/reagent/medicine/changelingadrenaline/on_mob_end_metabolize(mob/living/L)
|
||||
REMOVE_TRAIT(L, TRAIT_TASED_RESISTANCE, type)
|
||||
..()
|
||||
|
||||
/datum/reagent/medicine/changelingadrenaline/on_mob_life(mob/living/carbon/M as mob)
|
||||
M.AdjustUnconscious(-20, 0)
|
||||
M.AdjustAllImmobility(-20, 0)
|
||||
M.AdjustSleeping(-20, 0)
|
||||
M.adjustStaminaLoss(-30, 0)
|
||||
/datum/reagent/medicine/changelingadrenaline/on_mob_life(mob/living/carbon/metabolizer, delta_time, times_fired)
|
||||
..()
|
||||
metabolizer.AdjustAllImmobility(-20 * REM * delta_time)
|
||||
metabolizer.adjustStaminaLoss(-10 * REM * delta_time, 0)
|
||||
metabolizer.Jitter(10 * REM * delta_time)
|
||||
metabolizer.Dizzy(10 * REM * delta_time)
|
||||
return TRUE
|
||||
|
||||
/datum/reagent/medicine/changelingadrenaline/overdose_process(mob/living/M as mob)
|
||||
M.adjustToxLoss(5, 0) //let's make this mildly more toxic because of the stamina buff
|
||||
/datum/reagent/medicine/changelingadrenaline/on_mob_metabolize(mob/living/L)
|
||||
..()
|
||||
ADD_TRAIT(L, TRAIT_SLEEPIMMUNE, type)
|
||||
ADD_TRAIT(L, TRAIT_TASED_RESISTANCE, type)
|
||||
L.add_movespeed_mod_immunities(type, /datum/movespeed_modifier/damage_slowdown)
|
||||
|
||||
/datum/reagent/medicine/changelingadrenaline/on_mob_end_metabolize(mob/living/L)
|
||||
..()
|
||||
REMOVE_TRAIT(L, TRAIT_SLEEPIMMUNE, type)
|
||||
REMOVE_TRAIT(L, TRAIT_TASED_RESISTANCE, type)
|
||||
L.remove_movespeed_mod_immunities(type, /datum/movespeed_modifier/damage_slowdown)
|
||||
L.Dizzy(0)
|
||||
L.Jitter(0)
|
||||
|
||||
/datum/reagent/medicine/changelingadrenaline/overdose_process(mob/living/metabolizer, delta_time, times_fired)
|
||||
metabolizer.adjustToxLoss(1 * REM * delta_time, 0)
|
||||
..()
|
||||
return TRUE
|
||||
|
||||
/datum/reagent/medicine/changelinghaste
|
||||
name = "Changeling Haste"
|
||||
description = "Drastically increases movement speed, but deals toxin damage."
|
||||
color = "#669153"
|
||||
metabolization_rate = 1
|
||||
value = REAGENT_VALUE_VERY_RARE
|
||||
color = "#AE151D"
|
||||
metabolization_rate = 2.5 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/medicine/changelinghaste/on_mob_metabolize(mob/living/L)
|
||||
..()
|
||||
@@ -1455,11 +1481,12 @@
|
||||
L.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/changelinghaste)
|
||||
..()
|
||||
|
||||
/datum/reagent/medicine/changelinghaste/on_mob_life(mob/living/carbon/M)
|
||||
M.adjustToxLoss(2, 0)
|
||||
/datum/reagent/medicine/changelinghaste/on_mob_life(mob/living/carbon/metabolizer, delta_time, times_fired)
|
||||
metabolizer.adjustToxLoss(2 * REM * delta_time, 0)
|
||||
..()
|
||||
return TRUE
|
||||
|
||||
|
||||
/datum/reagent/medicine/corazone
|
||||
// Heart attack code will not do damage if corazone is present
|
||||
// because it's SPACE MAGIC ASPIRIN
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
return ..()
|
||||
|
||||
/obj/machinery/rnd/production/proc/update_research()
|
||||
set waitfor = FALSE
|
||||
host_research.copy_research_to(stored_research, TRUE)
|
||||
update_designs()
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
display_name = "Nanite Replication Protocols"
|
||||
description = "Advanced behaviours that allow nanites to exploit certain circumstances to replicate faster."
|
||||
prereq_ids = list("nanite_smart")
|
||||
design_ids = list("kickstart_nanites","factory_nanites","tinker_nanites","offline_nanites","synergy_nanites")
|
||||
design_ids = list("kickstart_nanites","factory_nanites","offline_nanites","synergy_nanites")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000)
|
||||
hidden = TRUE
|
||||
experimental = TRUE
|
||||
|
||||
@@ -704,16 +704,20 @@
|
||||
/datum/status_effect/stabilized/sepia
|
||||
id = "stabilizedsepia"
|
||||
colour = "sepia"
|
||||
var/mod = 0
|
||||
var/list/possible = list(
|
||||
-0.5,
|
||||
-0.25,
|
||||
0,
|
||||
0.5,
|
||||
1
|
||||
)
|
||||
|
||||
/datum/status_effect/stabilized/sepia/New(list/arguments)
|
||||
. = ..()
|
||||
possible = typelist(NAMEOF(src, possible), possible)
|
||||
|
||||
/datum/status_effect/stabilized/sepia/tick()
|
||||
if(prob(50) && mod > -1)
|
||||
mod--
|
||||
owner.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/status_effect/sepia, multiplicative_slowdown = 1)
|
||||
else if(mod < 1)
|
||||
mod++
|
||||
// yeah a value of 0 does nothing but replacing the trait in place is cheaper than removing and adding repeatedly
|
||||
owner.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/status_effect/sepia, multiplicative_slowdown = 0)
|
||||
owner.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/status_effect/sepia, multiplicative_slowdown = safepick(possible))
|
||||
return ..()
|
||||
|
||||
/datum/status_effect/stabilized/sepia/on_remove()
|
||||
@@ -934,6 +938,7 @@
|
||||
|
||||
/datum/status_effect/stabilized/lightpink/on_apply()
|
||||
ADD_TRAIT(owner, TRAIT_FREESPRINT, "stabilized_slime")
|
||||
owner.add_movespeed_modifier(/datum/movespeed_modifier/status_effect/slime/light_pink)
|
||||
return ..()
|
||||
|
||||
/datum/status_effect/stabilized/lightpink/tick()
|
||||
@@ -945,6 +950,7 @@
|
||||
|
||||
/datum/status_effect/stabilized/lightpink/on_remove()
|
||||
REMOVE_TRAIT(owner, TRAIT_FREESPRINT, "stabilized_slime")
|
||||
owner.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/slime/light_pink)
|
||||
return ..()
|
||||
|
||||
/datum/status_effect/stabilized/adamantine
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
for(var/obj/item/organ/O in target.internal_organs)//zap those buggers back to life!
|
||||
if(O.organ_flags & ORGAN_FAILING)
|
||||
O.applyOrganDamage(-5)
|
||||
var/list/policies = CONFIG_GET(keyed_list/policyconfig)
|
||||
var/list/policies = CONFIG_GET(keyed_list/policy)
|
||||
var/timelimit = CONFIG_GET(number/defib_cmd_time_limit) * 10 //the config is in seconds, not deciseconds
|
||||
var/late = timelimit && (tplus > timelimit)
|
||||
var/policy = late? policies[POLICYCONFIG_ON_DEFIB_LATE] : policies[POLICYCONFIG_ON_DEFIB_INTACT]
|
||||
|
||||
@@ -188,7 +188,7 @@
|
||||
needs_processing = .
|
||||
|
||||
//Return TRUE to get whatever mob this is in to update health.
|
||||
/obj/item/bodypart/proc/on_life()
|
||||
/obj/item/bodypart/proc/on_life(seconds, times_fired)
|
||||
if(stam_heal_tick && stamina_dam > DAMAGE_PRECISION) //DO NOT update health here, it'll be done in the carbon's life.
|
||||
if(heal_damage(brute = 0, burn = 0, stamina = (stam_heal_tick * (disabled ? 2 : 1)), only_robotic = FALSE, only_organic = FALSE, updating_health = FALSE))
|
||||
. |= BODYPART_LIFE_UPDATE_HEALTH
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
if(target.revive())
|
||||
target.visible_message("...[target]'s posibrain flickers to life once again!")
|
||||
target.emote("ping")
|
||||
var/list/policies = CONFIG_GET(keyed_list/policyconfig)
|
||||
var/list/policies = CONFIG_GET(keyed_list/policy)
|
||||
var/timelimit = CONFIG_GET(number/defib_cmd_time_limit) * 10 //the config is in seconds, not deciseconds
|
||||
var/late = timelimit && (tplus > timelimit)
|
||||
var/policy = late? policies[POLICYCONFIG_ON_DEFIB_LATE] : policies[POLICYCONFIG_ON_DEFIB_INTACT]
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
var/cachedmoveCalc = 1
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/iron = 5)
|
||||
|
||||
/obj/item/organ/liver/on_life()
|
||||
/obj/item/organ/liver/on_life(seconds, times_fired)
|
||||
. = ..()
|
||||
if(!. || !owner)//can't process reagents with a failing liver
|
||||
return
|
||||
@@ -40,7 +40,7 @@
|
||||
damage += (thisamount*toxLethality)
|
||||
|
||||
//metabolize reagents
|
||||
owner.reagents.metabolize(owner, can_overdose=TRUE)
|
||||
owner.reagents.metabolize(owner, seconds, times_fired, can_overdose=TRUE)
|
||||
|
||||
if(damage > 10 && prob(damage/3))//the higher the damage the higher the probability
|
||||
to_chat(owner, "<span class='warning'>You feel a dull pain in your abdomen.</span>")
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user