Merge remote-tracking branch 'upstream/master' into FERMICHEMCurTweaks

This commit is contained in:
Fermi
2019-09-03 20:33:33 +01:00
302 changed files with 9402 additions and 5056 deletions
@@ -167,7 +167,7 @@
/obj/item/book/manual/wiki/barman_recipes,
/obj/item/book/granter/action/drink_fling,
/obj/item/reagent_containers/food/drinks/shaker,
/obj/item/reagent_containers/glass/rag,
/obj/item/reagent_containers/rag,
/turf/open/floor/wood,
/area/ruin/powered/beach)
"aI" = (
@@ -161,7 +161,7 @@
/turf/open/floor/plasteel/white,
/area/ruin/powered/animal_hospital)
"av" = (
/obj/item/reagent_containers/glass/rag,
/obj/item/reagent_containers/rag,
/obj/item/reagent_containers/spray/cleaner,
/obj/effect/turf_decal/tile/blue{
dir = 1
@@ -4728,7 +4728,7 @@
/area/ruin/unpowered/syndicate_lava_base/bar)
"lz" = (
/obj/structure/table/wood,
/obj/item/reagent_containers/glass/rag{
/obj/item/reagent_containers/rag{
pixel_x = -4;
pixel_y = 9
},
@@ -0,0 +1,582 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"a" = (
/turf/template_noop,
/area/template_noop)
"b" = (
/turf/closed/wall,
/area/ruin/space/has_grav/powered/advancedlab)
"c" = (
/obj/structure/fans/tiny,
/obj/machinery/door/airlock/external,
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/powered/advancedlab)
"d" = (
/obj/machinery/vending/assist,
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/powered/advancedlab)
"e" = (
/obj/machinery/vending/snack/random,
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/powered/advancedlab)
"f" = (
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/powered/advancedlab)
"g" = (
/obj/machinery/light{
dir = 1
},
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/powered/advancedlab)
"h" = (
/obj/structure/table/glass,
/obj/item/crowbar/advanced,
/obj/item/multitool/advanced{
pixel_x = 4;
pixel_y = -1
},
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/powered/advancedlab)
"i" = (
/obj/machinery/computer/rdconsole,
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/powered/advancedlab)
"j" = (
/obj/structure/chair/comfy/beige,
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/powered/advancedlab)
"k" = (
/obj/structure/table/glass,
/obj/item/screwdriver/advanced{
pixel_y = 8
},
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/powered/advancedlab)
"l" = (
/obj/structure/table/glass,
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/powered/advancedlab)
"m" = (
/obj/structure/table/glass,
/obj/item/gps{
gpstag = "Abductor Replication Lab";
pixel_x = -2;
pixel_y = 3
},
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/powered/advancedlab)
"n" = (
/obj/structure/chair/comfy/beige{
icon_state = "comfychair";
dir = 8
},
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/powered/advancedlab)
"o" = (
/obj/structure/table/glass,
/obj/item/weldingtool/advanced{
pixel_x = 4;
pixel_y = 4
},
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/powered/advancedlab)
"p" = (
/obj/machinery/light{
dir = 1
},
/obj/structure/table/glass,
/obj/item/paper{
name = "Note to finder";
pixel_x = -1;
pixel_y = 3;
info = "As of yet, our experiments have seen a fair bit of success. Unfortunately, our business partners have stopped funding us as they realised they utterly hate each other. To whoever finds this place, they are yours. Use them how you will. I leave you with the next generation of greytiding."
},
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/powered/advancedlab)
"q" = (
/obj/machinery/light{
dir = 8
},
/obj/structure/table/glass,
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/powered/advancedlab)
"r" = (
/obj/structure/table/glass,
/obj/item/wirecutters/advanced{
pixel_y = 7
},
/obj/item/wrench/advanced{
pixel_x = -1;
pixel_y = 3
},
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/powered/advancedlab)
"s" = (
/obj/structure/chair/comfy/beige{
icon_state = "comfychair";
dir = 1
},
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/powered/advancedlab)
"t" = (
/obj/machinery/light/small,
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/powered/advancedlab)
"u" = (
/obj/machinery/light/small{
icon_state = "bulb";
dir = 4
},
/obj/structure/closet,
/obj/item/clothing/suit/hooded/wintercoat/miner,
/obj/item/clothing/shoes/sneakers/brown,
/obj/item/clothing/under/pants/classicjeans,
/obj/item/clothing/neck/scarf,
/obj/item/clothing/neck/stripedgreenscarf,
/obj/item/toy/tennis/rainbow,
/obj/item/toy/tennis,
/obj/item/clothing/suit/hooded/wintercoat/miner,
/obj/item/clothing/shoes/sneakers/brown,
/obj/item/clothing/under/pants/classicjeans,
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/powered/advancedlab)
"v" = (
/obj/machinery/vending/boozeomat{
req_access = null;
shut_up = 1
},
/turf/closed/wall,
/area/ruin/space/has_grav/powered/advancedlab)
"w" = (
/obj/machinery/door/airlock/command{
name = "Dorms"
},
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/powered/advancedlab)
"x" = (
/obj/machinery/light{
dir = 4
},
/obj/structure/table/glass,
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/powered/advancedlab)
"y" = (
/obj/machinery/light/small{
icon_state = "bulb";
dir = 1
},
/turf/open/floor/wood,
/area/ruin/space/has_grav/powered/advancedlab)
"z" = (
/obj/machinery/door/airlock/security{
name = "Visiting Business Partners"
},
/turf/open/floor/wood,
/area/ruin/space/has_grav/powered/advancedlab)
"A" = (
/turf/open/floor/wood,
/area/ruin/space/has_grav/powered/advancedlab)
"B" = (
/obj/structure/bed,
/obj/item/bedsheet/syndie,
/turf/open/floor/wood,
/area/ruin/space/has_grav/powered/advancedlab)
"C" = (
/obj/structure/closet{
name = "Clothes"
},
/obj/item/clothing/head/chameleon,
/obj/item/clothing/gloves/combat,
/obj/item/clothing/suit/chameleon,
/obj/item/clothing/under/chameleon,
/obj/item/clothing/shoes/chameleon,
/turf/open/floor/wood,
/area/ruin/space/has_grav/powered/advancedlab)
"D" = (
/obj/machinery/light/small,
/turf/open/floor/wood,
/area/ruin/space/has_grav/powered/advancedlab)
"E" = (
/obj/structure/table/wood,
/obj/item/radio/headset/chameleon,
/turf/open/floor/wood,
/area/ruin/space/has_grav/powered/advancedlab)
"F" = (
/obj/structure/falsewall,
/turf/open/floor/wood,
/area/ruin/space/has_grav/powered/advancedlab)
"G" = (
/obj/structure/table/wood,
/turf/open/floor/wood,
/area/ruin/space/has_grav/powered/advancedlab)
"H" = (
/obj/structure/table/wood,
/obj/item/radio/headset/headset_cent/alt{
keyslot2 = null
},
/turf/open/floor/wood,
/area/ruin/space/has_grav/powered/advancedlab)
"I" = (
/obj/structure/closet{
name = "Official Clothing"
},
/obj/item/clothing/under/rank/centcom_commander,
/obj/item/clothing/head/centhat,
/obj/item/clothing/gloves/combat,
/obj/item/clothing/suit/armor/vest,
/obj/item/clothing/shoes/sneakers/brown,
/turf/open/floor/wood,
/area/ruin/space/has_grav/powered/advancedlab)
"J" = (
/obj/machinery/door/airlock/command{
name = "Dorms"
},
/turf/open/floor/wood,
/area/ruin/space/has_grav/powered/advancedlab)
"K" = (
/obj/machinery/door/airlock/command{
name = "Visiting Officials"
},
/turf/open/floor/wood,
/area/ruin/space/has_grav/powered/advancedlab)
"L" = (
/obj/structure/bed,
/obj/item/bedsheet/centcom,
/turf/open/floor/wood,
/area/ruin/space/has_grav/powered/advancedlab)
"M" = (
/obj/structure/lattice,
/obj/effect/spawner/structure/window/reinforced,
/turf/open/space/basic,
/area/ruin/space/has_grav/powered/advancedlab)
"N" = (
/obj/structure/extinguisher_cabinet,
/turf/closed/wall,
/area/ruin/space/has_grav/powered/advancedlab)
"O" = (
/obj/structure/reagent_dispensers/water_cooler,
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/powered/advancedlab)
"P" = (
/obj/structure/lattice,
/turf/template_noop,
/area/space/nearstation)
"Q" = (
/obj/machinery/light/small{
dir = 4
},
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/powered/advancedlab)
"R" = (
/obj/machinery/light/small{
icon_state = "bulb";
dir = 1
},
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/powered/advancedlab)
"T" = (
/obj/machinery/light/small{
dir = 4
},
/turf/open/floor/wood,
/area/ruin/space/has_grav/powered/advancedlab)
(1,1,1) = {"
a
b
b
b
b
b
b
b
b
a
a
a
a
a
a
a
a
a
"}
(2,1,1) = {"
a
b
d
j
l
q
s
O
b
a
a
a
a
a
a
a
a
a
"}
(3,1,1) = {"
a
b
e
j
m
l
s
f
b
a
a
a
a
a
a
a
a
a
"}
(4,1,1) = {"
a
c
f
j
l
l
s
f
M
M
M
M
M
M
a
a
a
a
"}
(5,1,1) = {"
a
b
f
f
n
n
f
f
w
f
Q
f
f
M
a
a
a
a
"}
(6,1,1) = {"
a
b
f
f
f
f
f
f
M
M
M
M
f
M
a
a
a
a
"}
(7,1,1) = {"
a
b
g
f
f
f
f
f
b
P
P
M
R
M
a
a
a
a
"}
(8,1,1) = {"
a
N
f
f
f
f
f
u
b
P
P
M
f
M
a
a
a
a
"}
(9,1,1) = {"
a
b
f
f
f
f
f
b
b
b
b
M
J
M
b
a
a
a
"}
(10,1,1) = {"
a
b
h
k
o
r
f
b
y
A
A
F
T
A
b
a
a
a
"}
(11,1,1) = {"
a
b
i
f
f
f
t
b
z
v
b
b
b
K
b
a
a
a
"}
(12,1,1) = {"
a
b
p
f
f
f
f
b
A
C
b
G
A
A
b
a
a
a
"}
(13,1,1) = {"
a
b
l
l
x
l
f
b
A
D
b
H
A
D
b
a
a
a
"}
(14,1,1) = {"
a
b
b
b
b
b
b
b
B
E
b
I
A
L
b
a
a
a
"}
(15,1,1) = {"
a
a
a
a
a
a
a
b
b
b
b
b
b
b
b
a
a
a
"}
+1 -1
View File
@@ -260,7 +260,7 @@
/turf/open/floor/plating/asteroid/airless,
/area/ruin/unpowered/no_grav)
"aQ" = (
/obj/item/reagent_containers/glass/rag,
/obj/item/reagent_containers/rag,
/turf/open/floor/plating/asteroid/airless,
/area/ruin/unpowered/no_grav)
"aR" = (
+13 -13
View File
@@ -103,7 +103,7 @@
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/lizard,
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/lizard,
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/lizard,
/turf/open/floor/plasteel/airless/dark,
/turf/open/floor/plasteel/freezer,
/area/ruin/space/has_grav/gasthelizard)
"n" = (
/obj/structure/closet/crate/freezer,
@@ -117,7 +117,7 @@
},
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/lizard,
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/lizard,
/turf/open/floor/plasteel/airless/dark,
/turf/open/floor/plasteel/freezer,
/area/ruin/space/has_grav/gasthelizard)
"o" = (
/obj/structure/closet/crate/freezer,
@@ -129,7 +129,7 @@
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/lizard,
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/lizard,
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/lizard,
/turf/open/floor/plasteel/airless/dark,
/turf/open/floor/plasteel/freezer,
/area/ruin/space/has_grav/gasthelizard)
"p" = (
/obj/structure/window/reinforced{
@@ -158,7 +158,7 @@
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/gasthelizard)
"r" = (
/turf/open/floor/plasteel/airless/dark,
/turf/open/floor/plasteel/dark,
/area/ruin/space/has_grav/gasthelizard)
"s" = (
/obj/machinery/atmospherics/components/unary/portables_connector/visible{
@@ -203,14 +203,14 @@
/area/ruin/space/has_grav/gasthelizard)
"x" = (
/obj/structure/kitchenspike,
/turf/open/floor/plasteel/airless/dark,
/turf/open/floor/plasteel/dark,
/area/ruin/space/has_grav/gasthelizard)
"y" = (
/obj/structure/table/reinforced,
/obj/item/kitchen/knife/butcher,
/obj/item/restraints/handcuffs,
/obj/item/reagent_containers/spray/pepper,
/turf/open/floor/plasteel/airless/dark,
/turf/open/floor/plasteel/dark,
/area/ruin/space/has_grav/gasthelizard)
"z" = (
/obj/machinery/atmospherics/components/unary/portables_connector/visible{
@@ -230,14 +230,14 @@
/area/ruin/space/has_grav/gasthelizard)
"C" = (
/obj/machinery/gibber,
/turf/open/floor/plasteel/airless/dark,
/turf/open/floor/plasteel/dark,
/area/ruin/space/has_grav/gasthelizard)
"D" = (
/obj/structure/table/reinforced,
/obj/item/clothing/suit/straight_jacket,
/obj/item/reagent_containers/syringe/lethal,
/obj/item/reagent_containers/syringe/lethal/choral,
/turf/open/floor/plasteel/airless/dark,
/turf/open/floor/plasteel/dark,
/area/ruin/space/has_grav/gasthelizard)
"E" = (
/obj/machinery/atmospherics/components/unary/portables_connector/visible{
@@ -258,7 +258,7 @@
/area/ruin/space/has_grav/gasthelizard)
"H" = (
/obj/machinery/door/airlock/security,
/turf/open/floor/plasteel/airless/dark,
/turf/open/floor/plasteel/dark,
/area/ruin/space/has_grav/gasthelizard)
"I" = (
/obj/item/reagent_containers/glass/bottle/morphine{
@@ -282,7 +282,7 @@
pixel_y = 6
},
/obj/structure/table/reinforced,
/turf/open/floor/plasteel/airless/dark,
/turf/open/floor/plasteel/dark,
/area/ruin/space/has_grav/gasthelizard)
"J" = (
/obj/structure/rack,
@@ -328,12 +328,12 @@
/obj/item/cautery,
/obj/item/circular_saw,
/obj/machinery/light,
/turf/open/floor/plasteel/airless/dark,
/turf/open/floor/plasteel/dark,
/area/ruin/space/has_grav/gasthelizard)
"Q" = (
/obj/structure/table/optable,
/obj/effect/decal/cleanable/blood/old,
/turf/open/floor/plasteel/airless/dark,
/turf/open/floor/plasteel/dark,
/area/ruin/space/has_grav/gasthelizard)
"R" = (
/obj/structure/table/reinforced,
@@ -342,7 +342,7 @@
/obj/item/reagent_containers/glass/bottle/mutagen,
/obj/item/reagent_containers/glass/bottle/mutagen,
/obj/item/razor,
/turf/open/floor/plasteel/airless/dark,
/turf/open/floor/plasteel/dark,
/area/ruin/space/has_grav/gasthelizard)
"S" = (
/obj/machinery/suit_storage_unit/security,
+1 -1
View File
@@ -2010,7 +2010,7 @@
/area/ruin/space/has_grav/hotel/bar)
"gd" = (
/obj/structure/table/reinforced,
/obj/item/reagent_containers/glass/rag,
/obj/item/reagent_containers/rag,
/obj/effect/turf_decal/tile/bar,
/obj/effect/turf_decal/tile/bar{
dir = 1
+1 -1
View File
@@ -1973,7 +1973,7 @@
/turf/open/indestructible,
/area/awaymission/centcomAway/thunderdome)
"lB" = (
/obj/item/reagent_containers/glass/rag,
/obj/item/reagent_containers/rag,
/turf/open/indestructible,
/area/awaymission/centcomAway/general)
"lD" = (
+1 -1
View File
@@ -150,7 +150,7 @@
/area/awaymission/beach)
"aB" = (
/obj/structure/table,
/obj/item/reagent_containers/glass/rag,
/obj/item/reagent_containers/rag,
/turf/open/floor/wood,
/area/awaymission/beach)
"aC" = (
+1 -1
View File
@@ -5383,7 +5383,7 @@
"kn" = (
/obj/structure/table/reinforced,
/obj/machinery/door/firedoor,
/obj/item/reagent_containers/glass/rag{
/obj/item/reagent_containers/rag{
pixel_y = 5
},
/obj/machinery/door/poddoor/shutters{
+1 -1
View File
@@ -3601,7 +3601,7 @@
"hn" = (
/obj/structure/table,
/obj/item/stack/packageWrap,
/obj/item/reagent_containers/glass/rag,
/obj/item/reagent_containers/rag,
/obj/effect/turf_decal/tile/bar,
/obj/effect/turf_decal/tile/bar{
dir = 1
File diff suppressed because it is too large Load Diff
+270 -112
View File
@@ -124,22 +124,6 @@
},
/turf/open/floor/plating,
/area/crew_quarters/abandoned_gambling_den)
"aaq" = (
/obj/structure/bed,
/obj/machinery/status_display{
pixel_y = 32
},
/obj/item/bedsheet/clown,
/turf/open/floor/plasteel/grimy,
/area/hallway/secondary/service)
"aar" = (
/obj/structure/bed,
/obj/machinery/status_display{
pixel_y = 32
},
/obj/item/bedsheet/mime,
/turf/open/floor/wood,
/area/hallway/secondary/service)
"aas" = (
/obj/docking_port/stationary/random{
id = "pod_lavaland1";
@@ -159,52 +143,6 @@
/obj/effect/landmark/xeno_spawn,
/turf/open/space,
/area/solar/starboard/fore)
"aav" = (
/obj/structure/bed,
/obj/machinery/light{
dir = 1
},
/obj/machinery/status_display{
pixel_y = 32
},
/obj/effect/spawner/lootdrop/bedsheet,
/turf/open/floor/carpet,
/area/crew_quarters/dorms)
"aaw" = (
/obj/structure/bed,
/obj/effect/decal/cleanable/dirt{
desc = "A thin layer of dust coating the floor.";
name = "dust"
},
/obj/effect/spawner/lootdrop/bedsheet,
/turf/open/floor/wood,
/area/crew_quarters/dorms)
"aax" = (
/obj/structure/bed,
/obj/effect/spawner/lootdrop/bedsheet,
/turf/open/floor/wood,
/area/crew_quarters/dorms)
"aay" = (
/obj/structure/bed,
/obj/effect/spawner/lootdrop/bedsheet,
/turf/open/floor/plasteel/grimy,
/area/crew_quarters/dorms)
"aaz" = (
/obj/structure/bed,
/obj/machinery/light,
/obj/machinery/status_display{
pixel_y = -32
},
/obj/effect/spawner/lootdrop/bedsheet,
/turf/open/floor/carpet,
/area/crew_quarters/dorms)
"aaA" = (
/obj/structure/bed,
/obj/item/tank/internals/anesthetic,
/obj/item/clothing/mask/breath,
/obj/effect/spawner/lootdrop/bedsheet,
/turf/open/floor/plating,
/area/crew_quarters/abandoned_gambling_den)
"aaE" = (
/obj/structure/lattice/catwalk,
/turf/open/space,
@@ -1072,6 +1010,10 @@
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"aez" = (
/obj/machinery/keycard_auth,
/turf/closed/wall,
/area/quartermaster/qm)
"aeB" = (
/obj/machinery/status_display,
/turf/closed/wall,
@@ -13768,6 +13710,14 @@
},
/turf/open/floor/plasteel/grimy,
/area/hallway/secondary/service)
"aDF" = (
/obj/structure/bed,
/obj/machinery/status_display{
pixel_y = 32
},
/obj/item/bedsheet/clown,
/turf/open/floor/plasteel/grimy,
/area/hallway/secondary/service)
"aDG" = (
/turf/open/floor/plasteel/grimy,
/area/hallway/secondary/service)
@@ -14482,7 +14432,7 @@
},
/obj/item/book/manual/wiki/barman_recipes,
/obj/item/reagent_containers/food/drinks/shaker,
/obj/item/reagent_containers/glass/rag,
/obj/item/reagent_containers/rag,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -16922,6 +16872,14 @@
},
/turf/open/floor/wood,
/area/hallway/secondary/service)
"aIP" = (
/obj/structure/bed,
/obj/machinery/status_display{
pixel_y = 32
},
/obj/item/bedsheet/mime,
/turf/open/floor/wood,
/area/hallway/secondary/service)
"aIQ" = (
/obj/structure/dresser,
/turf/open/floor/wood{
@@ -79006,6 +78964,17 @@
/obj/structure/dresser,
/turf/open/floor/carpet,
/area/crew_quarters/dorms)
"cCi" = (
/obj/structure/bed,
/obj/machinery/light{
dir = 1
},
/obj/machinery/status_display{
pixel_y = 32
},
/obj/effect/spawner/lootdrop/bedsheet,
/turf/open/floor/carpet,
/area/crew_quarters/dorms)
"cCj" = (
/obj/structure/closet/secure_closet/personal/cabinet,
/obj/item/clothing/suit/jacket{
@@ -81023,10 +80992,24 @@
icon_state = "wood-broken2"
},
/area/crew_quarters/dorms)
"cFx" = (
/obj/structure/bed,
/obj/effect/decal/cleanable/dirt{
desc = "A thin layer of dust coating the floor.";
name = "dust"
},
/obj/effect/spawner/lootdrop/bedsheet,
/turf/open/floor/wood,
/area/crew_quarters/dorms)
"cFy" = (
/obj/item/twohanded/required/kirbyplants/random,
/turf/open/floor/wood,
/area/crew_quarters/dorms)
"cFz" = (
/obj/structure/bed,
/obj/effect/spawner/lootdrop/bedsheet,
/turf/open/floor/wood,
/area/crew_quarters/dorms)
"cFA" = (
/obj/structure/table/wood,
/obj/item/flashlight/lamp/green,
@@ -88896,6 +88879,11 @@
/obj/structure/chair/office/dark,
/turf/open/floor/wood,
/area/crew_quarters/dorms)
"cTc" = (
/obj/structure/bed,
/obj/effect/spawner/lootdrop/bedsheet,
/turf/open/floor/plasteel/grimy,
/area/crew_quarters/dorms)
"cTd" = (
/obj/structure/table,
/obj/item/storage/fancy/donut_box,
@@ -90092,6 +90080,15 @@
},
/turf/open/floor/wood,
/area/crew_quarters/dorms)
"cUX" = (
/obj/structure/bed,
/obj/machinery/light,
/obj/machinery/status_display{
pixel_y = -32
},
/obj/effect/spawner/lootdrop/bedsheet,
/turf/open/floor/carpet,
/area/crew_quarters/dorms)
"cUY" = (
/obj/structure/closet/secure_closet/personal/cabinet,
/obj/item/clothing/suit/jacket{
@@ -114279,11 +114276,6 @@
/obj/structure/cable/white{
icon_state = "1-2"
},
/obj/machinery/door/airlock/maintenance_hatch{
name = "Maintenance Hatch";
req_access_txt = "12"
},
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/stripes/line{
dir = 2
@@ -114291,6 +114283,10 @@
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/obj/machinery/door/airlock/maintenance_hatch{
name = "Chapel Maintenance";
req_access_txt = "27"
},
/turf/open/floor/plasteel,
/area/maintenance/port/aft)
"dKE" = (
@@ -118990,7 +118986,6 @@
/obj/structure/cable/white{
icon_state = "1-2"
},
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
@@ -119335,7 +119330,6 @@
/turf/closed/wall,
/area/chapel/office)
"dTx" = (
/obj/structure/bodycontainer/morgue,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -119346,6 +119340,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/structure/closet/crate/coffin,
/turf/open/floor/plasteel/dark,
/area/chapel/office)
"dTy" = (
@@ -121771,7 +121766,6 @@
/turf/open/floor/plating,
/area/maintenance/port/aft)
"dYv" = (
/obj/structure/bodycontainer/morgue,
/obj/structure/sign/poster/official/ian{
pixel_y = -32
},
@@ -121785,6 +121779,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/structure/closet/crate/coffin,
/turf/open/floor/plasteel/dark,
/area/chapel/office)
"dYw" = (
@@ -122827,7 +122822,6 @@
/turf/open/floor/plasteel,
/area/maintenance/port/aft)
"eat" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable/white{
icon_state = "1-8"
},
@@ -123564,9 +123558,6 @@
/obj/structure/cable/white{
icon_state = "1-2"
},
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 1
},
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -123577,6 +123568,9 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 9
},
/turf/open/floor/plasteel/dark,
/area/chapel/office)
"ebU" = (
@@ -123819,7 +123813,6 @@
/turf/open/floor/plasteel,
/area/maintenance/port/aft)
"ecw" = (
/obj/structure/bodycontainer/morgue,
/obj/machinery/firealarm{
dir = 1;
pixel_y = -24
@@ -126415,6 +126408,13 @@
/obj/machinery/door/airlock/research/glass/incinerator/toxmix_interior,
/turf/open/floor/engine,
/area/science/mixing)
"fwr" = (
/obj/machinery/door/poddoor{
id = "chapelgun";
name = "Chapel Launcher Door"
},
/turf/open/floor/plating,
/area/chapel/office)
"fFK" = (
/obj/machinery/ore_silo,
/obj/effect/turf_decal/tile/neutral{
@@ -126433,6 +126433,10 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/closed/wall/r_wall,
/area/science/circuit)
"fHS" = (
/obj/structure/sign/warning/vacuum,
/turf/closed/wall/r_wall,
/area/chapel/office)
"fLR" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 6
@@ -126465,6 +126469,16 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/closed/wall/r_wall,
/area/science/circuit)
"gJj" = (
/obj/machinery/door/window/northleft{
name = "Mass Driver"
},
/obj/machinery/mass_driver{
id = "chapelgun";
name = "Holy Driver"
},
/turf/open/floor/plating,
/area/chapel/office)
"gKr" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 1
@@ -126482,6 +126496,22 @@
},
/turf/open/floor/plasteel/white,
/area/science/misc_lab)
"gNJ" = (
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/effect/turf_decal/tile/neutral,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 4
},
/turf/open/floor/plasteel/dark,
/area/chapel/office)
"gNS" = (
/obj/effect/turf_decal/stripes/line,
/obj/effect/turf_decal/tile/neutral{
@@ -126546,6 +126576,10 @@
},
/turf/open/floor/plating,
/area/quartermaster/storage)
"hei" = (
/obj/effect/decal/cleanable/dirt,
/turf/closed/wall/r_wall,
/area/chapel/office)
"hic" = (
/obj/structure/table/reinforced,
/obj/item/integrated_electronics/analyzer,
@@ -126607,6 +126641,22 @@
},
/turf/open/floor/plasteel,
/area/security/prison)
"hLO" = (
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/effect/turf_decal/delivery,
/obj/structure/closet,
/obj/effect/spawner/lootdrop/maintenance{
lootcount = 3;
name = "3maintenance loot spawner"
},
/turf/open/floor/plasteel,
/area/maintenance/port/aft)
"hNZ" = (
/obj/structure/chair/office/light{
dir = 8
@@ -126653,6 +126703,9 @@
},
/turf/open/floor/engine/vacuum,
/area/science/mixing)
"iyd" = (
/turf/open/space,
/area/space)
"iQh" = (
/obj/structure/bodycontainer/morgue{
dir = 1
@@ -126717,6 +126770,9 @@
},
/turf/open/floor/plasteel,
/area/science/research/abandoned)
"jhK" = (
/turf/open/floor/plasteel,
/area/maintenance/port/aft)
"jjN" = (
/obj/structure/table/reinforced,
/obj/machinery/camera{
@@ -126814,6 +126870,28 @@
/obj/machinery/chem_master,
/turf/open/floor/plasteel/dark,
/area/medical/medbay/central)
"jPA" = (
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/machinery/computer/pod/old{
density = 0;
icon = 'icons/obj/airlock_machines.dmi';
icon_state = "airlock_control_standby";
id = "chapelgun";
name = "Mass Driver Controller";
pixel_x = 0;
pixel_y = -24
},
/turf/open/floor/plasteel/dark,
/area/chapel/office)
"jRy" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -127098,6 +127176,33 @@
},
/turf/open/floor/engine,
/area/science/mixing)
"mXJ" = (
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/effect/turf_decal/tile/neutral,
/turf/open/floor/plasteel/dark,
/area/chapel/office)
"nht" = (
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/effect/turf_decal/tile/neutral,
/obj/machinery/light,
/turf/open/floor/plasteel/dark,
/area/chapel/office)
"nyN" = (
/obj/machinery/vending/kink,
/turf/open/floor/plating,
@@ -127106,6 +127211,19 @@
/obj/machinery/atmospherics/pipe/simple/general/hidden,
/turf/closed/wall/r_wall,
/area/maintenance/disposal/incinerator)
"owr" = (
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/effect/turf_decal/tile/neutral,
/turf/open/floor/plasteel/dark,
/area/chapel/office)
"oIl" = (
/obj/machinery/atmospherics/components/unary/portables_connector/visible{
dir = 1
@@ -127214,6 +127332,13 @@
dir = 1
},
/area/science/circuit)
"poI" = (
/obj/structure/bed,
/obj/item/tank/internals/anesthetic,
/obj/item/clothing/mask/breath,
/obj/effect/spawner/lootdrop/bedsheet,
/turf/open/floor/plating,
/area/crew_quarters/abandoned_gambling_den)
"psi" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/bodycontainer/morgue{
@@ -127277,6 +127402,12 @@
/obj/effect/spawner/lootdrop/keg,
/turf/open/floor/plating,
/area/crew_quarters/abandoned_gambling_den)
"qMR" = (
/obj/effect/turf_decal/stripes/line{
dir = 2
},
/turf/open/floor/plating,
/area/chapel/office)
"rhO" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 1
@@ -127426,6 +127557,14 @@
},
/turf/open/floor/engine,
/area/engine/supermatter)
"uZN" = (
/obj/structure/rack,
/obj/effect/spawner/lootdrop/maintenance{
lootcount = 2;
name = "2maintenance loot spawner"
},
/turf/open/floor/plasteel,
/area/maintenance/port/aft)
"vhA" = (
/obj/item/clothing/under/color/grey,
/turf/open/floor/plating,
@@ -127563,6 +127702,25 @@
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/science/research)
"xWZ" = (
/obj/structure/bodycontainer/morgue{
dir = 2
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/turf/open/floor/plasteel/dark,
/area/chapel/office)
"xXn" = (
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxins_mixing_output,
/turf/open/floor/engine/vacuum,
@@ -151680,7 +151838,7 @@ djm
fow
dod
dod
aaA
poI
dfY
ajr
aad
@@ -159671,12 +159829,12 @@ dWI
dZf
dZM
eat
dLY
dLY
dLY
dLY
dLY
dLY
dZN
dZN
dZN
dZN
fHS
dZN
dLY
dLY
aad
@@ -159926,20 +160084,20 @@ dWJ
dLW
dYu
dZg
dYu
dYu
dZg
ebR
dLW
ecQ
edl
aad
jhK
jhK
dZN
owr
mXJ
gJj
qMR
fwr
aaa
aaa
aad
iyd
aaa
aaa
aad
iyd
aaa
aaa
aaa
@@ -160183,14 +160341,14 @@ dTw
dTw
dTw
dTw
dLX
dLW
dLW
dLW
ecv
dNt
edl
aad
hLO
uZN
hei
gNJ
jPA
dTw
dTw
dTw
aad
aad
aad
@@ -160443,8 +160601,8 @@ dTw
dZN
dZN
dZN
dZN
dZN
xWZ
nht
dTw
dTw
dTw
@@ -160834,11 +160992,11 @@ ary
aAf
aBu
aCB
aaq
aDF
aEJ
aFV
aDI
aar
aIP
aKo
aLE
aMX
@@ -174465,7 +174623,7 @@ aaa
aaa
aad
aQQ
aQQ
aez
aUp
aVY
aXE
@@ -178374,7 +178532,7 @@ cyY
cAx
cCd
cDD
aaw
cFx
cGU
cAw
cJl
@@ -178382,7 +178540,7 @@ cLa
cMx
cIi
cPR
aax
cFz
cDG
cUW
cAw
@@ -179155,7 +179313,7 @@ cNU
cDI
cFB
cDI
aaz
cUX
cAw
cYj
cZV
@@ -179402,7 +179560,7 @@ czc
cAw
cCg
cDG
aax
cFz
cGW
cIi
cJo
@@ -180171,7 +180329,7 @@ bHq
cxt
coI
cAw
aav
cCi
cDI
cFB
cDI
@@ -180439,7 +180597,7 @@ cMB
cIi
cPW
cRv
aay
cTc
cVb
cAw
cYp
+103 -100
View File
@@ -2,58 +2,10 @@
"aaa" = (
/turf/open/space/basic,
/area/space)
"aab" = (
/obj/structure/bed,
/obj/machinery/button/door{
id = "Cabin3";
name = "Cabin Bolt Control";
normaldoorcontrol = 1;
pixel_x = 25;
specialfunctions = 4
},
/obj/effect/decal/cleanable/cobweb/cobweb2,
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 4
},
/obj/effect/spawner/lootdrop/bedsheet,
/turf/open/floor/wood,
/area/crew_quarters/dorms)
"aac" = (
/obj/effect/landmark/carpspawn,
/turf/open/space,
/area/space)
"aad" = (
/obj/machinery/light/small{
dir = 1
},
/obj/effect/decal/cleanable/cobweb,
/obj/machinery/button/door{
id = "Cabin4";
name = "Cabin Bolt Control";
normaldoorcontrol = 1;
pixel_x = -25;
specialfunctions = 4
},
/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
/obj/structure/bed,
/obj/effect/spawner/lootdrop/bedsheet,
/turf/open/floor/carpet,
/area/crew_quarters/dorms)
"aae" = (
/obj/structure/bed,
/obj/machinery/button/door{
id = "Cabin2";
name = "Cabin Bolt Control";
normaldoorcontrol = 1;
pixel_x = 25;
specialfunctions = 4
},
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 4
},
/obj/effect/spawner/lootdrop/bedsheet,
/turf/open/floor/carpet,
/area/crew_quarters/dorms)
"aaf" = (
/obj/structure/lattice,
/turf/open/space,
@@ -300,19 +252,6 @@
},
/turf/open/floor/plating,
/area/security/prison)
"aaM" = (
/obj/structure/bed,
/obj/machinery/button/door{
id = "Cabin5";
name = "Dorm Bolt Control";
normaldoorcontrol = 1;
pixel_x = -25;
specialfunctions = 4
},
/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
/obj/effect/spawner/lootdrop/bedsheet,
/turf/open/floor/wood,
/area/crew_quarters/dorms)
"aaN" = (
/obj/structure/cable{
icon_state = "0-2"
@@ -355,37 +294,6 @@
},
/turf/open/floor/plasteel,
/area/security/prison)
"aaU" = (
/obj/structure/bed,
/obj/machinery/button/door{
id = "Cabin6";
name = "Dorm Bolt Control";
normaldoorcontrol = 1;
pixel_x = -25;
specialfunctions = 4
},
/obj/effect/decal/cleanable/cobweb,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 8
},
/obj/effect/spawner/lootdrop/bedsheet,
/turf/open/floor/carpet,
/area/crew_quarters/dorms)
"aaV" = (
/obj/machinery/button/door{
id = "Cabin7";
name = "Door Bolt Control";
normaldoorcontrol = 1;
pixel_x = -25;
specialfunctions = 4
},
/obj/structure/bed,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 8
},
/obj/effect/spawner/lootdrop/bedsheet,
/turf/open/floor/wood,
/area/crew_quarters/dorms)
"aaY" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -10233,6 +10141,22 @@
/obj/item/clothing/under/assistantformal,
/turf/open/floor/wood,
/area/crew_quarters/dorms)
"asV" = (
/obj/structure/bed,
/obj/machinery/button/door{
id = "Cabin3";
name = "Cabin Bolt Control";
normaldoorcontrol = 1;
pixel_x = 25;
specialfunctions = 4
},
/obj/effect/decal/cleanable/cobweb/cobweb2,
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 4
},
/obj/effect/spawner/lootdrop/bedsheet,
/turf/open/floor/wood,
/area/crew_quarters/dorms)
"asW" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -10271,6 +10195,23 @@
},
/turf/open/floor/plasteel,
/area/crew_quarters/dorms)
"ata" = (
/obj/machinery/light/small{
dir = 1
},
/obj/effect/decal/cleanable/cobweb,
/obj/machinery/button/door{
id = "Cabin4";
name = "Cabin Bolt Control";
normaldoorcontrol = 1;
pixel_x = -25;
specialfunctions = 4
},
/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
/obj/structure/bed,
/obj/effect/spawner/lootdrop/bedsheet,
/turf/open/floor/carpet,
/area/crew_quarters/dorms)
"atb" = (
/obj/structure/closet/secure_closet/personal/cabinet,
/obj/machinery/airalarm{
@@ -11951,6 +11892,21 @@
/obj/item/clothing/under/suit_jacket/tan,
/turf/open/floor/carpet,
/area/crew_quarters/dorms)
"awE" = (
/obj/structure/bed,
/obj/machinery/button/door{
id = "Cabin2";
name = "Cabin Bolt Control";
normaldoorcontrol = 1;
pixel_x = 25;
specialfunctions = 4
},
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 4
},
/obj/effect/spawner/lootdrop/bedsheet,
/turf/open/floor/carpet,
/area/crew_quarters/dorms)
"awF" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 4
@@ -11964,6 +11920,19 @@
},
/turf/open/floor/plasteel,
/area/crew_quarters/dorms)
"awG" = (
/obj/structure/bed,
/obj/machinery/button/door{
id = "Cabin5";
name = "Dorm Bolt Control";
normaldoorcontrol = 1;
pixel_x = -25;
specialfunctions = 4
},
/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
/obj/effect/spawner/lootdrop/bedsheet,
/turf/open/floor/wood,
/area/crew_quarters/dorms)
"awH" = (
/obj/machinery/newscaster{
pixel_y = 32
@@ -15014,6 +14983,22 @@
},
/turf/open/floor/plasteel,
/area/crew_quarters/dorms)
"aCJ" = (
/obj/structure/bed,
/obj/machinery/button/door{
id = "Cabin6";
name = "Dorm Bolt Control";
normaldoorcontrol = 1;
pixel_x = -25;
specialfunctions = 4
},
/obj/effect/decal/cleanable/cobweb,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 8
},
/obj/effect/spawner/lootdrop/bedsheet,
/turf/open/floor/carpet,
/area/crew_quarters/dorms)
"aCK" = (
/obj/structure/closet/secure_closet/personal/cabinet,
/obj/machinery/airalarm{
@@ -17590,6 +17575,21 @@
},
/turf/open/floor/plasteel/dark,
/area/crew_quarters/dorms)
"aHS" = (
/obj/machinery/button/door{
id = "Cabin7";
name = "Door Bolt Control";
normaldoorcontrol = 1;
pixel_x = -25;
specialfunctions = 4
},
/obj/structure/bed,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 8
},
/obj/effect/spawner/lootdrop/bedsheet,
/turf/open/floor/wood,
/area/crew_quarters/dorms)
"aHT" = (
/obj/structure/chair/wood/normal{
dir = 4
@@ -20373,6 +20373,9 @@
/obj/effect/turf_decal/tile/brown{
dir = 4
},
/obj/machinery/keycard_auth{
pixel_y = 23
},
/turf/open/floor/plasteel,
/area/quartermaster/qm)
"aNS" = (
@@ -38985,7 +38988,7 @@
pixel_y = 5
},
/obj/item/reagent_containers/food/drinks/shaker,
/obj/item/reagent_containers/glass/rag{
/obj/item/reagent_containers/rag{
pixel_y = 5
},
/obj/effect/turf_decal/tile/bar,
@@ -59281,7 +59284,7 @@
},
/area/maintenance/port/aft)
"ckR" = (
/obj/item/reagent_containers/glass/rag,
/obj/item/reagent_containers/rag,
/obj/structure/table/wood,
/turf/open/floor/wood{
icon_state = "wood-broken4"
@@ -120053,10 +120056,10 @@ agz
aoV
dhs
arB
aab
asV
auf
arB
aae
awE
axE
arB
dhA
@@ -121595,19 +121598,19 @@ anK
aoZ
aqk
arB
aad
ata
aul
avp
aaM
awG
axJ
avp
aAj
arB
aaU
aCJ
aEe
arB
boS
aaV
aHS
aJh
aKt
aLW
@@ -13484,7 +13484,7 @@
/obj/structure/table/wood,
/obj/item/book/manual/wiki/barman_recipes,
/obj/item/reagent_containers/food/drinks/shaker,
/obj/item/reagent_containers/glass/rag,
/obj/item/reagent_containers/rag,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/tile/neutral{
dir = 1
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+30 -25
View File
@@ -2248,11 +2248,6 @@
},
/turf/open/floor/plasteel,
/area/tdome/arena_source)
"fR" = (
/obj/item/paicard,
/obj/structure/table/wood,
/turf/open/floor/engine/cult,
/area/wizard_station)
"fS" = (
/obj/effect/turf_decal/tile/red{
dir = 8
@@ -2940,22 +2935,6 @@
/obj/machinery/capture_the_flag/red,
/turf/open/floor/circuit/green/anim,
/area/ctf)
"hH" = (
/obj/structure/table/reinforced,
/obj/item/flashlight/seclite,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/item/paicard,
/turf/open/floor/plasteel/dark,
/area/centcom/ferry)
"hI" = (
/obj/effect/turf_decal/stripes/line{
dir = 10
@@ -8415,6 +8394,9 @@
/turf/open/floor/plating,
/area/syndicate_mothership)
"tg" = (
/obj/machinery/shower{
dir = 4
},
/obj/item/soap/syndie,
/turf/open/floor/plasteel/freezer,
/area/syndicate_mothership)
@@ -9858,7 +9840,7 @@
id = "XCCFerry";
name = "Hanger Bay Shutters";
pixel_y = 24;
req_access_txt = "2"
req_access_txt = "101"
},
/obj/effect/turf_decal/stripes/line{
dir = 5
@@ -11391,6 +11373,22 @@
/obj/structure/table/reinforced,
/turf/open/floor/plasteel/grimy,
/area/centcom/ferry)
"AL" = (
/obj/structure/table/reinforced,
/obj/item/flashlight/seclite,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/item/paicard,
/turf/open/floor/plasteel/dark,
/area/centcom/ferry)
"AM" = (
/obj/machinery/shuttle_manipulator,
/turf/open/floor/circuit/green,
@@ -11587,6 +11585,11 @@
},
/turf/open/floor/plasteel/white,
/area/centcom/holding)
"Bp" = (
/obj/item/paicard,
/obj/structure/table/wood,
/turf/open/floor/engine/cult,
/area/wizard_station)
"Bs" = (
/obj/structure/table/wood,
/obj/machinery/computer/libraryconsole/bookmanagement,
@@ -15122,7 +15125,7 @@
/obj/structure/table/wood,
/obj/item/book/manual/wiki/barman_recipes,
/obj/item/reagent_containers/food/drinks/shaker,
/obj/item/reagent_containers/glass/rag,
/obj/item/reagent_containers/rag,
/obj/machinery/newscaster{
pixel_y = -32
},
@@ -17434,6 +17437,8 @@
/obj/structure/mirror{
pixel_x = -28
},
/obj/structure/table,
/obj/item/reagent_containers/rag/towel/syndicate,
/turf/open/floor/plasteel/freezer,
/area/syndicate_mothership)
"Rm" = (
@@ -25742,7 +25747,7 @@ lI
lI
lI
Ax
fR
Bp
qZ
qZ
Ax
@@ -56338,7 +56343,7 @@ yr
sw
sw
Ad
hH
AL
Bx
sw
Cv
+1 -1
View File
@@ -38,5 +38,5 @@
//Gangshit
#define NOT_DOMINATING -1
#define MAX_LEADERS_GANG 3
#define MAX_LEADERS_GANG 4
#define INITIAL_DOM_ATTEMPTS 3
+9 -10
View File
@@ -12,7 +12,7 @@
#define ui_boxcraft "EAST-4:22,SOUTH+1:6"
#define ui_boxarea "EAST-4:6,SOUTH+1:6"
#define ui_boxlang "EAST-5:22,SOUTH+1:6"
#define ui_boxvore "EAST-4:22,SOUTH+1:6"
#define ui_boxvore "EAST-5:22,SOUTH+1:6"
//Filters
#define CIT_FILTER_STAMINACRIT filter(type="drop_shadow", x=0, y=0, size=-3, border=0, color="#04080F")
@@ -40,7 +40,7 @@
#define BALLS_SACK_SIZE_DEF 8
#define BALLS_SACK_SIZE_MAX 40
#define CUM_RATE 5
#define CUM_RATE 0.035
#define CUM_RATE_MULT 1
#define CUM_EFFICIENCY 1//amount of nutrition required per life()
@@ -115,22 +115,21 @@
//xenobio console upgrade stuff
#define XENOBIO_UPGRADE_MONKEYS 1
#define XENOBIO_UPGRADE_SLIMEBASIC 2
#define XENOBIO_UPGRADE_SLIMEBASIC 2
#define XENOBIO_UPGRADE_SLIMEADV 4
//stamina stuff
#define STAMINA_SOFTCRIT 100 //softcrit for stamina damage. prevents standing up, prevents performing actions that cost stamina, etc, but doesn't force a rest or stop movement
#define STAMINA_CRIT 140 //crit for stamina damage. forces a rest, and stops movement until stamina goes back to stamina softcrit
#define STAMINA_SOFTCRIT_TRADITIONAL 0 //same as STAMINA_SOFTCRIT except for the more traditional health calculations
#define STAMINA_SOFTCRIT 100 //softcrit for stamina damage. prevents standing up, prevents performing actions that cost stamina, etc, but doesn't force a rest or stop movement
#define STAMINA_CRIT 140 //crit for stamina damage. forces a rest, and stops movement until stamina goes back to stamina softcrit
#define STAMINA_SOFTCRIT_TRADITIONAL 0 //same as STAMINA_SOFTCRIT except for the more traditional health calculations
#define STAMINA_CRIT_TRADITIONAL -40 //ditto, but for STAMINA_CRIT
#define MIN_MELEE_STAMCOST 1.25 //Minimum cost for swinging items around. Will be extra useful when stats and skills are introduced.
#define CRAWLUNDER_DELAY 30 //Delay for crawling under a standing mob
//Citadel toggles because bitflag memes
#define MEDIHOUND_SLEEPER 1
#define EATING_NOISES 2
#define DIGESTION_NOISES 4
#define MEDIHOUND_SLEEPER (1<<0)
#define EATING_NOISES (1<<1)
#define DIGESTION_NOISES (1<<2)
#define TOGGLES_CITADEL (EATING_NOISES|DIGESTION_NOISES)
+21 -12
View File
@@ -3,26 +3,35 @@
#define COLOR_INPUT_DISABLED "#F0F0F0"
#define COLOR_INPUT_ENABLED "#D3B5B5"
//#define COLOR_WHITE "#EEEEEE"
//#define COLOR_SILVER "#C0C0C0"
//#define COLOR_GRAY "#808080"
#define COLOR_DARKMODE_INFO_BUTTONS_BG "#40628A"
#define COLOR_DARKMODE_ISSUE_BUTTON_BG "#ce4242"
#define COLOR_DARKMODE_BACKGROUND "#202020"
#define COLOR_DARKMODE_DARKBACKGROUND "#171717"
#define COLOR_DARKMODE_TEXT "#f0f0f0"
#define COLOR_WHITEMODE_INFO_BUTTONS_BG "#90b3dd"
#define COLOR_WHITEMODE_ISSUE_BUTTON_BG "#ef7f7f"
#define COLOR_WHITEMODE_BACKGROUND "#ffffff"
#define COLOR_WHITEMODE_DARKBACKGROUND "#eeeeee"
#define COLOR_WHITEMODE_TEXT "#000000"
#define COLOR_FLOORTILE_GRAY "#8D8B8B"
#define COLOR_ALMOST_BLACK "#333333"
//#define COLOR_BLACK "#000000"
#define COLOR_BLACK "#000000"
#define COLOR_RED "#FF0000"
//#define COLOR_RED_LIGHT "#FF3333"
//#define COLOR_MAROON "#800000"
#define COLOR_RED_LIGHT "#FF3333"
#define COLOR_MAROON "#800000"
#define COLOR_YELLOW "#FFFF00"
//#define COLOR_OLIVE "#808000"
//#define COLOR_LIME "#32CD32"
#define COLOR_OLIVE "#808000"
#define COLOR_LIME "#32CD32"
#define COLOR_GREEN "#008000"
#define COLOR_CYAN "#00FFFF"
//#define COLOR_TEAL "#008080"
#define COLOR_TEAL "#008080"
#define COLOR_BLUE "#0000FF"
//#define COLOR_BLUE_LIGHT "#33CCFF"
//#define COLOR_NAVY "#000080"
#define COLOR_BLUE_LIGHT "#33CCFF"
#define COLOR_NAVY "#000080"
#define COLOR_PINK "#FFC0CB"
//#define COLOR_MAGENTA "#FF00FF"
#define COLOR_MAGENTA "#FF00FF"
#define COLOR_PURPLE "#800080"
#define COLOR_ORANGE "#FF9900"
#define COLOR_BEIGE "#CEB689"
+13 -1
View File
@@ -183,4 +183,16 @@ GLOBAL_LIST_INIT(shove_disarming_types, typecacheof(list(
#define BODY_ZONE_PRECISE_R_FOOT "r_foot"
//We will round to this value in damage calculations.
#define DAMAGE_PRECISION 0.1
#define DAMAGE_PRECISION 0.1
//items total mass, used to calculate their attacks' stamina costs. If not defined, the cost will be (w_class * 1.25)
#define TOTAL_MASS_TINY_ITEM 1.25
#define TOTAL_MASS_SMALL_ITEM 2.5
#define TOTAL_MASS_NORMAL_ITEM 3.75
#define TOTAL_MASS_BULKY_ITEM 5
#define TOTAL_MASS_HUGE_ITEM 6.25
#define TOTAL_MASS_GIGANTIC_ITEM 7.5
#define TOTAL_MASS_HAND_REPLACEMENT 5 //standard punching stamina cost. most hand replacements are huge items anyway.
#define TOTAL_MASS_MEDIEVAL_WEAPON 3.6 //very, very generic average sword/warpick/etc. weight in pounds.
#define TOTAL_MASS_TOY_SWORD 1.5
+2
View File
@@ -73,6 +73,8 @@
#define COMSIG_ATOM_CANREACH "atom_can_reach" //from internal loop in atom/movable/proc/CanReach(): (list/next)
#define COMPONENT_BLOCK_REACH 1
#define COMSIG_ATOM_SCREWDRIVER_ACT "atom_screwdriver_act" //from base of atom/screwdriver_act(): (mob/living/user, obj/item/I)
#define COMSIG_ATOM_INTERCEPT_TELEPORT "intercept_teleport" //called when teleporting into a protected turf: (channel, turf/origin)
#define COMPONENT_BLOCK_TELEPORT 1
/////////////////
#define COMSIG_ATOM_ATTACK_GHOST "atom_attack_ghost" //from base of atom/attack_ghost(): (mob/dead/observer/ghost)
#define COMSIG_ATOM_ATTACK_HAND "atom_attack_hand" //from base of atom/attack_hand(): (mob/user)
+18
View File
@@ -0,0 +1,18 @@
#define DONATOR_GROUP_TIER_1_CONFIG_PATH /datum/config_entry/keyed_list/donator_group/tier_1_donators
#define DONATOR_GROUP_TIER_2_CONFIG_PATH /datum/config_entry/keyed_list/donator_group/tier_2_donators
#define DONATOR_GROUP_TIER_3_CONFIG_PATH /datum/config_entry/keyed_list/donator_group/tier_3_donators
#define DONATOR_GROUP_TIER_1_CONFIG_SUBPATH keyed_list/donator_group/tier_1_donators
#define DONATOR_GROUP_TIER_2_CONFIG_SUBPATH keyed_list/donator_group/tier_2_donators
#define DONATOR_GROUP_TIER_3_CONFIG_SUBPATH keyed_list/donator_group/tier_3_donators
#define TIER_1_DONATORS CONFIG_GET(DONATOR_GROUP_TIER_1_CONFIG_SUBPATH)
#define TIER_2_DONATORS CONFIG_GET(DONATOR_GROUP_TIER_2_CONFIG_SUBPATH)
#define TIER_3_DONATORS CONFIG_GET(DONATOR_GROUP_TIER_3_CONFIG_SUBPATH)
//flags
#define DONATOR_GROUP_TIER_1 "T1"
#define DONATOR_GROUP_TIER_2 "T2"
#define DONATOR_GROUP_TIER_3 "T3"
#define IS_CKEY_DONATOR_GROUP(ckey, groupid) is_donator_group(ckey, groupid)
+1 -1
View File
@@ -7,7 +7,7 @@
//for convenience
#define ENABLE_BITFIELD(variable, flag) (variable |= (flag))
#define DISABLE_BITFIELD(variable, flag) (variable &= ~(flag))
#define CHECK_BITFIELD(variable, flag) (variable & flag)
#define CHECK_BITFIELD(variable, flag) (variable & (flag))
#define TOGGLE_BITFIELD(variable, flag) (variable ^= (flag))
GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768))
+7
View File
@@ -28,6 +28,7 @@
#define ITEM_SLOT_POCKET (1<<11) // this is to allow items with a w_class of WEIGHT_CLASS_NORMAL or WEIGHT_CLASS_BULKY to fit in pockets.
#define ITEM_SLOT_DENYPOCKET (1<<12) // this is to deny items with a w_class of WEIGHT_CLASS_SMALL or WEIGHT_CLASS_TINY to fit in pockets.
#define ITEM_SLOT_NECK (1<<13)
#define ITEM_SLOT_SUITSTORE (1<<14)
//SLOTS
#define SLOT_BACK 1
@@ -52,6 +53,7 @@
#define SLOT_LEGCUFFED 19
#define SLOT_GENERC_DEXTROUS_STORAGE 20
#define SLOTS_AMT 20 // Keep this up to date!
//I hate that this has to exist
@@ -84,6 +86,8 @@
. = ITEM_SLOT_ICLOTHING
if(SLOT_L_STORE, SLOT_R_STORE)
. = ITEM_SLOT_POCKET
if(SLOT_S_STORE)
. = ITEM_SLOT_SUITSTORE
//Bit flags for the flags_inv variable, which determine when a piece of clothing hides another. IE a helmet hiding glasses.
@@ -230,3 +234,6 @@ GLOBAL_LIST_INIT(security_wintercoat_allowed, typecacheof(list(
/obj/item/tank/internals/emergency_oxygen,
/obj/item/tank/internals/plasmaman,
/obj/item/toy)))
//Internals checker
#define GET_INTERNAL_SLOTS(C) list(C.head, C.wear_mask)
+10
View File
@@ -0,0 +1,10 @@
//Martial arts defines
#define MARTIALART_BOXING "boxing"
#define MARTIALART_WRESTLING "wrestling"
#define MARTIALART_SLEEPINGCARP "sleeping carp"
#define MARTIALART_PSYCHOBRAWL "psychotic brawling"
#define MARTIALART_MUSHPUNCH "mushroom punch"
#define MARTIALART_KRAVMAGA "krav maga"
#define MARTIALART_CQC "CQC"
#define MARTIALART_PLASMAFIST "plasma fist"
+10 -8
View File
@@ -57,7 +57,7 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s
#define BODYPARTS_LAYER 28 //Initially "AUGMENTS", this was repurposed to be a catch-all bodyparts flag
#define MARKING_LAYER 27 //Matrixed body markings because clashing with snouts?
#define BODY_ADJ_LAYER 26 //certain mutantrace features (snout, body markings) that must appear above the body parts
#define GENITALS_ADJ_LAYER 25
#define GENITALS_FRONT_LAYER 25 //Draws some genitalia above clothes and the TAUR body if need be.
#define BODY_LAYER 24 //underwear, undershirts, socks, eyes, lips(makeup)
#define FRONT_MUTATIONS_LAYER 23 //mutations that should appear above body, body_adj and bodyparts layer (e.g. laser eyes)
#define DAMAGE_LAYER 22 //damage indicators (cuts and burns)
@@ -69,7 +69,6 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s
#define EARS_LAYER 17
#define BODY_TAUR_LAYER 16
#define SUIT_LAYER 15
#define GENITALS_FRONT_LAYER 14 //Draws some genitalia above clothes and the TAUR body if need be.
#define GLASSES_LAYER 13
#define BELT_LAYER 12 //Possible make this an overlay of somethign required to wear a belt?
#define SUIT_STORE_LAYER 11
@@ -83,7 +82,7 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s
#define HANDS_LAYER 3
#define BODY_FRONT_LAYER 2
#define FIRE_LAYER 1 //If you're on fire
#define TOTAL_LAYERS 31 //KEEP THIS UP-TO-DATE OR SHIT WILL BREAK ;_;
#define TOTAL_LAYERS 30 //KEEP THIS UP-TO-DATE OR SHIT WILL BREAK ;_;
//Human Overlay Index Shortcuts for alternate_worn_layer, layers
//Because I *KNOW* somebody will think layer+1 means "above"
@@ -275,10 +274,6 @@ GLOBAL_LIST_INIT(pda_styles, list(MONO, VT, ORBITRON, SHARE))
GLOBAL_LIST_INIT(pda_reskins, list(PDA_SKIN_CLASSIC = 'icons/obj/pda.dmi', PDA_SKIN_ALT = 'icons/obj/pda_alt.dmi',
PDA_SKIN_RUGGED = 'icons/obj/pda_rugged.dmi', PDA_SKIN_MODERN = 'icons/obj/pda_modern.dmi'))
//Color Defines
#define OOC_COLOR "#002eb8"
#define AOOC_COLOR "#b8002e"
/////////////////////////////////////
// atom.appearence_flags shortcuts //
/////////////////////////////////////
@@ -459,6 +454,13 @@ GLOBAL_LIST_INIT(pda_reskins, list(PDA_SKIN_CLASSIC = 'icons/obj/pda.dmi', PDA_S
#define SUMMON_GUNS "guns"
#define SUMMON_MAGIC "magic"
#define TELEPORT_CHANNEL_BLUESPACE "bluespace" //Classic bluespace teleportation, requires a sender but no receiver
#define TELEPORT_CHANNEL_QUANTUM "quantum" //Quantum-based teleportation, requires both sender and receiver, but is free from normal disruption
#define TELEPORT_CHANNEL_WORMHOLE "wormhole" //Wormhole teleportation, is not disrupted by bluespace fluctuations but tends to be very random or unsafe
#define TELEPORT_CHANNEL_MAGIC "magic" //Magic teleportation, does whatever it wants (unless there's antimagic)
#define TELEPORT_CHANNEL_CULT "cult" //Cult teleportation, does whatever it wants (unless there's holiness)
#define TELEPORT_CHANNEL_FREE "free" //Anything else
//Run the world with this parameter to enable a single run though of the game setup and tear down process with unit tests in between
#define TEST_RUN_PARAMETER "test-run"
//Force the log directory to be something specific in the data/logs folder
@@ -493,4 +495,4 @@ GLOBAL_LIST_INIT(pda_reskins, list(PDA_SKIN_CLASSIC = 'icons/obj/pda.dmi', PDA_S
#define PREF_SAVELOAD_COOLDOWN 5
#define VOMIT_TOXIC 1
#define VOMIT_PURPLE 2
#define VOMIT_PURPLE 2
+3 -2
View File
@@ -26,14 +26,15 @@
#define ABSTRACT (1<<8) // for all things that are technically items but used for various different stuff
#define IMMUTABLE_SLOW (1<<9) //When players should not be able to change the slowdown of the item (Speed potions, ect)
#define SURGICAL_TOOL (1<<10) //Tool commonly used for surgery: won't attack targets in an active surgical operation on help intent (in case of mistakes)
#define NO_UNIFORM_REQUIRED (1<<11) // Can be worn on certain slots (currently belt and id) that would otherwise require an uniform.
// Flags for the clothing_flags var on /obj/item/clothing
#define LAVAPROTECT (1<<0)
#define STOPSPRESSUREDAMAGE (1<<1) //SUIT and HEAD items which stop pressure damage. To stop you taking all pressure damage you must have both a suit and head item with this flag.
#define BLOCK_GAS_SMOKE_EFFECT (1<<2) // blocks the effect that chemical clouds would have on a mob --glasses, mask and helmets ONLY!
#define MASKINTERNALS (1<<3) // mask allows internals
#define ALLOWINTERNALS (1<<3) // mask allows internals
#define NOSLIP (1<<4) //prevents from slipping on wet floors, in space etc
#define THICKMATERIAL (1<<5) //prevents syringes, parapens and hypos if the external suit or helmet (if targeting head) has this flag. Example: space suits, biosuit, bombsuits, thick suits that cover your body.
#define VOICEBOX_TOGGLABLE (1<<6) // The voicebox in this clothing can be toggled.
#define VOICEBOX_DISABLED (1<<7) // The voicebox is currently turned off.
#define VOICEBOX_DISABLED (1<<7) // The voicebox is currently turned off.
+50
View File
@@ -1,5 +1,55 @@
// Radios use a large variety of predefined frequencies.
//say based modes like binary are in living/say.dm
#define RADIO_CHANNEL_COMMON "Common"
#define RADIO_KEY_COMMON ";"
#define RADIO_CHANNEL_SECURITY "Security"
#define RADIO_KEY_SECURITY "s"
#define RADIO_TOKEN_SECURITY ":s"
#define RADIO_CHANNEL_ENGINEERING "Engineering"
#define RADIO_KEY_ENGINEERING "e"
#define RADIO_TOKEN_ENGINEERING ":e"
#define RADIO_CHANNEL_COMMAND "Command"
#define RADIO_KEY_COMMAND "c"
#define RADIO_TOKEN_COMMAND ":c"
#define RADIO_CHANNEL_SCIENCE "Science"
#define RADIO_KEY_SCIENCE "n"
#define RADIO_TOKEN_SCIENCE ":n"
#define RADIO_CHANNEL_MEDICAL "Medical"
#define RADIO_KEY_MEDICAL "m"
#define RADIO_TOKEN_MEDICAL ":m"
#define RADIO_CHANNEL_SUPPLY "Supply"
#define RADIO_KEY_SUPPLY "u"
#define RADIO_TOKEN_SUPPLY ":u"
#define RADIO_CHANNEL_SERVICE "Service"
#define RADIO_KEY_SERVICE "v"
#define RADIO_TOKEN_SERVICE ":v"
#define RADIO_CHANNEL_AI_PRIVATE "AI Private"
#define RADIO_KEY_AI_PRIVATE "o"
#define RADIO_TOKEN_AI_PRIVATE ":o"
#define RADIO_CHANNEL_SYNDICATE "Syndicate"
#define RADIO_KEY_SYNDICATE "t"
#define RADIO_TOKEN_SYNDICATE ":t"
#define RADIO_CHANNEL_CENTCOM "CentCom"
#define RADIO_KEY_CENTCOM "y"
#define RADIO_TOKEN_CENTCOM ":y"
#define RADIO_CHANNEL_CTF_RED "Red Team"
#define RADIO_CHANNEL_CTF_BLUE "Blue Team"
#define MIN_FREE_FREQ 1201 // -------------------------------------------------
// Frequencies are always odd numbers and range from 1201 to 1599.
+2 -1
View File
@@ -25,7 +25,8 @@
#define NOBLIUM_FORMATION_ENERGY 2e9 //1 Mole of Noblium takes the planck energy to condense.
//Research point amounts
#define NOBLIUM_RESEARCH_AMOUNT 1000
#define BZ_RESEARCH_AMOUNT 150
#define BZ_RESEARCH_SCALE 4
#define BZ_RESEARCH_MAX_AMOUNT 400
#define MIASMA_RESEARCH_AMOUNT 160
#define STIMULUM_RESEARCH_AMOUNT 50
//Plasma fusion properties
+26
View File
@@ -6,17 +6,43 @@
//Message modes. Each one defines a radio channel, more or less.
#define MODE_HEADSET "headset"
#define MODE_ROBOT "robot"
#define MODE_R_HAND "right hand"
#define MODE_KEY_R_HAND "r"
#define MODE_L_HAND "left hand"
#define MODE_KEY_L_HAND "l"
#define MODE_INTERCOM "intercom"
#define MODE_KEY_INTERCOM "i"
#define MODE_BINARY "binary"
#define MODE_KEY_BINARY "b"
#define MODE_TOKEN_BINARY ":b"
#define MODE_WHISPER "whisper"
#define MODE_WHISPER_CRIT "whispercrit"
#define MODE_DEPARTMENT "department"
#define MODE_KEY_DEPARTMENT "h"
#define MODE_TOKEN_DEPARTMENT ":h"
#define MODE_ADMIN "admin"
#define MODE_KEY_ADMIN "p"
#define MODE_DEADMIN "deadmin"
#define MODE_KEY_DEADMIN "d"
#define MODE_ALIEN "alientalk"
#define MODE_HOLOPAD "holopad"
#define MODE_CHANGELING "changeling"
#define MODE_KEY_CHANGELING "g"
#define MODE_TOKEN_CHANGELING ":g"
#define MODE_VOCALCORDS "cords"
#define MODE_KEY_VOCALCORDS "x"
#define MODE_MONKEY "monkeyhive"
//Spans. Robot speech, italics, etc. Applied in compose_message().
+1
View File
@@ -93,6 +93,7 @@
#define FIRE_PRIORITY_SERVER_MAINT 10
#define FIRE_PRIORITY_RESEARCH 10
#define FIRE_PRIORITY_VIS 10
#define FIRE_PRIORITY_VORE 10
#define FIRE_PRIORITY_GARBAGE 15
#define FIRE_PRIORITY_WET_FLOORS 20
#define FIRE_PRIORITY_AIR 20
+1
View File
@@ -130,6 +130,7 @@
#define TRAIT_HEAVY_SLEEPER "heavy_sleeper"
#define TRAIT_NIGHT_VISION "night_vision"
#define TRAIT_LIGHT_STEP "light_step"
#define TRAIT_SILENT_STEP "silent_step"
#define TRAIT_SPEEDY_STEP "speedy_step"
#define TRAIT_SPIRITUAL "spiritual"
#define TRAIT_VORACIOUS "voracious"
+25
View File
@@ -0,0 +1,25 @@
/*
Current specifications:
Donator groups in __DEFINES/donator_groupings.dm, config entries in controllers/configuration/entries/donator.dm
3 groups, Tier 1/2/3
Each tier includes the one before it (ascending)
For fast lookups, this is generated using regenerate_donator_grouping_list()
*/
/proc/is_donator_group(ckey, group)
ckey = ckey(ckey) //make sure it's ckey'd.
var/list/L = GLOB.donators_by_group[group]
return L && L.Find(ckey)
/proc/regenerate_donator_grouping_list()
GLOB.donators_by_group = list() //reinit everything
var/list/donator_list = GLOB.donators_by_group //cache
var/list/tier_1 = TIER_1_DONATORS
donator_list[DONATOR_GROUP_TIER_1] = tier_1.Copy() //The .Copy() is to "decouple"/make a new list, rather than letting the global list impact the config list.
var/list/tier_2 = tier_1 + TIER_2_DONATORS //Using + on lists implies making new lists, so we don't need to manually Copy().
donator_list[DONATOR_GROUP_TIER_2] = tier_2
var/list/tier_3 = tier_2 + TIER_3_DONATORS
donator_list[DONATOR_GROUP_TIER_3] = tier_3
+1
View File
@@ -189,6 +189,7 @@
"breasts_size" = pick(GLOB.breasts_size_list),
"breasts_shape" = "Pair",
"breasts_fluid" = "milk",
"breasts_producing" = FALSE,
"has_vag" = FALSE,
"vag_shape" = pick(GLOB.vagina_shapes_list),
"vag_color" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"),
+11
View File
@@ -281,6 +281,17 @@
var/statspage = CONFIG_GET(string/roundstatsurl)
var/info = statspage ? "<a href='?action=openLink&link=[url_encode(statspage)][GLOB.round_id]'>[GLOB.round_id]</a>" : GLOB.round_id
parts += "[GLOB.TAB]Round ID: <b>[info]</b>"
var/list/voting_results = SSvote.stored_gamemode_votes
if(length(voting_results))
parts += "[GLOB.TAB]Voting: "
var/total_score = 0
for(var/choice in voting_results)
var/score = voting_results[choice]
total_score += score
parts += "[GLOB.TAB][GLOB.TAB][choice]: [score]"
parts += "[GLOB.TAB]Shift Duration: <B>[DisplayTimeText(world.time - SSticker.round_start_time)]</B>"
parts += "[GLOB.TAB]Station Integrity: <B>[mode.station_was_nuked ? "<span class='redtext'>Destroyed</span>" : "[popcount["station_integrity"]]%"]</B>"
var/total_players = GLOB.joined_player_list.len
+1
View File
@@ -1487,6 +1487,7 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new)
/obj/item/reagent_containers/food/snacks/grown/nettle, // base type
/obj/item/reagent_containers/food/snacks/deepfryholder,
/obj/item/reagent_containers/food/snacks/grown/shell,
/obj/item/reagent_containers/food/snacks/clothing,
/obj/item/reagent_containers/food/snacks/store/bread
)
blocked |= typesof(/obj/item/reagent_containers/food/snacks/customizable)
+1 -1
View File
@@ -136,7 +136,7 @@ GLOBAL_LIST_INIT(bitfields, list(
"LAVAPROTECT" = LAVAPROTECT,
"STOPSPRESSUREDAMAGE" = STOPSPRESSUREDAMAGE,
"BLOCK_GAS_SMOKE_EFFECT" = BLOCK_GAS_SMOKE_EFFECT,
"MASKINTERNALS" = MASKINTERNALS,
"ALLOWINTERNALS" = ALLOWINTERNALS,
"NOSLIP" = NOSLIP,
"THICKMATERIAL" = THICKMATERIAL,
"VOICEBOX_TOGGLABLE" = VOICEBOX_TOGGLABLE,
+5
View File
@@ -100,6 +100,11 @@ GLOBAL_LIST_INIT(security_depts_prefs, list(SEC_DEPT_RANDOM, SEC_DEPT_NONE, SEC_
#define DDUFFELBAG "Department Duffel Bag"
GLOBAL_LIST_INIT(backbaglist, list(DBACKPACK, DSATCHEL, DDUFFELBAG, GBACKPACK, GSATCHEL, GDUFFELBAG, LSATCHEL))
//Suit/Skirt
#define PREF_SUIT "Jumpsuit"
#define PREF_SKIRT "Jumpskirt"
GLOBAL_LIST_INIT(jumpsuitlist, list(PREF_SUIT, PREF_SKIRT))
//Uplink spawn loc
#define UPLINK_PDA "PDA"
#define UPLINK_RADIO "Radio"
+2 -2
View File
@@ -73,7 +73,7 @@ GLOBAL_LIST_INIT(maintenance_loot, list(
/obj/item/paper/crumpled = 1,
/obj/item/pen = 1,
/obj/item/reagent_containers/spray/pestspray = 1,
/obj/item/reagent_containers/glass/rag = 3,
/obj/item/reagent_containers/rag = 3,
/obj/item/stock_parts/cell = 3,
/obj/item/storage/belt/utility = 2,
/obj/item/storage/box = 2,
@@ -107,7 +107,7 @@ GLOBAL_LIST_INIT(maintenance_loot, list(
/obj/item/storage/toolbox/artistic = 2,
/obj/item/toy/eightball = 1,
/obj/item/reagent_containers/pill/floorpill = 1,
/obj/item/reagent_containers/food/snacks/cannedpeaches/maint = 1,
/obj/item/reagent_containers/food/snacks/cannedpeaches/maint = 2,
/obj/item/storage/daki = 3, //VERY IMPORTANT CIT CHANGE - adds bodypillows to maint
/obj/item/storage/pill_bottle/penis_enlargement = 2,
/obj/item/storage/pill_bottle/breast_enlargement = 2,
+1
View File
@@ -0,0 +1 @@
GLOBAL_LIST_EMPTY(donators_by_group) //group id = donator list of ckeys
+1 -1
View File
@@ -67,7 +67,7 @@
/mob/proc/ClickOn( atom/A, params )
if(world.time <= next_click)
return
next_click = world.time + 1
next_click = world.time + world.tick_lag
if(check_click_intercept(params,A))
return
+1
View File
@@ -79,6 +79,7 @@
#define ui_drop_throw "EAST-1:28,SOUTH+1:7"
#define ui_pull_resist "EAST-2:26,SOUTH+1:7"
#define ui_movi "EAST-2:26,SOUTH:5"
#define ui_sprintbufferloc "EAST-2:26,SOUTH:18"
#define ui_acti "EAST-3:24,SOUTH:5"
#define ui_zonesel "EAST-1:28,SOUTH:5"
#define ui_acti_alt "EAST-1:28,SOUTH:5" //alternative intent switcher for when the interface is hidden (F12)
+7
View File
@@ -134,6 +134,13 @@
static_inventory += using
//END OF CITADEL CHANGES
//same as above but buffer.
using = new /obj/screen/sprint_buffer
using.screen_loc = ui_sprintbufferloc
sprint_buffer = using
static_inventory += using
using = new /obj/screen/drop()
using.icon = ui_style
using.screen_loc = ui_drop_throw
+12 -9
View File
@@ -290,16 +290,19 @@
icon_state = "internal0"
else
if(!C.getorganslot(ORGAN_SLOT_BREATHING_TUBE))
if(!istype(C.wear_mask, /obj/item/clothing/mask))
var/obj/item/clothing/check
var/internals = FALSE
for(check in GET_INTERNAL_SLOTS(C))
if(istype(check, /obj/item/clothing/mask))
var/obj/item/clothing/mask/M = check
if(M.mask_adjusted)
M.adjustmask(C)
if(CHECK_BITFIELD(check.clothing_flags, ALLOWINTERNALS))
internals = TRUE
if(!internals)
to_chat(C, "<span class='warning'>You are not wearing an internals mask!</span>")
return 1
else
var/obj/item/clothing/mask/M = C.wear_mask
if(M.mask_adjusted) // if mask on face but pushed down
M.adjustmask(C) // adjust it back
if( !(M.clothing_flags & MASKINTERNALS) )
to_chat(C, "<span class='warning'>You are not wearing an internals mask!</span>")
return
return
var/obj/item/I = C.is_holding_item_of_type(/obj/item/tank)
if(I)
+4
View File
@@ -171,3 +171,7 @@
if(prob(2))
playsound(src, 'sound/weapons/dink.ogg', 30, 1)
return 1
/obj/item/proc/getweight()
return total_mass || w_class * 1.25
@@ -19,6 +19,7 @@
var/abstract_type = /datum/config_entry //do not instantiate if type matches this
var/vv_VAS = TRUE //Force validate and set on VV. VAS proccall guard will run regardless.
var/postload_required = FALSE //requires running OnPostload()
var/dupes_allowed = FALSE
@@ -72,6 +73,9 @@
/datum/config_entry/proc/DeprecationUpdate(value)
return
/datum/config_entry/proc/OnPostload()
return
/datum/config_entry/string
config_entry_value = ""
abstract_type = /datum/config_entry/string
@@ -80,7 +84,7 @@
/datum/config_entry/string/vv_edit_var(var_name, var_value)
return var_name != "auto_trim" && ..()
/datum/config_entry/string/ValidateAndSet(str_val)
/datum/config_entry/string/ValidateAndSet(str_val, during_load)
if(!VASProcCallGuard(str_val))
return FALSE
config_entry_value = auto_trim ? trim(str_val) : str_val
@@ -101,6 +101,7 @@
log_config("Loading config file [filename]...")
var/list/lines = world.file2list("[directory]/[filename]")
var/list/_entries = entries
var/list/postload_required = list()
for(var/L in lines)
L = trim(L)
if(!L)
@@ -157,18 +158,24 @@
else
warning("[new_ver.type] is deprecated but gave no proper return for DeprecationUpdate()")
var/validated = E.ValidateAndSet(value)
var/validated = E.ValidateAndSet(value, TRUE)
if(!validated)
log_config("Failed to validate setting \"[value]\" for [entry]")
else
if(E.modified && !E.dupes_allowed)
log_config("Duplicate setting for [entry] ([value], [E.resident_file]) detected! Using latest.")
if(E.postload_required)
postload_required[E] = TRUE
E.resident_file = filename
if(validated)
E.modified = TRUE
for(var/i in postload_required)
var/datum/config_entry/E = i
E.OnPostload()
++.
/datum/controller/configuration/can_vv_get(var_name)
@@ -0,0 +1,22 @@
/datum/config_entry/keyed_list/donator_group
key_mode = KEY_MODE_TEXT
value_mode = VALUE_MODE_FLAG
abstract_type = /datum/config_entry/keyed_list/donator_group
//If we're in the middle of a config load, only do the regeneration afterwards to prevent this from wasting a massive amount of CPU for list regenerations.
/datum/config_entry/keyed_list/donator_group/ValidateAndSet(str_val, during_load)
. = ..()
if(. && during_load)
regenerate_donator_grouping_list()
/datum/config_entry/keyed_list/donator_group/OnPostload()
. = ..()
regenerate_donator_grouping_list()
//This is kinda weird in that the config entries are defined here but all the handling/calculations are in __HELPERS/donator_groupings.dm
/datum/config_entry/keyed_list/donator_group/tier_1_donators
/datum/config_entry/keyed_list/donator_group/tier_2_donators
/datum/config_entry/keyed_list/donator_group/tier_3_donators
+2 -1
View File
@@ -23,7 +23,7 @@ SUBSYSTEM_DEF(input)
// This is for when macro sets are eventualy datumized
/datum/controller/subsystem/input/proc/setup_default_macro_sets()
var/list/static/default_macro_sets
if(default_macro_sets)
macro_sets = default_macro_sets
return
@@ -49,6 +49,7 @@ SUBSYSTEM_DEF(input)
"old_hotkeys" = list(
"Tab" = "\".winset \\\"mainwindow.macro=old_default input.focus=true input.background-color=[COLOR_INPUT_ENABLED]\\\"\"",
"O" = "ooc",
"L" = "looc",
"T" = "say",
"M" = "me",
"Back" = "\".winset \\\"input.text=\\\"\\\"\\\"\"", // This makes it so backspace can remove default inputs
+1 -1
View File
@@ -437,7 +437,7 @@ SUBSYSTEM_DEF(job)
if(job.custom_spawn_text)
to_chat(M, "<b>[job.custom_spawn_text]</b>")
if(CONFIG_GET(number/minimal_access_threshold))
to_chat(M, "<FONT color='blue'><B>As this station was initially staffed with a [CONFIG_GET(flag/jobs_have_minimal_access) ? "full crew, only your job's necessities" : "skeleton crew, additional access may"] have been added to your ID card.</B></font>")
to_chat(M, "<span class='notice'><B>As this station was initially staffed with a [CONFIG_GET(flag/jobs_have_minimal_access) ? "full crew, only your job's necessities" : "skeleton crew, additional access may"] have been added to your ID card.</B></span>")
if(job && H)
if(job.dresscodecompliant)// CIT CHANGE - dress code compliance
@@ -9,6 +9,7 @@ PROCESSING_SUBSYSTEM_DEF(quirks)
runlevels = RUNLEVEL_GAME
var/list/quirks = list() //Assoc. list of all roundstart quirk datum types; "name" = /path/
var/list/quirk_names_by_path = list()
var/list/quirk_points = list() //Assoc. list of quirk names and their "point cost"; positive numbers are good traits, and negative ones are bad
var/list/quirk_objects = list() //A list of all quirk objects in the game, since some may process
@@ -22,11 +23,68 @@ PROCESSING_SUBSYSTEM_DEF(quirks)
var/datum/quirk/T = V
quirks[initial(T.name)] = T
quirk_points[initial(T.name)] = initial(T.value)
quirk_names_by_path[T] = initial(T.name)
/datum/controller/subsystem/processing/quirks/proc/AssignQuirks(mob/living/user, client/cli, spawn_effects)
/datum/controller/subsystem/processing/quirks/proc/AssignQuirks(mob/living/user, client/cli, spawn_effects, roundstart = FALSE, datum/job/job, silent = FALSE, mob/to_chat_target)
GenerateQuirks(cli)
for(var/V in cli.prefs.character_quirks)
var/list/quirks = cli.prefs.character_quirks.Copy()
var/list/cut
if(job && job.blacklisted_quirks)
cut = filter_quirks(quirks, job)
for(var/V in quirks)
user.add_quirk(V, spawn_effects)
if(!silent && LAZYLEN(cut))
to_chat(to_chat_target || user, "<span class='boldwarning'>All of your non-neutral character quirks have been cut due to these quirks conflicting with your job assignment: [english_list(cut)].</span>")
/datum/controller/subsystem/processing/quirks/proc/quirk_path_by_name(name)
return quirks[name]
/datum/controller/subsystem/processing/quirks/proc/quirk_points_by_name(name)
return quirk_points[name]
/datum/controller/subsystem/processing/quirks/proc/quirk_name_by_path(path)
return quirk_names_by_path[path]
/datum/controller/subsystem/processing/quirks/proc/total_points(list/quirk_names)
. = 0
for(var/i in quirk_names)
. += quirk_points_by_name(i)
/datum/controller/subsystem/processing/quirks/proc/filter_quirks(list/quirks, datum/job/job)
var/list/cut = list()
var/list/banned_names = list()
for(var/i in job.blacklisted_quirks)
var/name = quirk_name_by_path(i)
if(name)
banned_names += name
var/list/blacklisted = quirks & banned_names
if(length(blacklisted))
for(var/i in blacklisted)
quirks -= i
cut += i
/* //Code to automatically reduce positive quirks until balance is even.
var/points_used = total_points(quirks)
if(points_used > 0)
//they owe us points, let's collect.
for(var/i in quirks)
var/points = quirk_points_by_name(i)
if(points > 0)
cut += i
quirks -= i
points_used -= points
if(points_used <= 0)
break
*/
//Nah, let's null all non-neutrals out.
if(cut.len)
for(var/i in quirks)
if(quirk_points_by_name(i) != 0)
//cut += i -- Commented out: Only show the ones that triggered the quirk purge.
quirks -= i
return cut
/datum/controller/subsystem/processing/quirks/proc/GenerateQuirks(client/user)
if(user.prefs.character_quirks.len)
+5 -5
View File
@@ -229,7 +229,7 @@ SUBSYSTEM_DEF(ticker)
if(GLOB.secret_force_mode != "secret")
var/datum/game_mode/smode = config.pick_mode(GLOB.secret_force_mode)
if(!smode.can_start())
message_admins("\blue Unable to force secret [GLOB.secret_force_mode]. [smode.required_players] players and [smode.required_enemies] eligible antagonists needed.")
message_admins("<span class='notice'>Unable to force secret [GLOB.secret_force_mode]. [smode.required_players] players and [smode.required_enemies] eligible antagonists needed.</span>")
else
mode = smode
@@ -302,14 +302,14 @@ SUBSYSTEM_DEF(ticker)
round_start_time = world.time
SSdbcore.SetRoundStart()
to_chat(world, "<FONT color='blue'><B>Welcome to [station_name()], enjoy your stay!</B></FONT>")
to_chat(world, "<span class='notice'><B>Welcome to [station_name()], enjoy your stay!</B></span>")
SEND_SOUND(world, sound('sound/ai/welcome.ogg'))
current_state = GAME_STATE_PLAYING
Master.SetRunLevel(RUNLEVEL_GAME)
if(SSevents.holidays)
to_chat(world, "<font color='blue'>and...</font>")
to_chat(world, "<span class='notice'>and...</span>")
for(var/holidayname in SSevents.holidays)
var/datum/holiday/holiday = SSevents.holidays[holidayname]
to_chat(world, "<h4>[holiday.greet()]</h4>")
@@ -385,7 +385,7 @@ SUBSYSTEM_DEF(ticker)
if(player.mind.assigned_role != player.mind.special_role)
SSjob.EquipRank(N, player.mind.assigned_role, 0)
if(CONFIG_GET(flag/roundstart_traits) && ishuman(N.new_character))
SSquirks.AssignQuirks(N.new_character, N.client, TRUE)
SSquirks.AssignQuirks(N.new_character, N.client, TRUE, TRUE, SSjob.GetJob(player.mind.assigned_role), FALSE, N)
CHECK_TICK
if(captainless)
for(var/mob/dead/new_player/N in GLOB.player_list)
@@ -425,7 +425,7 @@ SUBSYSTEM_DEF(ticker)
m = pick(memetips)
if(m)
to_chat(world, "<font color='purple'><b>Tip of the round: </b>[html_encode(m)]</font>")
to_chat(world, "<span class='purple'><b>Tip of the round: </b>[html_encode(m)]</span>")
/datum/controller/subsystem/ticker/proc/check_queue()
var/hpc = CONFIG_GET(number/hard_popcap)
+1 -1
View File
@@ -7,7 +7,7 @@
SUBSYSTEM_DEF(bellies)
name = "Bellies"
priority = 5
priority = FIRE_PRIORITY_VORE
wait = 1 SECONDS
flags = SS_KEEP_TIMING|SS_NO_INIT
runlevels = RUNLEVEL_GAME|RUNLEVEL_POSTGAME
+7
View File
@@ -18,6 +18,8 @@ SUBSYSTEM_DEF(vote)
var/obfuscated = FALSE//CIT CHANGE - adds obfuscated/admin-only votes
var/list/stored_gamemode_votes = list() //Basically the last voted gamemode is stored here for end-of-round use.
/datum/controller/subsystem/vote/fire() //called by master_controller
if(mode)
time_remaining = round((started_time + CONFIG_GET(number/vote_period) - world.time)/10)
@@ -85,15 +87,20 @@ SUBSYSTEM_DEF(vote)
/datum/controller/subsystem/vote/proc/announce_result()
var/list/winners = get_result()
var/text
var/was_roundtype_vote = mode == "roundtype"
if(winners.len > 0)
if(question)
text += "<b>[question]</b>"
else
text += "<b>[capitalize(mode)] Vote</b>"
if(was_roundtype_vote)
stored_gamemode_votes = list()
for(var/i=1,i<=choices.len,i++)
var/votes = choices[choices[i]]
if(!votes)
votes = 0
if(was_roundtype_vote)
stored_gamemode_votes[choices[i]] = votes
text += "\n<b>[choices[i]]:</b> [obfuscated ? "???" : votes]" //CIT CHANGE - adds obfuscated votes
if(mode != "custom")
if(winners.len > 1 && !obfuscated) //CIT CHANGE - adds obfuscated votes
+18 -11
View File
@@ -494,6 +494,7 @@
else
to_chat(owner, "<span class='cultitalic'>Your hands are full!</span>")
//MGS Box
/datum/action/item_action/agent_box
name = "Deploy Box"
desc = "Find inner peace, here, in the box."
@@ -502,21 +503,27 @@
icon_icon = 'icons/mob/actions/actions_items.dmi'
button_icon_state = "deploy_box"
var/cooldown = 0
var/obj/structure/closet/cardboard/agent/box
var/boxtype = /obj/structure/closet/cardboard/agent
//Handles open and closing the box
/datum/action/item_action/agent_box/Trigger()
if(!..())
. = ..()
if(!.)
return FALSE
if(QDELETED(box))
if(cooldown < world.time - 100)
box = new(owner.drop_location())
owner.forceMove(box)
cooldown = world.time
owner.playsound_local(box, 'sound/misc/box_deploy.ogg', 50, TRUE)
else
owner.forceMove(box.drop_location())
if(istype(owner.loc, /obj/structure/closet/cardboard/agent))
var/obj/structure/closet/cardboard/agent/box = owner.loc
owner.playsound_local(box, 'sound/misc/box_deploy.ogg', 50, TRUE)
box.open()
return
//Box closing from here on out.
if(!isturf(owner.loc)) //Don't let the player use this to escape mechs/welded closets.
to_chat(owner, "<span class = 'notice'>You need more space to activate this implant.</span>")
return
if(cooldown < world.time - 100)
var/box = new boxtype(owner.drop_location())
owner.forceMove(box)
cooldown = world.time
owner.playsound_local(box, 'sound/misc/box_deploy.ogg', 50, TRUE)
QDEL_NULL(box)
//Preset for spells
/datum/action/spell_action
+20 -17
View File
@@ -14,15 +14,18 @@
var/turf/open/T = get_turf(parent)
if(!istype(T))
return
var/mob/living/LM = parent
var/v = volume
var/e = e_range
if(!T.footstep || LM.buckled || LM.lying || !LM.canmove || LM.resting || LM.buckled || LM.throwing || LM.movement_type & (VENTCRAWLING | FLYING))
if (LM.lying && !(!T.footstep || LM.movement_type & (VENTCRAWLING | FLYING))) //play crawling sound if we're lying
if (LM.lying && !LM.buckled && !(!T.footstep || LM.movement_type & (VENTCRAWLING | FLYING))) //play crawling sound if we're lying
playsound(T, 'sound/effects/footstep/crawl1.ogg', 15 * v)
return
if(HAS_TRAIT(LM, TRAIT_SILENT_STEP))
return
if(iscarbon(LM))
var/mob/living/carbon/C = LM
if(!C.get_bodypart(BODY_ZONE_L_LEG) && !C.get_bodypart(BODY_ZONE_R_LEG))
@@ -31,18 +34,18 @@
v /= 2
e -= 5
steps++
if(steps >= 3)
steps = 0
else
return
if(prob(80) && !LM.has_gravity(T)) // don't need to step as often when you hop around
return
//begin playsound shenanigans//
//for barefooted non-clawed mobs like monkeys
if(isbarefoot(LM))
playsound(T, pick(GLOB.barefootstep[T.barefootstep][1]),
@@ -50,19 +53,19 @@
TRUE,
GLOB.barefootstep[T.barefootstep][3] + e)
return
//for xenomorphs, dogs, and other clawed mobs
if(isclawfoot(LM))
if(isalienadult(LM)) //xenos are stealthy and get quieter footsteps
v /= 3
e -= 5
playsound(T, pick(GLOB.clawfootstep[T.clawfootstep][1]),
GLOB.clawfootstep[T.clawfootstep][2] * v,
TRUE,
GLOB.clawfootstep[T.clawfootstep][3] + e)
return
//for megafauna and other large and imtimidating mobs such as the bloodminer
if(isheavyfoot(LM))
playsound(T, pick(GLOB.heavyfootstep[T.heavyfootstep][1]),
@@ -70,12 +73,12 @@
TRUE,
GLOB.heavyfootstep[T.heavyfootstep][3] + e)
return
//for slimes
if(isslime(LM))
if(isslime(LM))
playsound(T, 'sound/effects/footstep/slime1.ogg', 15 * v)
return
//for (simple) humanoid mobs (clowns, russians, pirates, etc.)
if(isshoefoot(LM))
if(!ishuman(LM))
@@ -87,17 +90,17 @@
if(ishuman(LM)) //for proper humans, they're special
var/mob/living/carbon/human/H = LM
var/feetCover = (H.wear_suit && (H.wear_suit.body_parts_covered & FEET)) || (H.w_uniform && (H.w_uniform.body_parts_covered & FEET))
if (H.dna.features["taur"] == "Naga" || H.dna.features["taur"] == "Tentacle") //are we a naga or tentacle taur creature
playsound(T, 'sound/effects/footstep/crawl1.ogg', 15 * v)
return
if(H.shoes || feetCover) //are we wearing shoes
playsound(T, pick(GLOB.footstep[T.footstep][1]),
GLOB.footstep[T.footstep][2] * v,
TRUE,
GLOB.footstep[T.footstep][3] + e)
if((!H.shoes && !feetCover)) //are we NOT wearing shoes
playsound(T, pick(GLOB.barefootstep[T.barefootstep][1]),
GLOB.barefootstep[T.barefootstep][2] * v,
+4 -8
View File
@@ -46,9 +46,9 @@
RegisterSignal(parent, COMSIG_NANITE_ADD_PROGRAM, .proc/add_program)
RegisterSignal(parent, COMSIG_NANITE_SCAN, .proc/nanite_scan)
RegisterSignal(parent, COMSIG_NANITE_SYNC, .proc/sync)
RegisterSignal(parent, COMSIG_ATOM_EMP_ACT, .proc/on_emp)
if(isliving(parent))
RegisterSignal(parent, COMSIG_ATOM_EMP_ACT, .proc/on_emp)
RegisterSignal(parent, COMSIG_MOB_DEATH, .proc/on_death)
RegisterSignal(parent, COMSIG_MOB_ALLOWED, .proc/check_access)
RegisterSignal(parent, COMSIG_LIVING_ELECTROCUTE_ACT, .proc/on_shock)
@@ -169,23 +169,19 @@
holder.icon_state = "nanites[nanite_percent]"
/datum/component/nanites/proc/on_emp(datum/source, severity)
nanite_volume *= (rand(0.60, 0.90)) //Lose 10-40% of nanites
adjust_nanites(null, -(rand(5, 50))) //Lose 5-50 flat nanite volume
if(prob(40/severity))
cloud_id = 0
adjust_nanites(null, -(nanite_volume * 0.3 + 50)) //Lose 30% variable and 50 flat nanite volume.
for(var/X in programs)
var/datum/nanite_program/NP = X
NP.on_emp(severity)
/datum/component/nanites/proc/on_shock(datum/source, shock_damage)
nanite_volume *= (rand(0.45, 0.80)) //Lose 20-55% of nanites
adjust_nanites(null, -(rand(5, 50))) //Lose 5-50 flat nanite volume
adjust_nanites(null, -(nanite_volume * (shock_damage * 0.005) + shock_damage)) //0.5% of shock damage (@ 50 damage it'd drain 25%) + shock damage flat volume
for(var/X in programs)
var/datum/nanite_program/NP = X
NP.on_shock(shock_damage)
/datum/component/nanites/proc/on_minor_shock(datum/source)
adjust_nanites(null, -(rand(5, 15))) //Lose 5-15 flat nanite volume
adjust_nanites(null, -25)
for(var/X in programs)
var/datum/nanite_program/NP = X
NP.on_minor_shock()
+1 -1
View File
@@ -27,7 +27,7 @@
C.stuttering = 20
if((!istype(H.dna.species, /datum/species/skeleton)) && (!istype(H.dna.species, /datum/species/golem)) && (!istype(H.dna.species, /datum/species/android)) && (!istype(H.dna.species, /datum/species/jelly)))
C.adjustStaminaLoss(25) //boneless humanoids don't lose the will to live
to_chat(C, "<font color='red' size='4'><B>DOOT</B></span>")
to_chat(C, "<font color='red' size='4'><B>DOOT</B></font>")
spectral_change(H)
else //the sound will spook monkeys.
@@ -36,3 +36,4 @@
/datum/component/storage/concrete/emergency/proc/unlock_me(datum/source)
if(locked)
set_locked(source, FALSE)
return TRUE
+2 -2
View File
@@ -1351,8 +1351,8 @@
if(amount != 0)
log_admin("[key_name(usr)] dealt [amount] amount of [Text] damage to [L] ")
var/msg = "<span class='notice'>[key_name(usr)] dealt [amount] amount of [Text] damage to [L] </span>"
message_admins(msg)
var/msg = "[key_name(usr)] dealt [amount] amount of [Text] damage to [L] </span>"
message_admins("<span class='notice'>[msg]</span>")
admin_ticket_log(L, msg)
vv_update_display(L, Text, "[newamt]")
else if(href_list["copyoutfit"])
+38 -5
View File
@@ -31,13 +31,43 @@
var/id = ""
var/processing = FALSE
var/mutable = TRUE //set to FALSE to prevent most in-game methods of altering the disease via virology
var/oldres
// The order goes from easy to cure to hard to cure.
var/static/list/advance_cures = list(
"sodiumchloride", "sugar", "orangejuice",
"spaceacillin", "salglu_solution", "ethanol",
"leporazine", "synaptizine", "lipolicide",
"silver", "gold"
list( // level 1
"copper", "silver", "iodine", "iron", "carbon"
),
list( // level 2
"potassium", "ethanol", "lithium", "silicon", "bromine"
),
list( // level 3
"sodiumchloride", "sugar", "orangejuice", "tomatojuice", "milk"
),
list( //level 4
"spaceacillin", "salglu_solution", "epinephrine", "charcoal"
),
list( //level 5
"oil", "synaptizine", "mannitol", "space_drugs", "cryptobiolin"
),
list( // level 6
"phenol", "inacusiate", "oculine", "antihol"
),
list( // level 7
"leporazine", "mindbreaker", "corazone"
),
list( // level 8
"pax", "happiness", "ephedrine"
),
list( // level 9
"lipolicide", "sal_acid"
),
list( // level 10
"haloperidol", "aranesp", "diphenhydramine"
),
list( //level 11
"modafinil", "anacea"
)
)
/*
@@ -250,7 +280,10 @@
/datum/disease/advance/proc/GenerateCure()
if(properties && properties.len)
var/res = CLAMP(properties["resistance"] - (symptoms.len / 2), 1, advance_cures.len)
cures = list(advance_cures[res])
if(res == oldres)
return
cures = list(pick(advance_cures[res]))
oldres = res
// Get the cure name from the cure_id
var/datum/reagent/D = GLOB.chemical_reagents_list[cures[1]]
@@ -25,7 +25,7 @@
if(!..())
return
var/mob/living/carbon/M = A.affected_mob
SEND_SIGNAL(M, COMSIG_NANITE_ADJUST_VOLUME, 0.5 * power)
SEND_SIGNAL(M, COMSIG_NANITE_ADJUST_VOLUME, power)
if(reverse_boost && SEND_SIGNAL(M, COMSIG_HAS_NANITES))
if(prob(A.stage_prob))
A.stage = min(A.stage + 1,A.max_stages)
@@ -60,4 +60,4 @@
SEND_SIGNAL(M, COMSIG_NANITE_ADJUST_VOLUME, -0.4 * power)
if(reverse_boost && SEND_SIGNAL(M, COMSIG_HAS_NANITES))
if(prob(A.stage_prob))
A.stage = min(A.stage + 1,A.max_stages)
A.stage = min(A.stage + 1,A.max_stages)
+12 -2
View File
@@ -21,8 +21,8 @@
/datum/ert/amber
code = "Amber"
leader_role = /datum/antagonist/ert/commander/red
roles = list(/datum/antagonist/ert/security/red, /datum/antagonist/ert/medic/red, /datum/antagonist/ert/engineer/red)
leader_role = /datum/antagonist/ert/commander/amber
roles = list(/datum/antagonist/ert/security/amber, /datum/antagonist/ert/medic/amber, /datum/antagonist/ert/engineer/amber)
/datum/ert/red
leader_role = /datum/antagonist/ert/commander/red
@@ -55,3 +55,13 @@
rename_team = "Inquisition"
mission = "Destroy any traces of paranormal activity aboard the station."
polldesc = "a Nanotrasen paranormal response team"
/datum/ert/greybois
code = "Green"
teamsize = 1
opendoors = FALSE
enforce_human = FALSE
roles = /datum/antagonist/greybois
leader_role = /datum/antagonist/greybois/greygod
rename_team = "Emergency Assistants"
polldesc = "an Emergency Assistant"
+46 -22
View File
@@ -5,11 +5,19 @@
// effectout: effect to show right after teleportation
// asoundin: soundfile to play before teleportation
// asoundout: soundfile to play after teleportation
// force_teleport: if false, teleport will use Move() proc (dense objects will prevent teleportation)
// no_effects: disable the default effectin/effectout of sparks
/proc/do_teleport(atom/movable/teleatom, atom/destination, precision=null, force_teleport=TRUE, datum/effect_system/effectin=null, datum/effect_system/effectout=null, asoundin=null, asoundout=null, no_effects=FALSE)
// forceMove: if false, teleport will use Move() proc (dense objects will prevent teleportation)
// forced: whether or not to ignore no_teleport
/proc/do_teleport(atom/movable/teleatom, atom/destination, precision=null, forceMove = TRUE, datum/effect_system/effectin=null, datum/effect_system/effectout=null, asoundin=null, asoundout=null, no_effects=FALSE, channel=TELEPORT_CHANNEL_BLUESPACE, forced = FALSE)
// teleporting most effects just deletes them
if(iseffect(teleatom) && !istype(teleatom, /obj/effect/dummy/chameleon))
var/static/list/delete_atoms = typecacheof(list(
/obj/effect,
)) - typecacheof(list(
/obj/effect/dummy/chameleon,
/obj/effect/wisp,
/obj/effect/mob_spawn
))
if(delete_atoms[teleatom.type])
qdel(teleatom)
return FALSE
@@ -17,25 +25,37 @@
// if the precision is not specified, default to 0, but apply BoH penalties
if (isnull(precision))
precision = 0
if(istype(teleatom, /obj/item/storage/backpack/holding))
precision = rand(1,100)
var/static/list/bag_cache = typecacheof(/obj/item/storage/backpack/holding)
var/list/bagholding = typecache_filter_list(teleatom.GetAllContents(), bag_cache)
if(bagholding.len)
precision = max(rand(1,100)*bagholding.len,100)
if(isliving(teleatom))
var/mob/living/MM = teleatom
to_chat(MM, "<span class='warning'>The bluespace interface on your bag of holding interferes with the teleport!</span>")
switch(channel)
if(TELEPORT_CHANNEL_BLUESPACE)
if(istype(teleatom, /obj/item/storage/backpack/holding))
precision = rand(1,100)
// if effects are not specified and not explicitly disabled, sparks
if ((!effectin || !effectout) && !no_effects)
var/datum/effect_system/spark_spread/sparks = new
sparks.set_up(5, 1, teleatom)
if (!effectin)
effectin = sparks
if (!effectout)
effectout = sparks
var/static/list/bag_cache = typecacheof(/obj/item/storage/backpack/holding)
var/list/bagholding = typecache_filter_list(teleatom.GetAllContents(), bag_cache)
if(bagholding.len)
precision = max(rand(1,100)*bagholding.len,100)
if(isliving(teleatom))
var/mob/living/MM = teleatom
to_chat(MM, "<span class='warning'>The bluespace interface on your bag of holding interferes with the teleport!</span>")
// if effects are not specified and not explicitly disabled, sparks
if ((!effectin || !effectout) && !no_effects)
var/datum/effect_system/spark_spread/sparks = new
sparks.set_up(5, 1, teleatom)
if (!effectin)
effectin = sparks
if (!effectout)
effectout = sparks
if(TELEPORT_CHANNEL_QUANTUM)
// if effects are not specified and not explicitly disabled, rainbow sparks
if ((!effectin || !effectout) && !no_effects)
var/datum/effect_system/spark_spread/quantum/sparks = new
sparks.set_up(5, 1, teleatom)
if (!effectin)
effectin = sparks
if (!effectout)
effectout = sparks
// perform the teleport
var/turf/curturf = get_turf(teleatom)
@@ -45,11 +65,15 @@
return FALSE
var/area/A = get_area(curturf)
if(A.noteleport)
var/area/B = get_area(destturf)
if(!forced && (A.noteleport || B.noteleport))
return FALSE
if(SEND_SIGNAL(destturf, COMSIG_ATOM_INTERCEPT_TELEPORT, channel, curturf, destturf))
return FALSE
tele_play_specials(teleatom, curturf, effectin, asoundin)
var/success = force_teleport ? teleatom.forceMove(destturf) : teleatom.Move(destturf)
var/success = forceMove ? teleatom.forceMove(destturf) : teleatom.Move(destturf)
if (success)
log_game("[key_name(teleatom)] has teleported from [loc_name(curturf)] to [loc_name(destturf)]")
tele_play_specials(teleatom, destturf, effectout, asoundout)
+1 -1
View File
@@ -18,7 +18,7 @@
var/map_file = "BoxStation.dmm"
var/traits = null
var/space_ruin_levels = 1 //Citadel edit - reduces the default space ruin z-level count to 1
var/space_ruin_levels = 2
var/space_empty_levels = 1
var/minetype = "lavaland"
+1
View File
@@ -2,6 +2,7 @@
var/name = "Martial Art"
var/streak = ""
var/max_streak_length = 6
var/id = "" //ID, used by mind/has_martialartcode\game\objects\items\granters.dm:345:error: user.mind.has_martialart: undefined proccode\game\objects\items\granters.dm:345:error: user.mind.has_martialart: undefined proccode\game\objects\items\granters.dm:345:error: user.mind.has_martialart: undefined proccode\game\objects\items\granters.dm:345:error: user.mind.has_martialart: undefined proccode\game\objects\items\granters.dm:345:error: user.mind.has_martialart: undefined proc
var/current_target
var/datum/martial_art/base // The permanent style. This will be null unless the martial art is temporary
var/deflection_chance = 0 //Chance to deflect projectiles
+1
View File
@@ -1,5 +1,6 @@
/datum/martial_art/boxing
name = "Boxing"
id = MARTIALART_BOXING
/datum/martial_art/boxing/disarm_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
to_chat(A, "<span class='warning'>Can't disarm while boxing!</span>")
+1
View File
@@ -6,6 +6,7 @@
/datum/martial_art/cqc
name = "CQC"
id = MARTIALART_CQC
help_verb = /mob/living/carbon/human/proc/CQC_help
block_chance = 75
var/just_a_cook = FALSE
+4 -3
View File
@@ -1,5 +1,6 @@
/datum/martial_art/krav_maga
name = "Krav Maga"
id = MARTIALART_KRAVMAGA
var/datum/action/neck_chop/neckchop = new/datum/action/neck_chop()
var/datum/action/leg_sweep/legsweep = new/datum/action/leg_sweep()
var/datum/action/lung_punch/lungpunch = new/datum/action/lung_punch()
@@ -85,14 +86,14 @@
return 1
return 0
/datum/martial_art/krav_maga/proc/leg_sweep(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
/datum/martial_art/krav_maga/proc/leg_sweep(mob/living/carbon/human/A, mob/living/carbon/human/D)
if(D.lying || D.IsKnockdown())
return 0
D.visible_message("<span class='warning'>[A] leg sweeps [D]!</span>", \
"<span class='userdanger'>[A] leg sweeps you!</span>")
playsound(get_turf(A), 'sound/effects/hit_kick.ogg', 50, 1, -1)
D.apply_damage(5, BRUTE)
D.Knockdown(40, override_hardstun = 0.01, 25)
D.Knockdown(40, override_hardstun = 0.01, override_stamdmg = 25)
log_combat(A, D, "leg sweeped")
return 1
@@ -196,7 +197,7 @@
name = "combat gloves plus"
desc = "These tactical gloves are fireproof and shock resistant, and using nanochip technology it teaches you the powers of krav maga."
icon_state = "combat"
item_state = "blackglovesplus"
item_state = "blackgloves"
siemens_coefficient = 0
permeability_coefficient = 0.05
strip_delay = 80
+1
View File
@@ -1,5 +1,6 @@
/datum/martial_art/mushpunch
name = "Mushroom Punch"
id = MARTIALART_MUSHPUNCH
/datum/martial_art/mushpunch/harm_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
var/atk_verb
+1
View File
@@ -4,6 +4,7 @@
/datum/martial_art/plasma_fist
name = "Plasma Fist"
id = MARTIALART_PLASMAFIST
help_verb = /mob/living/carbon/human/proc/plasma_fist_help
+1
View File
@@ -1,5 +1,6 @@
/datum/martial_art/psychotic_brawling
name = "Psychotic Brawling"
id = MARTIALART_PSYCHOBRAWL
/datum/martial_art/psychotic_brawling/disarm_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
return psycho_attack(A,D)
+1
View File
@@ -6,6 +6,7 @@
/datum/martial_art/the_sleeping_carp
name = "The Sleeping Carp"
id = MARTIALART_SLEEPINGCARP
deflection_chance = 100
reroute_deflection = TRUE
no_guns = TRUE
+1
View File
@@ -10,6 +10,7 @@
/datum/martial_art/wrestling
name = "Wrestling"
id = MARTIALART_WRESTLING
var/datum/action/slam/slam = new/datum/action/slam()
var/datum/action/throw_wrassle/throw_wrassle = new/datum/action/throw_wrassle()
var/datum/action/kick/kick = new/datum/action/kick()
+9 -1
View File
@@ -64,6 +64,8 @@
var/force_escaped = FALSE // Set by Into The Sunset command of the shuttle manipulator
var/list/learned_recipes //List of learned recipe TYPES.
/datum/mind/New(var/key)
src.key = key
soulOwner = src
@@ -130,7 +132,8 @@
L.update_arousal_hud() //Removes the old icon
/datum/mind/proc/store_memory(new_text)
memory += "[new_text]<BR>"
if((length(memory) + length(new_text)) <= MAX_MESSAGE_LEN)
memory += "[new_text]<BR>"
/datum/mind/proc/wipe_memory()
memory = null
@@ -778,6 +781,11 @@
mind_initialize() //updates the mind (or creates and initializes one if one doesn't exist)
mind.active = 1 //indicates that the mind is currently synced with a client
/datum/mind/proc/has_martialart(var/string)
if(martial_art && martial_art.id == string)
return martial_art
return FALSE
/mob/dead/new_player/sync_mind()
return
+2 -4
View File
@@ -63,16 +63,14 @@
/datum/mutation/human/dwarfism/on_acquiring(mob/living/carbon/human/owner)
if(..())
return
owner.resize = 0.8
owner.update_transform()
owner.transform = owner.transform.Scale(1, 0.8)
owner.pass_flags |= PASSTABLE
owner.visible_message("<span class='danger'>[owner] suddenly shrinks!</span>", "<span class='notice'>Everything around you seems to grow..</span>")
/datum/mutation/human/dwarfism/on_losing(mob/living/carbon/human/owner)
if(..())
return
owner.resize = 1.25
owner.update_transform()
owner.transform = owner.transform.Scale(1, 1.25)
owner.pass_flags &= ~PASSTABLE
owner.visible_message("<span class='danger'>[owner] suddenly grows!</span>", "<span class='notice'>Everything around you seems to shrink..</span>")
+7 -10
View File
@@ -91,32 +91,29 @@
message = replacetext(message," oh god "," cheese and crackers ")
message = replacetext(message," jesus "," gee wiz ")
message = replacetext(message," weak "," strong ")
message = replacetext(message," kill "," hug ")
message = replacetext(message," murder "," tease ")
message = replacetext(message," kill yourself "," hug ")
message = replacetext(message," ugly "," beautiful ")
message = replacetext(message," douchbag "," nice guy ")
message = replacetext(message," whore "," lady ")
message = replacetext(message," nerd "," smart guy ")
message = replacetext(message," nerd "," smarty pants ")
message = replacetext(message," moron "," fun person ")
message = replacetext(message," IT'S LOOSE "," EVERYTHING IS FINE ")
message = replacetext(message," sex "," hug fight ")
message = replacetext(message," idiot "," genius ")
message = replacetext(message," fat "," thin ")
message = replacetext(message," beer "," water with ice ")
message = replacetext(message," drink "," water ")
message = replacetext(message," beer "," liquid bread ")
message = replacetext(message," drink "," liquid ")
message = replacetext(message," feminist "," empowered woman ")
message = replacetext(message," i hate you "," you're mean ")
message = replacetext(message," nigger "," african american ")
message = replacetext(message," i hate you "," you're a mean ")
message = replacetext(message," jew "," jewish ")
message = replacetext(message," shit "," shiz ")
message = replacetext(message," crap "," poo ")
message = replacetext(message," slut "," tease ")
message = replacetext(message," ass "," butt ")
message = replacetext(message," damn "," dang ")
message = replacetext(message," fuck "," ")
message = replacetext(message," penis "," privates ")
message = replacetext(message," cunt "," privates ")
message = replacetext(message," dick "," jerk ")
message = replacetext(message," dick "," privates ")
message = replacetext(message," vagina "," privates ")
speech_args[SPEECH_MESSAGE] = trim(message)
@@ -281,4 +278,4 @@
/datum/mutation/human/stoner/on_losing(mob/living/carbon/human/owner)
..()
owner.grant_language(/datum/language/common)
owner.remove_language(/datum/language/beachbum)
owner.remove_language(/datum/language/beachbum)
+6
View File
@@ -305,3 +305,9 @@
suffix = "spacehermit.dmm"
name = "Space Hermit"
description = "A late awakening cryo pod in a crashed escape pod wakes up to find what befell of his fellow survivors. Contains all the necessary resources to actually make it out alive. Good luck."
/datum/map_template/ruin/space/advancedlab
id = "advancedlab"
suffix = "advancedlab.dmm"
name = "Abductor Replication Lab"
description = "Some scientists tried and almost succeeded to recreate abductor tools. Somewhat slower and a bit less modern than their originals, these tools are the best you can get if you aren't an alien."
+3 -3
View File
@@ -11,7 +11,7 @@
/datum/saymode/changeling
key = "g"
key = MODE_KEY_CHANGELING
mode = MODE_CHANGELING
/datum/saymode/changeling/handle_message(mob/living/user, message, datum/language/language)
@@ -73,7 +73,7 @@
/datum/saymode/vocalcords
key = "x"
key = MODE_KEY_VOCALCORDS
mode = MODE_VOCALCORDS
/datum/saymode/vocalcords/handle_message(mob/living/user, message, datum/language/language)
@@ -87,7 +87,7 @@
/datum/saymode/binary //everything that uses .b (silicons, drones, blobbernauts/spores, swarmers)
key = "b"
key = MODE_KEY_BINARY
mode = MODE_BINARY
/datum/saymode/binary/handle_message(mob/living/user, message, datum/language/language)
+2 -1
View File
@@ -170,7 +170,7 @@
tick_interval = 4
alert_type = /obj/screen/alert/status_effect/his_grace
var/bloodlust = 0
/obj/screen/alert/status_effect/his_grace
name = "His Grace"
desc = "His Grace hungers, and you must feed Him."
@@ -208,6 +208,7 @@
owner.adjustToxLoss(-grace_heal, TRUE, TRUE)
owner.adjustOxyLoss(-(grace_heal * 2))
owner.adjustCloneLoss(-grace_heal)
owner.adjustStaminaLoss(-(grace_heal * 25))
/datum/status_effect/his_grace/on_remove()
owner.log_message("lost His Grace's stun immunity", LOG_ATTACK)
-1
View File
@@ -13,7 +13,6 @@
var/mob/living/quirk_holder
/datum/quirk/New(mob/living/quirk_mob, spawn_effects)
..()
if(!quirk_mob || (human_only && !ishuman(quirk_mob)) || quirk_mob.has_quirk(type))
qdel(src)
quirk_holder = quirk_mob
-20
View File
@@ -363,23 +363,3 @@
gain_text = "<span class='danger'>There's a lot on your mind right now.</span>"
lose_text = "<span class='notice'>Your mind finally feels calm.</span>"
medical_record_text = "Patient's mind is in a vulnerable state, and cannot recover from traumatic events."
//For reviewers: Removal requested, commented out until the end of review (will remove when fixing merge conflicts). I'll probably rewrited
/*Fixed quirk so that it's less impactful at the moment and doesn't override player autonomy (For the people in the discord who really want it.) See if that helps
/datum/quirk/hypno
name = "Hypnotherapy user"
desc = "You had hypnotherapy right before your shift, you're not sure it had any effects, though."
mob_trait = "hypnotherapy"
value = -1 //I mean, it can be a really bad trait to have, but on the other hand, some people want it?
gain_text = "<span class='notice'>You really think the hypnotherapy helped you out.</span>"
//lose_text = "<span class='notice'>You forget about the hypnotherapy you had, or did you even have it?</span>"
/datum/quirk/hypno/add()
//You caught me, it's not actually based off a trigger, stop spoiling the effect! Code diving ruins the magic!
addtimer(CALLBACK(src, /datum/quirk/hypno.proc/triggered, quirk_holder), rand(120, 360))//increase by 100, it's lower so I can test it.
//DOES NOT give any indication when someone is triggered - this is intentional so people don't abuse it, you're supposed to get a random thing said to you as a mini objective.
/datum/quirk/hypno/proc/triggered(quirk_holder)//I figured I might as well make a trait of code I added.
var/mob/living/carbon/human/H = quirk_holder
H.apply_status_effect(/datum/status_effect/trance, 1000, TRUE, TRUE)
*/
+3
View File
@@ -231,6 +231,9 @@
// Same for anyone with an abductor multitool.
else if(user.is_holding_item_of_type(/obj/item/multitool/abductor))
reveal_wires = TRUE
// and advanced multitool
else if(user.is_holding_item_of_type(/obj/item/multitool/advanced))
reveal_wires = TRUE
// Station blueprints do that too, but only if the wires are not randomized.
else if(user.is_holding_item_of_type(/obj/item/areaeditor/blueprints) && !randomize)
+5 -2
View File
@@ -30,6 +30,7 @@
addtimer(CALLBACK(A, /obj/machinery/autolathe.proc/reset, wire), 60)
if(WIRE_SHOCK)
A.shocked = !A.shocked
A.shock(usr, 50)
addtimer(CALLBACK(A, /obj/machinery/autolathe.proc/reset, wire), 60)
if(WIRE_DISABLE)
A.disabled = !A.disabled
@@ -40,9 +41,11 @@
switch(wire)
if(WIRE_HACK)
A.adjust_hacked(!mend)
if(WIRE_HACK)
if(WIRE_SHOCK)
A.shocked = !mend
A.shock(usr, 50)
if(WIRE_DISABLE)
A.disabled = !mend
if(WIRE_ZAP)
A.shock(usr, 50)
A.shock(usr, 50)
+5
View File
@@ -467,3 +467,8 @@
/area/ruin/space/has_grav/powered/ancient_shuttle
name = "Ancient Shuttle"
icon_state = "yellow"
// Abductor Replication Lab
/area/ruin/space/has_grav/powered/advancedlab
name = "Abductor Replication Lab"
icon_state = "yellow"
+1 -1
View File
@@ -379,7 +379,7 @@
SEND_SIGNAL(src, COMSIG_ATOM_ACID_ACT, acidpwr, acid_volume)
/atom/proc/emag_act()
SEND_SIGNAL(src, COMSIG_ATOM_EMAG_ACT)
return SEND_SIGNAL(src, COMSIG_ATOM_EMAG_ACT)
/atom/proc/rad_act(strength)
SEND_SIGNAL(src, COMSIG_ATOM_RAD_ACT, strength)
+26 -26
View File
@@ -91,35 +91,35 @@ GLOBAL_LIST_EMPTY(all_radios)
// use in maps, such as in intercoms.
GLOBAL_LIST_INIT(radiochannels, list(
"Common" = FREQ_COMMON,
"Science" = FREQ_SCIENCE,
"Command" = FREQ_COMMAND,
"Medical" = FREQ_MEDICAL,
"Engineering" = FREQ_ENGINEERING,
"Security" = FREQ_SECURITY,
"CentCom" = FREQ_CENTCOM,
"Syndicate" = FREQ_SYNDICATE,
"Supply" = FREQ_SUPPLY,
"Service" = FREQ_SERVICE,
"AI Private" = FREQ_AI_PRIVATE,
"Red Team" = FREQ_CTF_RED,
"Blue Team" = FREQ_CTF_BLUE
RADIO_CHANNEL_COMMON = FREQ_COMMON,
RADIO_CHANNEL_SCIENCE = FREQ_SCIENCE,
RADIO_CHANNEL_COMMAND = FREQ_COMMAND,
RADIO_CHANNEL_MEDICAL = FREQ_MEDICAL,
RADIO_CHANNEL_ENGINEERING = FREQ_ENGINEERING,
RADIO_CHANNEL_SECURITY = FREQ_SECURITY,
RADIO_CHANNEL_CENTCOM = FREQ_CENTCOM,
RADIO_CHANNEL_SYNDICATE = FREQ_SYNDICATE,
RADIO_CHANNEL_SUPPLY = FREQ_SUPPLY,
RADIO_CHANNEL_SERVICE = FREQ_SERVICE,
RADIO_CHANNEL_AI_PRIVATE = FREQ_AI_PRIVATE,
RADIO_CHANNEL_CTF_RED = FREQ_CTF_RED,
RADIO_CHANNEL_CTF_BLUE = FREQ_CTF_BLUE
))
GLOBAL_LIST_INIT(reverseradiochannels, list(
"[FREQ_COMMON]" = "Common",
"[FREQ_SCIENCE]" = "Science",
"[FREQ_COMMAND]" = "Command",
"[FREQ_MEDICAL]" = "Medical",
"[FREQ_ENGINEERING]" = "Engineering",
"[FREQ_SECURITY]" = "Security",
"[FREQ_CENTCOM]" = "CentCom",
"[FREQ_SYNDICATE]" = "Syndicate",
"[FREQ_SUPPLY]" = "Supply",
"[FREQ_SERVICE]" = "Service",
"[FREQ_AI_PRIVATE]" = "AI Private",
"[FREQ_CTF_RED]" = "Red Team",
"[FREQ_CTF_BLUE]" = "Blue Team"
"[FREQ_COMMON]" = RADIO_CHANNEL_COMMON,
"[FREQ_SCIENCE]" = RADIO_CHANNEL_SCIENCE,
"[FREQ_COMMAND]" = RADIO_CHANNEL_COMMAND,
"[FREQ_MEDICAL]" = RADIO_CHANNEL_MEDICAL,
"[FREQ_ENGINEERING]" = RADIO_CHANNEL_ENGINEERING,
"[FREQ_SECURITY]" = RADIO_CHANNEL_SECURITY,
"[FREQ_CENTCOM]" = RADIO_CHANNEL_CENTCOM,
"[FREQ_SYNDICATE]" = RADIO_CHANNEL_SYNDICATE,
"[FREQ_SUPPLY]" = RADIO_CHANNEL_SUPPLY,
"[FREQ_SERVICE]" = RADIO_CHANNEL_SERVICE,
"[FREQ_AI_PRIVATE]" = RADIO_CHANNEL_AI_PRIVATE,
"[FREQ_CTF_RED]" = RADIO_CHANNEL_CTF_RED,
"[FREQ_CTF_BLUE]" = RADIO_CHANNEL_CTF_BLUE
))
/datum/radio_frequency
@@ -6,6 +6,7 @@
name = "traitor+brothers"
config_tag = "traitorbro"
restricted_jobs = list("AI", "Cyborg")
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Quartermaster", "Chief Engineer", "Research Director")
announce_span = "danger"
announce_text = "There are Syndicate agents and Blood Brothers on the station!\n\
+2 -2
View File
@@ -52,7 +52,7 @@ Credit where due:
if(!istype(M))
return FALSE
if(M.mind)
if(ishuman(M) && (M.mind.assigned_role in list("Captain", "Chaplain")))
if(M.mind.assigned_role in list("Captain", "Chaplain"))
return FALSE
if(M.mind.enslaved_to && !is_servant_of_ratvar(M.mind.enslaved_to))
return FALSE
@@ -275,7 +275,7 @@ Credit where due:
gloves = /obj/item/clothing/gloves/color/yellow
belt = /obj/item/storage/belt/utility/servant
backpack_contents = list(/obj/item/storage/box/engineer = 1, \
/obj/item/clockwork/replica_fabricator = 1, /obj/item/stack/tile/brass/fifty = 1, /obj/item/paper/servant_primer = 1, /obj/item/reagent_containers/food/drinks/holyoil = 1)
/obj/item/clockwork/replica_fabricator = 1, /obj/item/stack/tile/brass/fifty = 1, /obj/item/paper/servant_primer = 1, /obj/item/reagent_containers/food/drinks/bottle/holyoil = 1)
id = /obj/item/pda
var/plasmaman //We use this to determine if we should activate internals in post_equip()
+1 -1
View File
@@ -16,7 +16,7 @@
if(!istype(M))
return FALSE
if(M.mind)
if(ishuman(M) && (M.mind.assigned_role in list("Captain", "Chaplain")))
if(M.mind.assigned_role in list("Captain", "Chaplain"))
return FALSE
if(specific_cult && specific_cult.is_sacrifice_target(M.mind))
return FALSE
+7 -7
View File
@@ -53,7 +53,7 @@
name = "the chief engineer's advanced magnetic boots."
targetitem = /obj/item/clothing/shoes/magboots/advance
difficulty = 5
excludefromjob = list("Chief Engineer")
excludefromjob = list("Chief Engineer", "Station Engineer", "Atmospheric Technician")
/datum/objective_item/steal/capmedal
name = "the medal of captaincy."
@@ -62,10 +62,10 @@
excludefromjob = list("Captain")
/datum/objective_item/steal/hypo
name = "the hypospray."
name = "the Chief Medical Officer's MKII hypospray."
targetitem = /obj/item/hypospray/mkii/CMO //CITADEL EDIT, changing theft objective for the Hypo MK II
difficulty = 5
excludefromjob = list("Chief Medical Officer")
excludefromjob = list("Chief Medical Officer", "Medical Doctor", "Chemist", "Virologist", "Geneticist")
/datum/objective_item/steal/nukedisc
name = "the nuclear authentication disk."
@@ -83,10 +83,10 @@
excludefromjob = list("Head of Security", "Warden")
/datum/objective_item/steal/reactive
name = "the reactive teleport armor."
name = "a reactive teleport armor."
targetitem = /obj/item/clothing/suit/armor/reactive
difficulty = 5
excludefromjob = list("Research Director")
excludefromjob = list("Research Director","Scientist", "Roboticist")
/datum/objective_item/steal/documents
name = "any set of secret documents of any organization."
@@ -143,7 +143,7 @@
name = "the station blueprints."
targetitem = /obj/item/areaeditor/blueprints
difficulty = 10
excludefromjob = list("Chief Engineer")
excludefromjob = list("Chief Engineer", "Station Engineer", "Atmospheric Technician")
altitems = list(/obj/item/photo)
/datum/objective_item/steal/blueprints/check_special_completion(obj/item/I)
@@ -159,7 +159,7 @@
name = "an unused sample of slime extract."
targetitem = /obj/item/slime_extract
difficulty = 3
excludefromjob = list("Research Director","Scientist")
excludefromjob = list("Research Director","Scientist", "Roboticist")
/datum/objective_item/steal/slime/check_special_completion(obj/item/slime_extract/E)
if(E.Uses > 0)
+2
View File
@@ -193,8 +193,10 @@
to_chat(usr, "<span class='warning'>Chem System Re-route detected, results may not be as expected!</span>")
/obj/machinery/sleeper/emag_act(mob/user)
. = ..()
scramble_chem_buttons()
to_chat(user, "<span class='warning'>You scramble the sleeper's user interface!</span>")
return TRUE
/obj/machinery/sleeper/proc/inject_chem(chem, mob/user)
if((chem in available_chems) && chem_allowed(chem))
@@ -177,7 +177,9 @@ GLOBAL_LIST_EMPTY(announcement_systems)
act_up()
/obj/machinery/announcement_system/emag_act()
. = ..()
if(obj_flags & EMAGGED)
return
obj_flags |= EMAGGED
act_up()
return TRUE
+1 -1
View File
@@ -6,7 +6,7 @@
var/siphoning = FALSE
var/next_warning = 0
var/obj/item/radio/radio
var/radio_channel = "Common"
var/radio_channel = RADIO_CHANNEL_COMMON
var/minimum_time_between_warnings = 400
/obj/machinery/computer/bank_machine/Initialize()
+2
View File
@@ -101,12 +101,14 @@
return ..()
/obj/machinery/button/emag_act(mob/user)
. = ..()
if(obj_flags & EMAGGED)
return
req_access = list()
req_one_access = list()
playsound(src, "sparks", 100, 1)
obj_flags |= EMAGGED
return TRUE
/obj/machinery/button/attack_ai(mob/user)
if(!panel_open)
+5 -10
View File
@@ -31,7 +31,7 @@
var/internal_radio = TRUE
var/obj/item/radio/radio
var/radio_key = /obj/item/encryptionkey/headset_med
var/radio_channel = "Medical"
var/radio_channel = RADIO_CHANNEL_MEDICAL
var/obj/effect/countdown/clonepod/countdown
@@ -163,15 +163,8 @@
H.hardset_dna(ui, se, H.real_name, null, mrace, features)
if(efficiency > 2)
var/list/unclean_mutations = (GLOB.not_good_mutations|GLOB.bad_mutations)
H.dna.remove_mutation_group(unclean_mutations)
if(efficiency > 5 && prob(20))
H.randmutvg()
if(efficiency < 3 && prob(50))
var/mob/M = H.randmutb()
if(ismob(M))
H = M
if(prob(50 - efficiency*10)) //Chance to give a bad mutation.
H.randmutb() //100% bad mutation. Can be cured with mutadone.
H.silent = 20 //Prevents an extreme edge case where clones could speak if they said something at exactly the right moment.
occupant = H
@@ -327,10 +320,12 @@
return ..()
/obj/machinery/clonepod/emag_act(mob/user)
. = ..()
if(!occupant)
return
to_chat(user, "<span class='warning'>You corrupt the genetic compiler.</span>")
malfunction()
return TRUE
//Put messages in the connected computer's temp var for display.
/obj/machinery/clonepod/proc/connected_message(message)
+2 -2
View File
@@ -44,7 +44,7 @@
table.computer = src
break
/obj/machinery/computer/operating/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
/obj/machinery/computer/operating/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.not_incapacitated_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
ui = new(user, src, ui_key, "operating_computer", name, 350, 470, master_ui, state)
@@ -125,4 +125,4 @@
. = TRUE
#undef MENU_OPERATION
#undef MENU_SURGERIES
#undef MENU_SURGERIES
+6 -2
View File
@@ -185,15 +185,19 @@
ui_interact(usr) //Refresh the UI after a filter changes
/obj/machinery/computer/apc_control/emag_act(mob/user)
. = ..()
if(!authenticated)
to_chat(user, "<span class='warning'>You bypass [src]'s access requirements using your emag.</span>")
authenticated = TRUE
log_activity("logged in")
else if(!(obj_flags & EMAGGED))
else
if(obj_flags & EMAGGED)
return
user.visible_message("<span class='warning'>You emag [src], disabling precise logging and allowing you to clear logs.</span>")
log_game("[key_name(user)] emagged [src] at [AREACOORD(src)], disabling operator tracking.")
obj_flags |= EMAGGED
playsound(src, "sparks", 50, 1)
playsound(src, "sparks", 50, 1)
return TRUE
/obj/machinery/computer/apc_control/proc/log_activity(log_text)
var/op_string = operator && !(obj_flags & EMAGGED) ? operator : "\[NULL OPERATOR\]"

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