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

This commit is contained in:
lolman360
2020-08-19 12:20:07 +10:00
354 changed files with 15240 additions and 2131 deletions
+8 -1
View File
@@ -414,10 +414,17 @@ Regarding sprites & sounds, you must credit the artist and possibly the codebase
Do not add any of the following in a Pull Request or risk getting the PR closed:
* National Socialist Party of Germany content, National Socialist Party of Germany related content, or National Socialist Party of Germany references
* Code where one line of code is split across mutiple lines (except for multiple, separate strings and comments; in those cases, existing longer lines must not be split up)
* Code adding, removing, or updating the availability of alien races/species/human mutants without prior approval. Pull requests attempting to add or remove features from said races/species/mutants require prior approval as well.
Just because something isn't on this list doesn't mean that it's acceptable. Use common sense above all else.
## Content requiring prior approval
Certain types of changes may require prior approval from maintainers. This currently includes:
* Code adding, removing, or updating the availability of alien races/species/human mutants. This includes pull requests attempting to add or remove features from said races/species/mutants. (Requires approval from at least one maintainer)
* Code adding, removing, or modifying the functionality of adult-oriented features (such as, but not limited to: vore, genitals, MKUltra, and more). This also includes pull requests attempting to add or remove these features outright. (Requires approval from at least half of the formal maintainer team)
The above content requires approval from the specified amount of maintainers prior to PR creation. Seeking approval must be done via a @Maintainer ping in a relevant development/code or staff channel on the Discord, otherwise it will be considered insufficient. If a PR contains any of the above content, but the creator does not have sufficient approval prior to the PR's creation, then the PR may be closed by any maintainer, at any time, for any reason.
## A word on Git
Yes, we know that the files have a tonne of mixed Windows and Linux line endings. Attempts to fix this have been met with less than stellar success, and as such we have decided to give up caring until there comes a time when it matters.
@@ -16,7 +16,7 @@
/turf/open/floor/wood,
/area/ruin/unpowered)
"d" = (
/turf/open/openspace/icemoon,
/turf/open/transparent/openspace/icemoon,
/area/icemoon/surface/outdoors)
"e" = (
/obj/item/clothing/suit/hooded/explorer,
+124 -91
View File
@@ -6471,6 +6471,12 @@
},
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"alX" = (
/obj/structure/disposalpipe/segment{
dir = 6
},
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
"alY" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -8073,6 +8079,13 @@
},
/turf/open/floor/plasteel/showroomfloor,
/area/security/warden)
"apI" = (
/obj/structure/disposalpipe/segment{
dir = 6
},
/obj/structure/closet/secure_closet/medical1,
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"apJ" = (
/turf/closed/wall,
/area/construction/mining/aux_base)
@@ -9385,6 +9398,13 @@
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
/area/construction/mining/aux_base)
"asG" = (
/obj/structure/disposalpipe/trunk{
dir = 1
},
/obj/machinery/disposal/bin,
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"asH" = (
/obj/structure/closet/toolcloset,
/obj/effect/turf_decal/tile/yellow{
@@ -9428,6 +9448,35 @@
},
/turf/open/floor/plating,
/area/maintenance/port/fore)
"asL" = (
/obj/machinery/light{
dir = 8
},
/obj/machinery/firealarm{
dir = 4;
pixel_x = -24
},
/obj/item/reagent_containers/spray/cleaner,
/obj/item/crowbar,
/obj/item/clothing/neck/stethoscope,
/obj/item/storage/box/gloves{
pixel_x = 3;
pixel_y = 4
},
/obj/item/storage/box/masks,
/obj/structure/table,
/turf/open/floor/plasteel/white,
/area/medical/sleeper)
"asM" = (
/obj/structure/table,
/obj/item/crowbar,
/obj/item/clothing/neck/stethoscope,
/obj/item/reagent_containers/spray/cleaner,
/obj/structure/sign/warning/nosmoking{
pixel_y = 30
},
/turf/open/floor/plasteel/dark,
/area/medical/sleeper)
"asN" = (
/obj/machinery/airalarm{
dir = 4;
@@ -9457,12 +9506,66 @@
/obj/structure/closet/firecloset,
/turf/open/floor/plating,
/area/maintenance/fore)
"asT" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/effect/turf_decal/tile/blue,
/obj/effect/turf_decal/tile/blue{
dir = 4
},
/turf/open/floor/plasteel,
/area/medical/medbay/central)
"asU" = (
/obj/structure/sign/warning/nosmoking{
pixel_y = 30
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/effect/turf_decal/tile/yellow{
dir = 4
},
/obj/machinery/door/airlock/medical/glass{
id_tag = "MedbayFoyer";
name = "Medbay";
req_access_txt = "5"
},
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"asV" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/effect/turf_decal/tile/blue,
/obj/effect/turf_decal/tile/blue{
dir = 4
},
/turf/open/floor/plasteel,
/area/medical/medbay/central)
"asW" = (
/obj/machinery/light/small{
dir = 8
},
/turf/open/floor/plasteel/grimy,
/area/security/detectives_office)
"asX" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/machinery/door/airlock/medical/glass{
id_tag = "MedbayFoyer";
name = "Medbay";
req_access_txt = "5"
},
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"asY" = (
/obj/structure/sign/warning/nosmoking{
pixel_y = 30
},
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"ata" = (
/turf/open/floor/wood,
/area/lawoffice)
@@ -24471,12 +24574,6 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/closed/wall/r_wall,
/area/engine/gravity_generator)
"bgP" = (
/obj/structure/disposalpipe/segment{
dir = 6
},
/turf/open/floor/plasteel/white,
/area/medical/chemistry)
"bgQ" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 8
@@ -28214,12 +28311,6 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"bpy" = (
/obj/structure/disposalpipe/segment{
dir = 6
},
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"bpz" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 8
@@ -28708,13 +28799,6 @@
/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bqM" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/turf/open/floor/plating,
/area/medical/medbay/central)
"bqN" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 5
@@ -28747,22 +28831,6 @@
},
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"bqR" = (
/obj/structure/table,
/obj/item/crowbar,
/obj/item/clothing/neck/stethoscope,
/obj/item/reagent_containers/spray/cleaner,
/obj/structure/sign/warning/nosmoking{
pixel_y = 30
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/effect/turf_decal/tile/yellow{
dir = 4
},
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"bqS" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -29265,13 +29333,6 @@
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
/area/crew_quarters/heads/hop)
"brV" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/turf/open/floor/plating,
/area/medical/medbay/central)
"brW" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -29279,18 +29340,6 @@
/obj/machinery/vending/cart,
/turf/open/floor/plasteel,
/area/crew_quarters/heads/hop)
"brX" = (
/obj/structure/table,
/obj/item/storage/box/masks,
/obj/item/storage/box/gloves{
pixel_x = 3;
pixel_y = 4
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"brY" = (
/obj/structure/disposalpipe/segment{
dir = 6
@@ -31215,23 +31264,10 @@
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/medical/medbay/central)
"bwy" = (
/obj/structure/disposalpipe/segment{
dir = 5
},
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"bwz" = (
/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"bwA" = (
/obj/machinery/disposal/bin,
/obj/structure/disposalpipe/trunk{
dir = 8
},
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"bwB" = (
/obj/structure/chair,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
@@ -32971,17 +33007,6 @@
},
/turf/open/floor/plating,
/area/maintenance/port/aft)
"bAp" = (
/obj/structure/closet/secure_closet/medical1,
/obj/machinery/light{
dir = 8
},
/obj/machinery/firealarm{
dir = 4;
pixel_x = -24
},
/turf/open/floor/plasteel/white,
/area/medical/sleeper)
"bAq" = (
/obj/machinery/sleeper{
dir = 8
@@ -55998,6 +56023,10 @@
},
/turf/open/floor/plasteel,
/area/crew_quarters/theatre)
"kEm" = (
/mob/living/simple_animal/opossum/poppy,
/turf/open/floor/plating,
/area/maintenance/port/aft)
"kEY" = (
/obj/effect/landmark/stationroom/box/engine,
/turf/open/space/basic,
@@ -58125,6 +58154,10 @@
/obj/effect/decal/cleanable/blood/old,
/turf/open/floor/plating,
/area/maintenance/fore)
"rtU" = (
/mob/living/simple_animal/opossum,
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
"ruo" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -85309,7 +85342,7 @@ bVI
bTA
xgk
bHE
bHE
kEm
bHE
bHE
bHE
@@ -92215,7 +92248,7 @@ btJ
buV
bws
bqH
aJq
asY
aJq
byW
bCv
@@ -94266,8 +94299,8 @@ bfF
bfF
bfF
bfF
bqM
brV
asT
asV
bof
bwv
bvj
@@ -94523,8 +94556,8 @@ bmF
bob
bnB
bfF
bqR
brX
asU
asX
bof
bwx
bvj
@@ -95031,7 +95064,7 @@ aYV
bfF
bhc
bip
bgP
alX
bjL
bkL
bmT
@@ -95297,7 +95330,7 @@ bpF
bqS
brY
bwz
bwy
asG
bvj
bza
bxb
@@ -95553,10 +95586,10 @@ bpt
bfF
bqV
bEe
bhh
bBL
bwA
bvj
bAl
asM
bAl
bvh
bzS
@@ -96071,7 +96104,7 @@ bvh
ajv
bxN
bze
bAp
asL
bvh
bCG
bBd
@@ -98119,7 +98152,7 @@ bjX
blp
bmO
bhi
bpy
apI
bwz
brg
btZ
@@ -104254,7 +104287,7 @@ anf
anf
alP
alP
anf
rtU
alP
alP
alP
+3 -3
View File
@@ -242,13 +242,13 @@
pixel_x = 22
},
/obj/structure/rack,
/obj/item/gun/energy{
/obj/item/gun/energy/e_gun{
pixel_y = -6
},
/obj/item/gun/energy{
/obj/item/gun/energy/e_gun{
pixel_y = -3
},
/obj/item/gun/energy,
/obj/item/gun/energy/e_gun,
/turf/open/floor/plasteel/dark,
/area/ai_monitored/security/armory)
"aaI" = (
+13 -2
View File
@@ -126384,6 +126384,13 @@
},
/turf/open/space,
/area/engine/atmos)
"kqo" = (
/obj/structure/cable/white{
icon_state = "4-8"
},
/mob/living/simple_animal/opossum,
/turf/open/floor/plating,
/area/maintenance/port/fore)
"ktK" = (
/obj/effect/turf_decal/tile/neutral{
dir = 4
@@ -127042,6 +127049,10 @@
dir = 1
},
/area/science/circuit)
"pok" = (
/mob/living/simple_animal/opossum/poppy,
/turf/open/floor/plasteel/grimy,
/area/crew_quarters/theatre/abandoned)
"poI" = (
/obj/structure/bed,
/obj/item/tank/internals/anesthetic,
@@ -164027,7 +164038,7 @@ aof
aky
aky
aky
arD
kqo
asZ
aui
avF
@@ -178786,7 +178797,7 @@ dCX
dEj
dFq
dGJ
dGJ
pok
dJy
dGJ
dGJ
+7 -1
View File
@@ -78498,6 +78498,7 @@
icon_state = "4-8"
},
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
/mob/living/simple_animal/opossum/poppy,
/turf/open/floor/plating{
icon_state = "platingdmg3"
},
@@ -84902,6 +84903,11 @@
/obj/machinery/light,
/turf/open/floor/plating/airless,
/area/hallway/secondary/entry)
"jGN" = (
/obj/effect/decal/cleanable/dirt,
/mob/living/simple_animal/opossum,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
"jHJ" = (
/obj/machinery/atmospherics/pipe/simple/general/visible{
dir = 9
@@ -125028,7 +125034,7 @@ bAP
bCf
bhQ
bhQ
bAM
jGN
bGH
bOc
bHZ
+11 -2
View File
@@ -80285,6 +80285,11 @@
},
/turf/open/space/basic,
/area/engine/engineering)
"eCO" = (
/obj/effect/decal/cleanable/dirt,
/mob/living/simple_animal/opossum/poppy,
/turf/open/floor/plasteel/dark,
/area/maintenance/starboard/aft)
"eDP" = (
/obj/effect/turf_decal/trimline/blue/filled/corner{
dir = 8
@@ -82038,6 +82043,10 @@
},
/turf/open/floor/plasteel/cafeteria,
/area/crew_quarters/kitchen)
"vDO" = (
/mob/living/simple_animal/opossum,
/turf/open/floor/plating,
/area/maintenance/fore)
"vDW" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -107578,7 +107587,7 @@ aaA
abY
ayy
acw
acw
vDO
acw
acw
aeG
@@ -135197,7 +135206,7 @@ bPp
ccJ
clR
bQh
clN
eCO
bPp
bQh
bYx
+768
View File
@@ -0,0 +1,768 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"a" = (
/turf/closed/indestructible/riveted,
/area/mafia)
"b" = (
/turf/closed/indestructible{
desc = "A wall with alien alloy plating.";
icon = 'icons/turf/walls/abductor_wall.dmi';
icon_state = "abductor";
name = "alien wall";
smooth = 5
},
/area/mafia)
"g" = (
/obj/mafia_game_board,
/turf/open/floor/plating{
icon_state = "platingdmg3"
},
/area/mafia)
"h" = (
/obj/structure/grille/indestructable,
/turf/open/floor/plating,
/area/mafia)
"i" = (
/turf/open/floor/fakespace,
/area/mafia)
"j" = (
/turf/closed/indestructible/abductor{
icon_state = "alien22"
},
/area/mafia)
"k" = (
/obj/mafia_game_board,
/turf/open/floor/plating,
/area/mafia)
"l" = (
/obj/structure/closet/abductor,
/turf/open/floor/plating/abductor,
/area/mafia)
"m" = (
/obj/effect/landmark/mafia,
/obj/structure/bed/abductor,
/turf/open/floor/plating/abductor,
/area/mafia)
"n" = (
/obj/effect/landmark/mafia,
/obj/structure/bed/abductor,
/turf/open/floor/plating/abductor2,
/area/mafia)
"o" = (
/obj/structure/closet/abductor,
/turf/open/floor/plating/abductor2,
/area/mafia)
"p" = (
/obj/machinery/door/poddoor/preopen{
desc = "When it's time to sleep, the lights will go out. Remember - no one in space can hear you scream.";
id = "mafia";
max_integrity = 99999;
name = "Station Night Shutters"
},
/turf/closed/indestructible/fakeglass,
/area/mafia)
"q" = (
/turf/open/floor/plating/abductor,
/area/mafia)
"r" = (
/turf/open/floor/plating/abductor2,
/area/mafia)
"t" = (
/turf/open/floor/light/colour_cycle/dancefloor_a,
/area/mafia)
"u" = (
/obj/effect/baseturf_helper/asteroid,
/obj/effect/landmark/mafia/town_center,
/turf/open/floor/light/colour_cycle/dancefloor_b,
/area/mafia)
"v" = (
/obj/mafia_game_board,
/turf/open/floor/plating{
icon_state = "panelscorched"
},
/area/mafia)
"x" = (
/obj/machinery/door/poddoor/preopen{
desc = "When it's time to sleep, the lights will go out. Remember - no one in space can hear you scream.";
id = "mafia";
max_integrity = 99999;
name = "Station Night Shutters"
},
/obj/effect/spawner/structure/window/plastitanium,
/turf/open/floor/plating/abductor2,
/area/mafia)
"z" = (
/obj/structure/grille/indestructable,
/turf/open/floor/fakespace,
/area/mafia)
"B" = (
/turf/closed/indestructible/abductor{
icon_state = "alien2"
},
/area/mafia)
"D" = (
/turf/closed/indestructible/abductor{
icon_state = "alien15"
},
/area/mafia)
"E" = (
/turf/closed/indestructible/abductor{
icon_state = "alien7"
},
/area/mafia)
"F" = (
/turf/closed/indestructible/abductor{
icon_state = "alien12"
},
/area/mafia)
"G" = (
/turf/closed/indestructible/abductor{
icon_state = "alien17"
},
/area/mafia)
"H" = (
/turf/open/space/basic,
/area/mafia)
"I" = (
/turf/closed/indestructible/abductor{
icon_state = "alien24"
},
/area/mafia)
"J" = (
/turf/closed/indestructible/abductor{
icon_state = "alien18"
},
/area/mafia)
"K" = (
/turf/closed/indestructible/abductor{
icon_state = "alien11"
},
/area/mafia)
"L" = (
/turf/closed/indestructible/abductor{
icon_state = "alien14"
},
/area/mafia)
"M" = (
/turf/closed/indestructible/abductor{
icon_state = "alien4"
},
/area/mafia)
"N" = (
/turf/closed/indestructible/abductor{
icon_state = "alien21"
},
/area/mafia)
"P" = (
/turf/closed/indestructible/abductor,
/area/mafia)
"Q" = (
/turf/closed/indestructible/abductor{
icon_state = "alien5"
},
/area/mafia)
"S" = (
/turf/closed/indestructible/abductor{
icon_state = "alien3"
},
/area/mafia)
"U" = (
/turf/closed/indestructible/abductor{
icon_state = "alien23"
},
/area/mafia)
"V" = (
/turf/closed/indestructible/abductor{
icon_state = "alien13"
},
/area/mafia)
"W" = (
/turf/closed/indestructible/abductor{
icon_state = "alien20"
},
/area/mafia)
"Y" = (
/turf/closed/indestructible/abductor{
icon_state = "alien8"
},
/area/mafia)
"Z" = (
/turf/closed/indestructible/abductor{
icon_state = "alien10"
},
/area/mafia)
(1,1,1) = {"
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
"}
(2,1,1) = {"
a
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
a
"}
(3,1,1) = {"
a
b
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
b
a
"}
(4,1,1) = {"
a
b
i
i
g
z
i
i
i
i
i
i
i
i
i
H
i
z
k
i
i
b
a
"}
(5,1,1) = {"
a
b
i
i
z
i
i
i
W
L
F
F
F
Z
P
i
i
i
h
i
i
b
a
"}
(6,1,1) = {"
a
b
i
i
i
W
L
Z
G
l
q
b
r
o
E
L
Z
P
i
i
i
b
a
"}
(7,1,1) = {"
a
b
i
i
i
N
o
r
p
m
q
x
r
n
x
q
l
B
i
i
i
b
a
"}
(8,1,1) = {"
a
b
i
i
i
U
n
r
b
b
q
b
r
b
b
q
m
M
i
i
i
b
a
"}
(9,1,1) = {"
a
b
i
i
W
G
x
r
r
x
q
x
r
x
q
q
x
E
P
i
i
b
a
"}
(10,1,1) = {"
a
b
i
i
N
l
x
b
x
x
x
x
x
x
x
b
x
o
B
i
i
b
a
"}
(11,1,1) = {"
a
b
i
i
j
m
q
q
q
x
t
t
t
x
r
r
r
n
S
i
i
b
a
"}
(12,1,1) = {"
a
b
i
i
j
b
x
b
x
x
t
u
t
x
x
b
x
b
S
i
i
b
a
"}
(13,1,1) = {"
a
b
i
i
j
n
r
r
r
x
t
t
t
x
q
q
q
m
S
i
i
b
a
"}
(14,1,1) = {"
a
b
i
i
U
o
x
b
x
x
x
x
x
x
x
b
x
l
M
i
i
b
a
"}
(15,1,1) = {"
a
b
i
i
I
J
x
q
q
x
r
x
q
x
r
r
x
Y
Q
i
i
b
a
"}
(16,1,1) = {"
a
b
i
i
i
N
m
q
b
b
r
b
q
b
b
r
n
B
i
i
i
b
a
"}
(17,1,1) = {"
a
b
i
i
i
U
l
q
x
n
r
x
q
m
x
r
o
M
i
i
i
b
a
"}
(18,1,1) = {"
a
b
i
i
i
I
D
K
J
o
r
b
q
l
Y
D
K
Q
i
i
i
b
a
"}
(19,1,1) = {"
a
b
i
i
z
i
i
i
I
D
V
V
V
K
Q
i
i
i
z
i
i
b
a
"}
(20,1,1) = {"
a
b
i
i
k
z
i
i
i
i
i
i
i
i
i
i
i
z
v
i
i
b
a
"}
(21,1,1) = {"
a
b
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
b
a
"}
(22,1,1) = {"
a
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
a
"}
(23,1,1) = {"
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
"}
+675
View File
@@ -0,0 +1,675 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"a" = (
/turf/closed/indestructible/riveted,
/area/mafia)
"c" = (
/turf/closed/wall/rust,
/area/mafia)
"d" = (
/turf/open/floor/plating,
/area/mafia)
"e" = (
/turf/open/floor/plating{
icon_state = "platingdmg3"
},
/area/mafia)
"f" = (
/turf/open/floor/plating{
icon_state = "panelscorched"
},
/area/mafia)
"g" = (
/obj/mafia_game_board,
/turf/open/floor/plating{
icon_state = "platingdmg3"
},
/area/mafia)
"h" = (
/obj/structure/grille/indestructable,
/turf/open/floor/plating,
/area/mafia)
"i" = (
/turf/open/floor/plating{
icon_state = "platingdmg1"
},
/area/mafia)
"j" = (
/obj/machinery/door/airlock/maintenance_hatch{
max_integrity = 99999;
name = "Maintenance"
},
/obj/effect/mapping_helpers/airlock/locked,
/turf/open/floor/plating,
/area/mafia)
"k" = (
/obj/mafia_game_board,
/turf/open/floor/plating,
/area/mafia)
"l" = (
/obj/structure/closet/cabinet{
anchored = 1
},
/turf/open/floor/plasteel/dark,
/area/mafia)
"m" = (
/obj/effect/landmark/mafia,
/turf/open/floor/plasteel/dark,
/area/mafia)
"n" = (
/obj/effect/landmark/mafia,
/turf/open/floor/plasteel,
/area/mafia)
"o" = (
/obj/structure/closet/cabinet{
anchored = 1
},
/turf/open/floor/plasteel,
/area/mafia)
"p" = (
/obj/machinery/door/poddoor/preopen{
desc = "When it's time to sleep, the lights will go out. Remember - no one in space can hear you scream.";
id = "mafia";
max_integrity = 99999;
name = "Station Night Shutters"
},
/turf/closed/indestructible/fakeglass,
/area/mafia)
"q" = (
/turf/open/floor/plasteel/dark,
/area/mafia)
"r" = (
/turf/open/floor/plasteel,
/area/mafia)
"s" = (
/turf/open/floor/fakespace,
/area/mafia)
"t" = (
/turf/open/floor/plasteel/solarpanel,
/area/mafia)
"u" = (
/obj/effect/baseturf_helper/asteroid,
/obj/effect/landmark/mafia/town_center,
/turf/open/floor/plasteel/solarpanel,
/area/mafia)
"v" = (
/obj/mafia_game_board,
/turf/open/floor/plating{
icon_state = "panelscorched"
},
/area/mafia)
(1,1,1) = {"
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
"}
(2,1,1) = {"
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
"}
(3,1,1) = {"
a
a
a
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
a
a
a
"}
(4,1,1) = {"
a
a
a
c
g
h
d
d
d
d
d
e
d
d
d
d
d
h
k
c
a
a
a
"}
(5,1,1) = {"
a
a
a
c
h
d
d
e
a
a
j
a
j
a
a
d
d
i
h
c
a
a
a
"}
(6,1,1) = {"
a
a
a
c
i
a
a
j
a
l
q
a
r
o
a
j
a
a
d
c
a
a
a
"}
(7,1,1) = {"
a
a
c
c
d
a
o
r
p
m
q
p
r
n
p
q
l
a
d
c
c
a
a
"}
(8,1,1) = {"
a
a
c
d
d
a
n
r
a
a
q
a
r
a
a
q
m
a
d
d
c
a
a
"}
(9,1,1) = {"
a
a
c
d
a
a
p
r
r
p
q
p
r
p
q
q
p
a
a
d
c
a
a
"}
(10,1,1) = {"
a
a
c
d
a
l
p
a
p
p
p
p
p
p
p
a
p
o
a
d
c
a
a
"}
(11,1,1) = {"
a
a
c
d
j
m
q
q
q
p
s
t
s
p
r
r
r
n
j
e
c
a
a
"}
(12,1,1) = {"
a
a
c
e
a
a
p
a
p
p
t
u
t
p
p
a
p
a
a
d
c
a
a
"}
(13,1,1) = {"
a
a
c
d
j
n
r
r
r
p
s
t
s
p
q
q
q
m
j
d
c
a
a
"}
(14,1,1) = {"
a
a
c
d
a
o
p
a
p
p
p
p
p
p
p
a
p
l
a
i
c
a
a
"}
(15,1,1) = {"
a
a
c
d
a
a
p
q
q
p
r
p
q
p
r
r
p
a
a
d
c
a
a
"}
(16,1,1) = {"
a
a
c
f
d
a
m
q
a
a
r
a
q
a
a
r
n
a
d
d
c
a
a
"}
(17,1,1) = {"
a
a
c
c
d
a
l
q
p
n
r
p
q
m
p
r
o
a
d
c
c
a
a
"}
(18,1,1) = {"
a
a
a
c
d
a
a
j
a
o
r
a
q
l
a
j
a
a
d
c
a
a
a
"}
(19,1,1) = {"
a
a
a
c
h
i
d
d
a
a
j
a
j
a
a
d
e
d
h
c
a
a
a
"}
(20,1,1) = {"
a
a
a
c
k
h
d
d
e
d
d
d
d
d
d
d
d
h
v
c
a
a
a
"}
(21,1,1) = {"
a
a
a
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
a
a
a
"}
(22,1,1) = {"
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
"}
(23,1,1) = {"
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
"}
+724
View File
@@ -0,0 +1,724 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"a" = (
/turf/closed/indestructible/riveted,
/area/mafia)
"b" = (
/turf/closed/wall/mineral/iron,
/area/mafia)
"c" = (
/turf/closed/wall/rust,
/area/mafia)
"d" = (
/turf/open/floor/plating,
/area/mafia)
"e" = (
/turf/open/floor/plating{
icon_state = "platingdmg3"
},
/area/mafia)
"f" = (
/turf/open/floor/plating{
icon_state = "panelscorched"
},
/area/mafia)
"g" = (
/obj/mafia_game_board,
/turf/open/floor/plating{
icon_state = "platingdmg3"
},
/area/mafia)
"h" = (
/obj/structure/grille/indestructable,
/turf/open/floor/plating,
/area/mafia)
"i" = (
/turf/open/floor/plating{
icon_state = "platingdmg1"
},
/area/mafia)
"j" = (
/turf/closed/indestructible/fakedoor,
/area/mafia)
"k" = (
/obj/mafia_game_board,
/turf/open/floor/plating,
/area/mafia)
"l" = (
/obj/structure/closet/crate/coffin,
/turf/open/floor/carpet/red,
/area/mafia)
"m" = (
/obj/effect/landmark/mafia,
/turf/open/floor/carpet/red,
/area/mafia)
"n" = (
/obj/effect/landmark/mafia,
/turf/open/floor/plasteel/chapel{
dir = 1
},
/area/mafia)
"o" = (
/obj/structure/closet/crate/coffin,
/turf/open/floor/plasteel/chapel{
dir = 4
},
/area/mafia)
"p" = (
/obj/machinery/door/poddoor/preopen{
desc = "When it's time to sleep, the lights will go out. Remember - no one in space can hear you scream.";
id = "mafia";
max_integrity = 99999;
name = "Station Night Shutters"
},
/obj/effect/spawner/structure/window/plastitanium,
/turf/open/space/basic,
/area/mafia)
"q" = (
/turf/open/floor/carpet/red,
/area/mafia)
"r" = (
/turf/open/floor/plasteel/chapel{
dir = 8
},
/area/mafia)
"t" = (
/turf/open/floor/carpet/royalblack,
/area/mafia)
"u" = (
/obj/effect/baseturf_helper/asteroid,
/obj/effect/landmark/mafia/town_center,
/turf/open/floor/carpet/royalblack,
/area/mafia)
"v" = (
/obj/mafia_game_board,
/turf/open/floor/plating{
icon_state = "panelscorched"
},
/area/mafia)
"D" = (
/obj/effect/landmark/mafia,
/turf/open/floor/plasteel/chapel{
dir = 4
},
/area/mafia)
"E" = (
/turf/open/floor/plasteel/chapel{
dir = 4
},
/area/mafia)
"H" = (
/obj/structure/closet/cabinet{
anchored = 1
},
/turf/open/floor/carpet/red,
/area/mafia)
"J" = (
/obj/structure/closet/crate/coffin,
/turf/open/floor/plasteel/chapel{
dir = 1
},
/area/mafia)
"M" = (
/obj/effect/landmark/mafia,
/turf/open/floor/plasteel/chapel{
dir = 8
},
/area/mafia)
"N" = (
/obj/effect/landmark/mafia,
/turf/open/floor/plasteel/chapel,
/area/mafia)
"O" = (
/turf/open/floor/plasteel/chapel,
/area/mafia)
"P" = (
/obj/structure/closet/crate/coffin,
/turf/open/floor/plasteel/chapel,
/area/mafia)
"Q" = (
/obj/structure/closet/crate/coffin,
/turf/open/floor/plasteel/chapel{
dir = 8
},
/area/mafia)
"X" = (
/turf/open/floor/plasteel/chapel{
dir = 1
},
/area/mafia)
(1,1,1) = {"
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
"}
(2,1,1) = {"
a
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
a
"}
(3,1,1) = {"
a
b
b
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
b
b
a
"}
(4,1,1) = {"
a
b
b
c
g
h
d
d
d
d
d
e
d
d
d
d
d
h
k
c
b
b
a
"}
(5,1,1) = {"
a
b
b
c
h
d
d
e
b
b
j
b
j
b
b
d
d
i
h
c
b
b
a
"}
(6,1,1) = {"
a
b
b
c
i
b
b
j
b
l
q
b
X
Q
b
j
b
b
d
c
b
b
a
"}
(7,1,1) = {"
a
b
c
c
d
b
J
r
p
m
q
p
E
N
p
q
l
b
d
c
c
b
a
"}
(8,1,1) = {"
a
b
c
d
d
b
D
O
b
b
q
b
r
b
b
q
m
b
d
d
c
b
a
"}
(9,1,1) = {"
a
b
c
d
b
b
p
X
r
p
q
p
O
p
q
q
p
b
b
d
c
b
a
"}
(10,1,1) = {"
a
b
c
d
b
l
p
b
p
p
p
p
p
p
p
b
p
Q
b
d
c
b
a
"}
(11,1,1) = {"
a
b
c
d
j
m
q
q
q
p
t
t
t
p
X
r
E
N
j
e
c
b
a
"}
(12,1,1) = {"
a
b
c
e
b
b
p
b
p
p
t
u
t
p
p
b
p
b
b
d
c
b
a
"}
(13,1,1) = {"
a
b
c
d
j
n
r
E
O
p
t
t
t
p
q
q
q
m
j
d
c
b
a
"}
(14,1,1) = {"
a
b
c
d
b
o
p
b
p
p
p
p
p
p
p
b
p
l
b
i
c
b
a
"}
(15,1,1) = {"
a
b
c
d
b
b
p
q
q
p
X
p
q
p
E
O
p
b
b
d
c
b
a
"}
(16,1,1) = {"
a
b
c
f
d
b
m
q
b
b
E
b
q
b
b
X
M
b
d
d
c
b
a
"}
(17,1,1) = {"
a
b
c
c
d
b
l
q
p
n
r
p
q
m
p
E
P
b
d
c
c
b
a
"}
(18,1,1) = {"
a
b
b
c
d
b
b
j
b
o
O
b
q
H
b
j
b
b
d
c
b
b
a
"}
(19,1,1) = {"
a
b
b
c
h
i
d
d
b
b
j
b
j
b
b
d
e
d
h
c
b
b
a
"}
(20,1,1) = {"
a
b
b
c
k
h
d
d
e
d
d
d
d
d
d
d
d
h
v
c
b
b
a
"}
(21,1,1) = {"
a
b
b
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
b
b
a
"}
(22,1,1) = {"
a
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
a
"}
(23,1,1) = {"
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
"}
+976
View File
@@ -0,0 +1,976 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"a" = (
/turf/closed/indestructible/riveted,
/area/mafia)
"c" = (
/turf/closed/wall/rust,
/area/mafia)
"d" = (
/turf/open/floor/plating,
/area/mafia)
"e" = (
/turf/open/floor/plating{
icon_state = "platingdmg3"
},
/area/mafia)
"f" = (
/turf/open/floor/plating{
icon_state = "panelscorched"
},
/area/mafia)
"g" = (
/obj/mafia_game_board,
/turf/open/floor/plating{
icon_state = "platingdmg3"
},
/area/mafia)
"h" = (
/obj/structure/grille/indestructable,
/turf/open/floor/plating,
/area/mafia)
"i" = (
/turf/open/floor/plating{
icon_state = "platingdmg1"
},
/area/mafia)
"j" = (
/obj/machinery/door/airlock/external{
max_integrity = 99999;
name = "Maintenance"
},
/obj/effect/mapping_helpers/airlock/locked,
/turf/open/floor/plating,
/area/mafia)
"k" = (
/obj/mafia_game_board,
/turf/open/floor/plating,
/area/mafia)
"l" = (
/obj/structure/closet{
desc = "It's a storage unit. For mining stuff. Y'know.";
icon_state = "mining";
name = "miner equipment locker"
},
/obj/item/clothing/under/rank/cargo/miner/lavaland,
/turf/open/floor/grass/fakebasalt,
/area/mafia)
"m" = (
/obj/effect/landmark/mafia,
/turf/open/floor/grass/fakebasalt,
/area/mafia)
"n" = (
/obj/effect/landmark/mafia,
/obj/effect/turf_decal/trimline/brown/filled/line{
icon_state = "trimline_fill";
dir = 9
},
/obj/effect/turf_decal/trimline/brown/filled/corner,
/turf/open/floor/plasteel,
/area/mafia)
"o" = (
/obj/effect/turf_decal/trimline/brown/filled/end{
icon_state = "trimline_end_fill";
dir = 4
},
/obj/structure/closet{
desc = "It's a storage unit. For mining stuff. Y'know.";
icon_state = "mining";
name = "miner equipment locker"
},
/obj/item/clothing/under/rank/cargo/miner/lavaland,
/turf/open/floor/plasteel,
/area/mafia)
"p" = (
/obj/machinery/door/poddoor/preopen{
desc = "When it's time to sleep, the lights will go out. Remember - no one in space can hear you scream.";
id = "mafia";
max_integrity = 99999;
name = "Station Night Shutters"
},
/turf/closed/indestructible/fakeglass,
/area/mafia)
"q" = (
/turf/open/floor/grass/fakebasalt,
/area/mafia)
"r" = (
/obj/effect/turf_decal/trimline/brown/filled/line{
icon_state = "trimline_fill";
dir = 9
},
/obj/structure/closet{
desc = "It's a storage unit. For mining stuff. Y'know.";
icon_state = "mining";
name = "miner equipment locker"
},
/obj/item/clothing/under/rank/cargo/miner/lavaland,
/turf/open/floor/plasteel,
/area/mafia)
"s" = (
/obj/effect/turf_decal/trimline/brown/filled/line{
icon_state = "trimline_fill";
dir = 9
},
/turf/open/floor/plasteel,
/area/mafia)
"t" = (
/obj/effect/turf_decal/tile/red,
/obj/effect/turf_decal/tile/red{
dir = 8
},
/turf/open/floor/plasteel/dark,
/area/mafia)
"u" = (
/obj/effect/turf_decal/tile/red{
dir = 4
},
/obj/effect/turf_decal/tile/red,
/turf/open/floor/plasteel/dark,
/area/mafia)
"v" = (
/obj/mafia_game_board,
/turf/open/floor/plating{
icon_state = "panelscorched"
},
/area/mafia)
"w" = (
/obj/effect/turf_decal/trimline/brown/filled/line{
icon_state = "trimline_fill";
dir = 1
},
/obj/effect/turf_decal/trimline/brown/filled/corner,
/turf/open/floor/plasteel,
/area/mafia)
"x" = (
/obj/effect/turf_decal/trimline/brown/filled/line{
icon_state = "trimline_fill";
dir = 1
},
/obj/effect/turf_decal/trimline/brown/filled/line,
/turf/open/floor/plasteel,
/area/mafia)
"y" = (
/obj/effect/turf_decal/trimline/brown/filled/end{
icon_state = "trimline_end_fill";
dir = 4
},
/turf/open/floor/plasteel,
/area/mafia)
"z" = (
/obj/effect/turf_decal/trimline/brown/filled/line{
icon_state = "trimline_fill";
dir = 5
},
/obj/structure/closet{
desc = "It's a storage unit. For mining stuff. Y'know.";
icon_state = "mining";
name = "miner equipment locker"
},
/obj/item/clothing/under/rank/cargo/miner/lavaland,
/turf/open/floor/plasteel,
/area/mafia)
"A" = (
/obj/effect/landmark/mafia,
/obj/effect/turf_decal/trimline/brown/filled/line{
icon_state = "trimline_fill";
dir = 6
},
/turf/open/floor/plasteel,
/area/mafia)
"B" = (
/obj/effect/turf_decal/trimline/brown/filled/end{
icon_state = "trimline_end_fill";
dir = 1
},
/turf/open/floor/plasteel,
/area/mafia)
"C" = (
/obj/effect/turf_decal/trimline/brown/filled/line{
icon_state = "trimline_fill";
dir = 4
},
/obj/effect/turf_decal/trimline/brown/filled/line{
icon_state = "trimline_fill";
dir = 8
},
/turf/open/floor/plasteel,
/area/mafia)
"D" = (
/obj/effect/turf_decal/trimline/brown/filled/line{
icon_state = "trimline_fill";
dir = 10
},
/obj/effect/turf_decal/trimline/brown/filled/corner{
icon_state = "trimline_corner_fill";
dir = 4
},
/turf/open/floor/plasteel,
/area/mafia)
"E" = (
/obj/effect/turf_decal/trimline/brown/filled/line{
icon_state = "trimline_fill";
dir = 1
},
/obj/effect/turf_decal/trimline/brown/filled/corner{
icon_state = "trimline_corner_fill";
dir = 8
},
/turf/open/floor/plasteel,
/area/mafia)
"F" = (
/obj/effect/turf_decal/trimline/brown/filled/line{
icon_state = "trimline_fill";
dir = 5
},
/turf/open/floor/plasteel,
/area/mafia)
"G" = (
/obj/effect/landmark/mafia,
/obj/effect/turf_decal/trimline/brown/filled/line{
icon_state = "trimline_fill";
dir = 10
},
/turf/open/floor/plasteel,
/area/mafia)
"H" = (
/obj/effect/turf_decal/trimline/brown/filled/line{
icon_state = "trimline_fill";
dir = 10
},
/obj/structure/closet{
desc = "It's a storage unit. For mining stuff. Y'know.";
icon_state = "mining";
name = "miner equipment locker"
},
/obj/item/clothing/under/rank/cargo/miner/lavaland,
/turf/open/floor/plasteel,
/area/mafia)
"I" = (
/obj/effect/turf_decal/trimline/brown/filled/line{
icon_state = "trimline_fill";
dir = 6
},
/obj/structure/closet{
desc = "It's a storage unit. For mining stuff. Y'know.";
icon_state = "mining";
name = "miner equipment locker"
},
/obj/item/clothing/under/rank/cargo/miner/lavaland,
/turf/open/floor/plasteel,
/area/mafia)
"J" = (
/obj/effect/landmark/mafia,
/obj/effect/turf_decal/trimline/brown/filled/line{
icon_state = "trimline_fill";
dir = 6
},
/obj/effect/turf_decal/trimline/brown/filled/corner{
icon_state = "trimline_corner_fill";
dir = 1
},
/turf/open/floor/plasteel,
/area/mafia)
"K" = (
/obj/effect/turf_decal/trimline/brown/filled/end{
icon_state = "trimline_end_fill";
dir = 8
},
/obj/structure/closet{
desc = "It's a storage unit. For mining stuff. Y'know.";
icon_state = "mining";
name = "miner equipment locker"
},
/obj/item/clothing/under/rank/cargo/miner/lavaland,
/turf/open/floor/plasteel,
/area/mafia)
"L" = (
/obj/effect/landmark/mafia,
/obj/effect/turf_decal/trimline/brown/filled/line{
icon_state = "trimline_fill";
dir = 5
},
/turf/open/floor/plasteel,
/area/mafia)
"M" = (
/obj/effect/turf_decal/trimline/brown/filled/line{
icon_state = "trimline_fill";
dir = 10
},
/turf/open/floor/plasteel,
/area/mafia)
"N" = (
/obj/effect/turf_decal/trimline/brown/filled/line,
/obj/effect/turf_decal/trimline/brown/filled/corner{
icon_state = "trimline_corner_fill";
dir = 4
},
/turf/open/floor/plasteel,
/area/mafia)
"O" = (
/obj/effect/turf_decal/trimline/brown/filled/corner{
icon_state = "trimline_corner_fill";
dir = 8
},
/obj/effect/turf_decal/trimline/brown/filled/line{
icon_state = "trimline_fill";
dir = 5
},
/turf/open/floor/plasteel,
/area/mafia)
"P" = (
/obj/effect/turf_decal/trimline/brown/filled/end,
/turf/open/floor/plasteel,
/area/mafia)
"Q" = (
/obj/effect/landmark/mafia,
/obj/effect/turf_decal/trimline/brown/filled/line{
icon_state = "trimline_fill";
dir = 9
},
/turf/open/floor/plasteel,
/area/mafia)
"R" = (
/obj/effect/baseturf_helper/asteroid,
/obj/effect/landmark/mafia/town_center,
/obj/effect/turf_decal/tile/red,
/obj/effect/turf_decal/tile/red{
dir = 1
},
/obj/effect/turf_decal/tile/red{
dir = 8
},
/obj/effect/turf_decal/tile/red{
dir = 4
},
/turf/open/floor/plasteel/dark,
/area/mafia)
"S" = (
/obj/effect/turf_decal/trimline/brown/filled/end{
icon_state = "trimline_end_fill";
dir = 8
},
/turf/open/floor/plasteel,
/area/mafia)
"T" = (
/obj/effect/turf_decal/trimline/brown/filled/line,
/obj/effect/turf_decal/trimline/brown/filled/line{
icon_state = "trimline_fill";
dir = 1
},
/turf/open/floor/plasteel,
/area/mafia)
"U" = (
/obj/effect/turf_decal/trimline/brown/filled/line,
/obj/effect/turf_decal/trimline/brown/filled/corner{
icon_state = "trimline_corner_fill";
dir = 1
},
/turf/open/floor/plasteel,
/area/mafia)
"V" = (
/obj/effect/turf_decal/trimline/brown/filled/line{
icon_state = "trimline_fill";
dir = 6
},
/turf/open/floor/plasteel,
/area/mafia)
"W" = (
/obj/effect/turf_decal/tile/red{
dir = 8
},
/obj/effect/turf_decal/tile/red{
dir = 1
},
/turf/open/floor/plasteel/dark,
/area/mafia)
"X" = (
/obj/effect/turf_decal/tile/red{
dir = 1
},
/obj/effect/turf_decal/tile/red{
dir = 4
},
/turf/open/floor/plasteel/dark,
/area/mafia)
"Y" = (
/turf/closed/indestructible{
icon = 'icons/turf/walls/reinforced_wall.dmi';
icon_state = "r_wall";
name = "reinforced wall"
},
/area/mafia)
(1,1,1) = {"
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
"}
(2,1,1) = {"
a
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
a
"}
(3,1,1) = {"
a
Y
Y
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Y
Y
a
"}
(4,1,1) = {"
a
Y
Y
c
g
h
d
d
d
d
d
e
d
d
d
d
d
h
k
c
Y
Y
a
"}
(5,1,1) = {"
a
Y
Y
c
h
d
d
e
Y
Y
j
Y
j
Y
Y
d
d
i
h
c
Y
Y
a
"}
(6,1,1) = {"
a
Y
Y
c
i
Y
Y
j
Y
l
q
Y
s
H
Y
j
Y
Y
d
c
Y
Y
a
"}
(7,1,1) = {"
a
Y
c
c
d
Y
r
M
p
m
q
p
w
A
p
q
l
Y
d
c
c
Y
a
"}
(8,1,1) = {"
a
Y
c
d
d
Y
L
N
Y
Y
q
Y
x
Y
Y
q
m
Y
d
d
c
Y
a
"}
(9,1,1) = {"
a
Y
c
d
Y
Y
p
O
P
p
q
p
y
p
q
q
p
Y
Y
d
c
Y
a
"}
(10,1,1) = {"
a
Y
c
d
Y
l
p
Y
p
p
p
p
p
p
p
Y
p
K
Y
d
c
Y
a
"}
(11,1,1) = {"
a
Y
c
d
j
m
q
q
q
p
q
u
q
p
B
C
C
J
j
e
c
Y
a
"}
(12,1,1) = {"
a
Y
c
e
Y
Y
p
Y
p
p
t
R
X
p
p
Y
p
Y
Y
d
c
Y
a
"}
(13,1,1) = {"
a
Y
c
d
j
n
C
C
P
p
q
W
q
p
q
q
q
m
j
d
c
Y
a
"}
(14,1,1) = {"
a
Y
c
d
Y
o
p
Y
p
p
p
p
p
p
p
Y
p
l
Y
i
c
Y
a
"}
(15,1,1) = {"
a
Y
c
d
Y
Y
p
q
q
p
S
p
q
p
B
D
p
Y
Y
d
c
Y
a
"}
(16,1,1) = {"
a
Y
c
f
d
Y
m
q
Y
Y
T
Y
q
Y
Y
E
G
Y
d
d
c
Y
a
"}
(17,1,1) = {"
a
Y
c
c
d
Y
l
q
p
Q
U
p
q
m
p
F
I
Y
d
c
c
Y
a
"}
(18,1,1) = {"
a
Y
Y
c
d
Y
Y
j
Y
z
V
Y
q
l
Y
j
Y
Y
d
c
Y
Y
a
"}
(19,1,1) = {"
a
Y
Y
c
h
i
d
d
Y
Y
j
Y
j
Y
Y
d
e
d
h
c
Y
Y
a
"}
(20,1,1) = {"
a
Y
Y
c
k
h
d
d
e
d
d
d
d
d
d
d
d
h
v
c
Y
Y
a
"}
(21,1,1) = {"
a
Y
Y
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Y
Y
a
"}
(22,1,1) = {"
a
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
a
"}
(23,1,1) = {"
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
"}
+658
View File
@@ -0,0 +1,658 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"a" = (
/turf/closed/indestructible/riveted,
/area/mafia)
"b" = (
/turf/open/indestructible/reebe_void,
/area/mafia)
"c" = (
/turf/open/indestructible/reebe_void/spawning/lattices,
/area/mafia)
"d" = (
/obj/mafia_game_board,
/turf/open/indestructible/reebe_void/spawning/lattices,
/area/mafia)
"e" = (
/turf/closed/wall/clockwork,
/area/mafia)
"f" = (
/turf/open/floor/clockwork/reebe,
/area/mafia)
"g" = (
/obj/effect/landmark/mafia,
/turf/open/floor/clockwork/reebe,
/area/mafia)
"h" = (
/obj/structure/window/reinforced/clockwork/fulltile,
/obj/structure/grille/ratvar,
/obj/machinery/door/poddoor/preopen{
desc = "When it's time to sleep, the lights will go out. Remember - no one in space can hear you scream.";
id = "mafia";
max_integrity = 99999;
name = "Station Night Shutters"
},
/turf/open/floor/clockwork/reebe,
/area/mafia)
"i" = (
/obj/structure/bed,
/obj/item/bedsheet/orange,
/turf/open/floor/clockwork/reebe,
/area/mafia)
"j" = (
/obj/structure/chair/brass{
dir = 4
},
/turf/open/floor/clockwork/reebe,
/area/mafia)
"k" = (
/obj/structure/chair/brass,
/turf/open/floor/clockwork/reebe,
/area/mafia)
"l" = (
/obj/structure/chair/brass{
dir = 8
},
/turf/open/floor/clockwork/reebe,
/area/mafia)
"m" = (
/obj/effect/baseturf_helper/asteroid,
/obj/effect/landmark/mafia/town_center,
/obj/structure/chair/brass,
/turf/open/floor/clockwork/reebe,
/area/mafia)
"n" = (
/obj/structure/chair/brass{
icon_state = "brass_chair";
dir = 1
},
/turf/open/floor/clockwork/reebe,
/area/mafia)
"o" = (
/obj/item/toy/plush/plushvar,
/turf/open/floor/clockwork/reebe,
/area/mafia)
"p" = (
/obj/structure/window/reinforced/clockwork/fulltile,
/obj/structure/grille/ratvar,
/turf/open/floor/clockwork/reebe,
/area/mafia)
"q" = (
/obj/item/toy/plush/plushvar,
/turf/open/indestructible/reebe_void/spawning/lattices,
/area/mafia)
(1,1,1) = {"
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
"}
(2,1,1) = {"
a
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
a
"}
(3,1,1) = {"
a
b
b
c
c
c
b
b
b
b
b
b
b
b
b
b
b
c
c
c
b
b
a
"}
(4,1,1) = {"
a
b
b
c
d
c
b
b
b
b
b
b
b
b
b
b
b
q
d
c
b
b
a
"}
(5,1,1) = {"
a
b
b
c
c
c
c
b
e
e
p
e
p
e
e
b
b
c
c
c
b
b
a
"}
(6,1,1) = {"
a
b
b
b
b
p
p
e
e
i
f
e
f
i
e
e
p
p
c
b
b
b
a
"}
(7,1,1) = {"
a
b
b
b
b
p
i
f
h
g
f
h
f
g
h
f
i
p
b
b
b
b
a
"}
(8,1,1) = {"
a
b
b
b
b
e
g
f
e
e
f
e
f
e
e
f
g
e
b
b
b
b
a
"}
(9,1,1) = {"
a
b
b
b
e
e
h
f
j
h
j
h
j
h
j
f
h
e
e
b
b
b
a
"}
(10,1,1) = {"
a
b
b
b
e
i
h
e
h
h
h
h
h
h
h
e
h
i
e
b
b
b
a
"}
(11,1,1) = {"
a
b
b
b
p
g
f
f
k
h
f
f
o
h
n
f
f
g
p
b
b
b
a
"}
(12,1,1) = {"
a
b
b
b
e
e
h
e
h
h
f
m
f
h
h
e
h
e
e
b
b
b
a
"}
(13,1,1) = {"
a
b
b
b
p
g
f
f
k
h
f
f
f
h
n
f
f
g
p
b
b
b
a
"}
(14,1,1) = {"
a
b
b
b
e
i
h
e
h
h
h
h
h
h
h
e
h
i
e
b
b
b
a
"}
(15,1,1) = {"
a
b
b
b
e
e
h
f
l
h
l
h
l
h
l
f
h
e
e
b
b
b
a
"}
(16,1,1) = {"
a
b
b
b
b
e
g
f
e
e
f
e
f
e
e
f
g
e
b
b
b
b
a
"}
(17,1,1) = {"
a
b
b
b
b
p
i
f
h
g
f
h
f
g
h
f
i
p
b
b
b
b
a
"}
(18,1,1) = {"
a
b
b
b
b
p
p
e
e
f
i
e
i
f
e
e
p
p
c
b
b
b
a
"}
(19,1,1) = {"
a
b
b
c
c
c
c
b
e
e
p
e
p
e
e
b
b
c
c
c
b
b
a
"}
(20,1,1) = {"
a
b
b
c
d
c
b
b
b
b
b
b
b
b
b
b
b
c
d
c
b
b
a
"}
(21,1,1) = {"
a
b
b
c
c
c
b
b
b
b
b
b
b
b
b
b
b
c
c
c
b
b
a
"}
(22,1,1) = {"
a
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
a
"}
(23,1,1) = {"
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
"}
+755
View File
@@ -0,0 +1,755 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"a" = (
/turf/closed/indestructible/riveted,
/area/mafia)
"d" = (
/turf/open/floor/plating,
/area/mafia)
"e" = (
/turf/open/floor/plating{
icon_state = "platingdmg3"
},
/area/mafia)
"f" = (
/turf/open/floor/plating{
icon_state = "panelscorched"
},
/area/mafia)
"g" = (
/obj/mafia_game_board,
/turf/open/floor/plating{
icon_state = "platingdmg3"
},
/area/mafia)
"h" = (
/obj/structure/grille/indestructable,
/turf/open/floor/plating,
/area/mafia)
"i" = (
/turf/open/floor/plating{
icon_state = "platingdmg1"
},
/area/mafia)
"j" = (
/obj/machinery/door/airlock/maintenance_hatch{
max_integrity = 99999;
name = "Maintenance"
},
/obj/effect/mapping_helpers/airlock/locked,
/turf/open/floor/plating,
/area/mafia)
"k" = (
/obj/mafia_game_board,
/turf/open/floor/plating,
/area/mafia)
"l" = (
/obj/item/bedsheet/brown,
/obj/structure/bed,
/turf/open/floor/holofloor/wood,
/area/mafia)
"m" = (
/obj/effect/landmark/mafia,
/turf/open/floor/holofloor/wood,
/area/mafia)
"n" = (
/obj/item/bedsheet/green,
/obj/structure/bed,
/turf/open/floor/holofloor/wood,
/area/mafia)
"o" = (
/obj/item/bedsheet/blue,
/obj/structure/bed,
/turf/open/floor/holofloor/wood,
/area/mafia)
"p" = (
/obj/machinery/door/poddoor/preopen{
desc = "When it's time to sleep, the lights will go out. Remember - no one in space can hear you scream.";
id = "mafia";
max_integrity = 99999;
name = "Station Night Shutters"
},
/turf/closed/indestructible/fakeglass,
/area/mafia)
"q" = (
/turf/open/floor/plasteel/dark,
/area/mafia)
"r" = (
/turf/open/floor/plasteel,
/area/mafia)
"s" = (
/turf/closed/wall/ice,
/area/mafia)
"t" = (
/turf/open/floor/holofloor/snow,
/area/mafia)
"u" = (
/obj/structure/statue/plasma/scientist{
anchored = 1
},
/turf/open/floor/holofloor/snow,
/area/mafia)
"v" = (
/obj/effect/baseturf_helper/asteroid,
/obj/effect/landmark/mafia/town_center,
/turf/open/floor/holofloor/snow,
/area/mafia)
"w" = (
/turf/open/lava/plasma,
/area/mafia)
"x" = (
/obj/machinery/door/airlock/external{
max_integrity = 9999;
opacity = 0
},
/obj/machinery/door/poddoor/preopen{
desc = "When it's time to sleep, the lights will go out. Remember - no one in space can hear you scream.";
id = "mafia";
max_integrity = 99999;
name = "Station Night Shutters"
},
/obj/effect/mapping_helpers/airlock/locked,
/turf/open/floor/plasteel/dark,
/area/mafia)
"y" = (
/obj/effect/landmark/mafia,
/turf/open/floor/holofloor/snow,
/area/mafia)
"z" = (
/obj/structure/lattice/catwalk,
/turf/open/lava/plasma,
/area/mafia)
"A" = (
/obj/machinery/door/airlock/external{
max_integrity = 9999
},
/obj/machinery/door/poddoor/preopen{
desc = "When it's time to sleep, the lights will go out. Remember - no one in space can hear you scream.";
id = "mafia";
max_integrity = 99999;
name = "Station Night Shutters"
},
/obj/effect/mapping_helpers/airlock/locked,
/turf/open/floor/plasteel,
/area/mafia)
"B" = (
/obj/effect/landmark/mafia,
/obj/structure/lattice/catwalk,
/turf/open/lava/plasma,
/area/mafia)
"C" = (
/obj/mafia_game_board,
/turf/open/floor/holofloor/snow,
/area/mafia)
"D" = (
/obj/structure/closet/crate/science,
/obj/item/clothing/suit/hooded/wintercoat,
/obj/item/clothing/shoes/winterboots,
/turf/open/floor/holofloor/snow,
/area/mafia)
"E" = (
/obj/structure/lattice/catwalk,
/obj/structure/closet/crate/critter,
/obj/item/clothing/suit/hooded/wintercoat/miner,
/obj/item/clothing/shoes/winterboots,
/turf/open/lava/plasma,
/area/mafia)
"F" = (
/turf/open/floor/holofloor/wood,
/area/mafia)
"G" = (
/obj/item/bedsheet/orange,
/obj/structure/bed,
/turf/open/floor/holofloor/wood,
/area/mafia)
"H" = (
/obj/item/bedsheet/black,
/obj/structure/bed,
/turf/open/floor/holofloor/wood,
/area/mafia)
"I" = (
/obj/item/bedsheet/red,
/obj/structure/bed,
/turf/open/floor/holofloor/wood,
/area/mafia)
"J" = (
/turf/open/floor/plating/snowed/smoothed,
/area/mafia)
"K" = (
/turf/closed/indestructible/rock/snow,
/area/mafia)
(1,1,1) = {"
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
"}
(2,1,1) = {"
a
a
a
a
a
a
a
a
a
a
a
s
K
K
K
K
K
K
K
K
K
K
a
"}
(3,1,1) = {"
a
a
a
s
s
s
s
s
s
s
s
s
w
w
t
w
w
w
w
w
w
K
a
"}
(4,1,1) = {"
a
a
a
s
g
h
d
d
d
d
d
s
t
w
w
w
w
w
C
w
w
K
a
"}
(5,1,1) = {"
a
a
a
s
h
d
d
e
s
s
j
s
p
p
p
w
w
w
w
w
w
K
a
"}
(6,1,1) = {"
a
a
a
s
i
s
s
j
s
H
F
s
t
D
p
p
p
p
w
w
w
K
a
"}
(7,1,1) = {"
a
a
s
s
d
s
o
F
p
m
q
p
t
y
p
z
E
p
w
t
w
K
a
"}
(8,1,1) = {"
a
a
s
d
d
s
m
r
s
s
q
s
t
p
p
z
B
p
w
w
w
K
a
"}
(9,1,1) = {"
a
a
s
d
s
s
p
r
r
p
q
p
t
p
z
z
p
p
p
w
w
K
a
"}
(10,1,1) = {"
a
a
s
d
s
l
p
s
p
p
p
p
p
p
p
p
p
D
p
w
w
K
a
"}
(11,1,1) = {"
a
a
s
d
j
m
F
q
q
x
J
t
t
p
t
t
t
y
p
w
t
K
a
"}
(12,1,1) = {"
a
a
s
e
s
a
p
s
p
p
u
v
t
p
p
p
p
p
p
w
w
K
a
"}
(13,1,1) = {"
a
a
s
d
j
m
F
r
r
A
J
t
t
p
t
t
t
y
p
w
w
K
a
"}
(14,1,1) = {"
a
a
s
d
s
n
p
s
p
p
p
p
p
p
p
p
p
D
p
w
w
K
a
"}
(15,1,1) = {"
a
a
s
d
s
s
p
q
q
p
r
p
t
p
z
z
p
p
p
w
w
K
a
"}
(16,1,1) = {"
a
a
s
f
d
s
m
q
s
s
r
s
t
p
p
z
B
p
w
w
w
K
a
"}
(17,1,1) = {"
a
a
s
s
d
s
G
F
p
m
r
p
t
y
p
z
E
p
w
w
w
K
a
"}
(18,1,1) = {"
a
a
a
s
d
s
s
j
s
I
F
s
t
D
p
p
p
p
w
t
w
K
a
"}
(19,1,1) = {"
a
a
a
s
h
i
d
d
s
s
j
s
p
p
p
t
w
w
w
w
w
K
a
"}
(20,1,1) = {"
a
a
a
s
k
h
d
d
e
d
d
s
t
w
w
w
w
w
C
w
w
K
a
"}
(21,1,1) = {"
a
a
a
s
s
s
s
s
s
s
s
s
w
w
w
w
w
w
w
w
w
K
a
"}
(22,1,1) = {"
a
a
a
a
a
a
a
a
a
a
a
s
K
K
K
K
K
K
K
K
K
K
a
"}
(23,1,1) = {"
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
"}
+690
View File
@@ -0,0 +1,690 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"a" = (
/turf/closed/indestructible/riveted,
/area/mafia)
"b" = (
/obj/structure/closet/cabinet{
anchored = 1
},
/obj/item/reagent_containers/food/snacks/sashimi,
/turf/open/floor/carpet/black,
/area/mafia)
"c" = (
/turf/closed/wall/rust,
/area/mafia)
"d" = (
/turf/open/floor/plating,
/area/mafia)
"e" = (
/turf/open/floor/plating{
icon_state = "platingdmg3"
},
/area/mafia)
"f" = (
/turf/open/floor/plating{
icon_state = "panelscorched"
},
/area/mafia)
"g" = (
/obj/mafia_game_board,
/turf/open/floor/plating{
icon_state = "platingdmg3"
},
/area/mafia)
"h" = (
/obj/structure/grille/indestructable,
/turf/open/floor/plating,
/area/mafia)
"i" = (
/turf/open/floor/plating{
icon_state = "platingdmg1"
},
/area/mafia)
"j" = (
/turf/closed/wall/mineral/wood{
desc = "A door that goes nowhere. How kafkaesque.";
icon = 'icons/obj/doors/mineral_doors.dmi';
icon_state = "paperframe";
name = "Door"
},
/area/mafia)
"k" = (
/obj/mafia_game_board,
/turf/open/floor/plating,
/area/mafia)
"m" = (
/obj/effect/landmark/mafia,
/turf/open/floor/wood,
/area/mafia)
"n" = (
/obj/effect/landmark/mafia,
/turf/open/floor/carpet/black,
/area/mafia)
"o" = (
/obj/structure/closet/cabinet{
anchored = 1
},
/obj/item/reagent_containers/food/snacks/sashimi,
/turf/open/floor/wood,
/area/mafia)
"p" = (
/obj/machinery/door/poddoor/preopen{
desc = "When it's time to sleep, the lights will go out. Remember - no one in space can hear you scream.";
id = "mafia";
max_integrity = 99999;
name = "Station Night Shutters"
},
/turf/closed/indestructible/fakeglass{
icon = 'icons/obj/smooth_structures/paperframes.dmi';
icon_state = "paper"
},
/area/mafia)
"q" = (
/turf/open/floor/wood,
/area/mafia)
"r" = (
/turf/open/floor/carpet/black,
/area/mafia)
"t" = (
/turf/open/floor/plating/beach/sand,
/area/mafia)
"u" = (
/obj/effect/baseturf_helper/asteroid,
/obj/effect/landmark/mafia/town_center,
/turf/open/floor/plating/beach/sand,
/area/mafia)
"v" = (
/obj/mafia_game_board,
/turf/open/floor/plating{
icon_state = "panelscorched"
},
/area/mafia)
"B" = (
/obj/structure/showcase{
density = 0;
desc = "Welp, only one way to recover your honour.";
icon = 'icons/obj/items_and_weapons.dmi';
icon_state = "katana";
name = "seppuku katana"
},
/turf/open/floor/plating/beach/sand,
/area/mafia)
"S" = (
/turf/closed/wall/mineral/wood,
/area/mafia)
(1,1,1) = {"
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
"}
(2,1,1) = {"
a
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
a
"}
(3,1,1) = {"
a
S
S
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
S
S
a
"}
(4,1,1) = {"
a
S
S
c
g
h
d
d
d
d
d
e
d
d
d
d
d
h
k
c
S
S
a
"}
(5,1,1) = {"
a
S
S
c
h
d
d
e
S
S
j
S
j
S
S
d
d
i
h
c
S
S
a
"}
(6,1,1) = {"
a
S
S
c
i
S
S
j
S
o
q
S
r
b
S
j
S
S
d
c
S
S
a
"}
(7,1,1) = {"
a
S
c
c
d
S
b
r
p
m
q
p
r
n
p
q
o
S
d
c
c
S
a
"}
(8,1,1) = {"
a
S
c
d
d
S
n
r
S
S
q
S
r
S
S
q
m
S
d
d
c
S
a
"}
(9,1,1) = {"
a
S
c
d
S
S
p
r
r
p
q
p
r
p
q
q
p
S
S
d
c
S
a
"}
(10,1,1) = {"
a
S
c
d
S
o
p
S
p
p
p
p
p
p
p
S
p
b
S
d
c
S
a
"}
(11,1,1) = {"
a
S
c
d
j
m
q
q
q
p
t
t
t
p
r
r
r
n
j
e
c
S
a
"}
(12,1,1) = {"
a
S
c
e
S
S
p
S
p
p
t
u
B
p
p
S
p
S
S
d
c
S
a
"}
(13,1,1) = {"
a
S
c
d
j
n
r
r
r
p
t
t
t
p
q
q
q
m
j
d
c
S
a
"}
(14,1,1) = {"
a
S
c
d
S
b
p
S
p
p
p
p
p
p
p
S
p
o
S
i
c
S
a
"}
(15,1,1) = {"
a
S
c
d
S
S
p
q
q
p
r
p
q
p
r
r
p
S
S
d
c
S
a
"}
(16,1,1) = {"
a
S
c
f
d
S
m
q
S
S
r
S
q
S
S
r
n
S
d
d
c
S
a
"}
(17,1,1) = {"
a
S
c
c
d
S
o
q
p
n
r
p
q
m
p
r
b
S
d
c
c
S
a
"}
(18,1,1) = {"
a
S
S
c
d
S
S
j
S
b
r
S
q
o
S
j
S
S
d
c
S
S
a
"}
(19,1,1) = {"
a
S
S
c
h
i
d
d
S
S
j
S
j
S
S
d
e
d
h
c
S
S
a
"}
(20,1,1) = {"
a
S
S
c
k
h
d
d
e
d
d
d
d
d
d
d
d
h
v
c
S
S
a
"}
(21,1,1) = {"
a
S
S
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
S
S
a
"}
(22,1,1) = {"
a
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
a
"}
(23,1,1) = {"
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
"}
+869
View File
@@ -0,0 +1,869 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"a" = (
/turf/closed/indestructible/riveted,
/area/mafia)
"b" = (
/obj/structure/closet/syndicate{
desc = "A storage closet for syndicate conflict resolution operatives.";
name = "red closet"
},
/obj/item/clothing/under/syndicate/tacticool,
/obj/item/clothing/under/syndicate/tacticool/skirt,
/turf/open/floor/mineral/plastitanium,
/area/mafia)
"c" = (
/turf/closed/wall/rust,
/area/mafia)
"d" = (
/turf/open/floor/plating,
/area/mafia)
"e" = (
/turf/open/floor/plating{
icon_state = "platingdmg3"
},
/area/mafia)
"f" = (
/turf/open/floor/plating{
icon_state = "panelscorched"
},
/area/mafia)
"g" = (
/obj/mafia_game_board,
/turf/open/floor/plating{
icon_state = "platingdmg3"
},
/area/mafia)
"h" = (
/obj/structure/grille/indestructable,
/turf/open/floor/plating,
/area/mafia)
"i" = (
/turf/open/floor/plating{
icon_state = "platingdmg1"
},
/area/mafia)
"j" = (
/obj/machinery/door/airlock/maintenance_hatch{
max_integrity = 99999;
name = "Maintenance"
},
/obj/effect/mapping_helpers/airlock/locked,
/turf/open/floor/plating,
/area/mafia)
"k" = (
/obj/mafia_game_board,
/turf/open/floor/plating,
/area/mafia)
"l" = (
/obj/structure/closet/syndicate{
desc = "A storage closet for syndicate conflict resolution operatives.";
name = "red closet"
},
/obj/item/clothing/under/syndicate/tacticool,
/obj/item/clothing/under/syndicate/tacticool/skirt,
/obj/effect/turf_decal/tile/red,
/obj/effect/turf_decal/tile/red{
dir = 1
},
/obj/effect/turf_decal/tile/red{
dir = 8
},
/obj/effect/turf_decal/tile/red{
dir = 4
},
/turf/open/floor/plasteel/dark,
/area/mafia)
"m" = (
/obj/structure/closet/syndicate{
desc = "A storage closet for syndicate conflict resolution operatives.";
name = "red closet"
},
/obj/item/clothing/under/syndicate/tacticool,
/obj/item/clothing/under/syndicate/tacticool/skirt,
/obj/effect/turf_decal/tile/red,
/obj/effect/turf_decal/tile/red{
dir = 1
},
/obj/effect/turf_decal/tile/red{
dir = 4
},
/obj/effect/turf_decal/tile/red{
dir = 8
},
/turf/open/floor/plasteel/dark,
/area/mafia)
"n" = (
/obj/effect/landmark/mafia,
/turf/open/floor/mineral/plastitanium,
/area/mafia)
"o" = (
/obj/effect/turf_decal/tile/red,
/obj/effect/turf_decal/tile/red{
dir = 4
},
/obj/effect/turf_decal/tile/red{
dir = 8
},
/obj/effect/turf_decal/tile/red{
dir = 1
},
/turf/open/floor/plasteel/dark,
/area/mafia)
"p" = (
/obj/machinery/door/poddoor/preopen{
desc = "When it's time to sleep, the lights will go out. Remember - no one in space can hear you scream.";
id = "mafia";
max_integrity = 99999;
name = "Station Night Shutters"
},
/obj/effect/spawner/structure/window/plastitanium,
/turf/open/space/basic,
/area/mafia)
"q" = (
/obj/effect/turf_decal/tile/red,
/obj/effect/turf_decal/tile/red{
dir = 4
},
/obj/effect/turf_decal/tile/red{
dir = 8
},
/obj/effect/turf_decal/tile/red{
dir = 1
},
/obj/structure/chair/office{
dir = 1;
name = "tactical swivel chair"
},
/turf/open/floor/plasteel/dark,
/area/mafia)
"r" = (
/turf/open/floor/mineral/plastitanium,
/area/mafia)
"s" = (
/turf/open/floor/mineral/plastitanium/red,
/area/mafia)
"t" = (
/turf/open/floor/circuit/red,
/area/mafia)
"u" = (
/obj/effect/baseturf_helper/asteroid,
/obj/effect/landmark/mafia/town_center,
/obj/structure/chair,
/turf/open/floor/circuit/red,
/area/mafia)
"v" = (
/obj/mafia_game_board,
/turf/open/floor/plating{
icon_state = "panelscorched"
},
/area/mafia)
"w" = (
/turf/closed/indestructible/syndicate,
/area/mafia)
"x" = (
/obj/effect/turf_decal/tile/red,
/obj/effect/turf_decal/tile/red{
dir = 4
},
/obj/effect/turf_decal/tile/red{
dir = 8
},
/obj/effect/turf_decal/tile/red{
dir = 1
},
/obj/structure/chair/office{
dir = 4;
name = "tactical swivel chair"
},
/turf/open/floor/plasteel/dark,
/area/mafia)
"y" = (
/obj/structure/chair/office{
dir = 2;
name = "tactical swivel chair"
},
/turf/open/floor/mineral/plastitanium,
/area/mafia)
"z" = (
/obj/effect/turf_decal/tile/red,
/obj/effect/turf_decal/tile/red{
dir = 4
},
/obj/effect/turf_decal/tile/red{
dir = 8
},
/obj/effect/turf_decal/tile/red{
dir = 1
},
/obj/structure/chair/office{
dir = 2;
name = "tactical swivel chair"
},
/turf/open/floor/plasteel/dark,
/area/mafia)
"A" = (
/obj/structure/chair/office{
dir = 8;
name = "tactical swivel chair"
},
/turf/open/floor/mineral/plastitanium,
/area/mafia)
"B" = (
/obj/structure/chair/office{
dir = 4;
name = "tactical swivel chair"
},
/turf/open/floor/mineral/plastitanium,
/area/mafia)
"C" = (
/obj/effect/turf_decal/tile/red,
/obj/effect/turf_decal/tile/red{
dir = 4
},
/obj/effect/turf_decal/tile/red{
dir = 8
},
/obj/effect/turf_decal/tile/red{
dir = 1
},
/obj/structure/chair/office{
dir = 8;
name = "tactical swivel chair"
},
/turf/open/floor/plasteel/dark,
/area/mafia)
"E" = (
/obj/structure/chair/office{
dir = 1;
name = "tactical swivel chair"
},
/turf/open/floor/mineral/plastitanium,
/area/mafia)
"F" = (
/obj/effect/turf_decal/tile/red,
/obj/effect/turf_decal/tile/red{
dir = 4
},
/obj/effect/turf_decal/tile/red{
dir = 8
},
/obj/effect/turf_decal/tile/red{
dir = 1
},
/obj/structure/closet/syndicate{
desc = "A storage closet for syndicate conflict resolution operatives.";
name = "red closet"
},
/obj/item/clothing/under/syndicate/tacticool,
/obj/item/clothing/under/syndicate/tacticool/skirt,
/turf/open/floor/plasteel/dark,
/area/mafia)
"G" = (
/obj/effect/turf_decal/tile/red,
/obj/effect/turf_decal/tile/red{
dir = 4
},
/obj/effect/turf_decal/tile/red{
dir = 8
},
/obj/effect/turf_decal/tile/red{
dir = 1
},
/obj/item/clothing/under/syndicate/tacticool,
/obj/structure/closet/syndicate{
desc = "A storage closet for syndicate conflict resolution operatives.";
name = "red closet"
},
/obj/item/clothing/under/syndicate/tacticool/skirt,
/turf/open/floor/plasteel/dark,
/area/mafia)
"H" = (
/obj/effect/turf_decal/tile/red,
/obj/effect/turf_decal/tile/red{
dir = 4
},
/obj/effect/turf_decal/tile/red{
dir = 8
},
/obj/effect/turf_decal/tile/red{
dir = 1
},
/obj/effect/landmark/mafia,
/turf/open/floor/plasteel/dark,
/area/mafia)
(1,1,1) = {"
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
"}
(2,1,1) = {"
a
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
a
"}
(3,1,1) = {"
a
w
w
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
w
w
a
"}
(4,1,1) = {"
a
w
w
c
g
h
d
d
d
d
d
e
d
d
d
d
d
h
k
c
w
w
a
"}
(5,1,1) = {"
a
w
w
c
h
d
d
e
w
w
j
w
j
w
w
d
d
i
h
c
w
w
a
"}
(6,1,1) = {"
a
w
w
c
i
w
w
j
w
b
r
w
o
F
w
j
w
w
d
c
w
w
a
"}
(7,1,1) = {"
a
w
c
c
d
w
l
o
p
n
r
p
o
H
p
r
b
w
d
c
c
w
a
"}
(8,1,1) = {"
a
w
c
d
d
w
H
o
w
w
r
w
o
w
w
r
n
w
d
d
c
w
a
"}
(9,1,1) = {"
a
w
c
d
w
w
p
o
x
p
B
p
x
p
B
r
p
w
w
d
c
w
a
"}
(10,1,1) = {"
a
w
c
d
w
b
p
w
p
p
p
p
p
p
p
w
p
m
w
d
c
w
a
"}
(11,1,1) = {"
a
w
c
d
j
n
r
r
y
p
s
t
s
p
q
o
o
H
j
e
c
w
a
"}
(12,1,1) = {"
a
w
c
e
w
w
p
w
p
p
t
u
t
p
p
w
p
w
w
d
c
w
a
"}
(13,1,1) = {"
a
w
c
d
j
H
o
o
z
p
s
t
s
p
E
r
r
n
j
d
c
w
a
"}
(14,1,1) = {"
a
w
c
d
w
l
p
w
p
p
p
p
p
p
p
w
p
b
w
i
c
w
a
"}
(15,1,1) = {"
a
w
c
d
w
w
p
r
A
p
C
p
A
p
C
o
p
w
w
d
c
w
a
"}
(16,1,1) = {"
a
w
c
f
d
w
n
r
w
w
o
w
r
w
w
o
H
w
d
d
c
w
a
"}
(17,1,1) = {"
a
w
c
c
d
w
b
r
p
H
o
p
r
n
p
o
G
w
d
c
c
w
a
"}
(18,1,1) = {"
a
w
w
c
d
w
w
j
w
F
o
w
r
b
w
j
w
w
d
c
w
w
a
"}
(19,1,1) = {"
a
w
w
c
h
i
d
d
w
w
j
w
j
w
w
d
e
d
h
c
w
w
a
"}
(20,1,1) = {"
a
w
w
c
k
h
d
d
e
d
d
d
d
d
d
d
d
h
v
c
w
w
a
"}
(21,1,1) = {"
a
w
w
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
w
w
a
"}
(22,1,1) = {"
a
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
a
"}
(23,1,1) = {"
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
"}
+12 -1
View File
@@ -10324,6 +10324,7 @@
/turf/open/floor/carpet,
/area/crew_quarters/dorms)
"atd" = (
/mob/living/simple_animal/opossum,
/turf/open/floor/plating{
icon_state = "panelscorched"
},
@@ -82149,6 +82150,16 @@
/obj/structure/grille,
/turf/open/floor/plating,
/area/maintenance/port/aft)
"pbc" = (
/obj/structure/light_construct/small{
dir = 4
},
/obj/machinery/computer/security/telescreen/entertainment{
pixel_x = 30
},
/mob/living/simple_animal/opossum/poppy,
/turf/open/floor/wood,
/area/maintenance/port/aft)
"pbF" = (
/obj/machinery/portable_atmospherics/canister,
/obj/machinery/atmospherics/components/unary/portables_connector/visible{
@@ -100175,7 +100186,7 @@ csT
dux
cxQ
ckS
cmi
pbc
cnk
ckP
cmi
+16 -2
View File
@@ -41988,6 +41988,16 @@
},
/turf/open/floor/plasteel,
/area/hydroponics)
"saI" = (
/obj/structure/cable/white{
icon_state = "4-8"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/mob/living/simple_animal/opossum,
/turf/open/floor/plating,
/area/maintenance/starboard)
"scn" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -45205,6 +45215,10 @@
/obj/effect/landmark/carpspawn,
/turf/open/space,
/area/space/station_ruins)
"uXV" = (
/mob/living/simple_animal/opossum/poppy,
/turf/open/floor/wood,
/area/maintenance/port/aft)
"ver" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
dir = 10
@@ -79446,7 +79460,7 @@ aFM
aOH
aOT
aPV
aRm
uXV
aSI
aRC
aKm
@@ -92526,7 +92540,7 @@ aSD
aRz
aRz
aRz
sGY
saI
aRz
sIb
bsD
+20 -2
View File
@@ -54046,6 +54046,20 @@
},
/turf/open/floor/plasteel,
/area/construction/mining/aux_base)
"fgS" = (
/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
},
/mob/living/simple_animal/opossum/poppy,
/turf/open/floor/plasteel/dark,
/area/maintenance/department/engine)
"fhM" = (
/obj/item/storage/secure/safe{
pixel_x = -22
@@ -58645,6 +58659,10 @@
"pyw" = (
/turf/open/space/basic,
/area/hallway/secondary/entry)
"pzF" = (
/mob/living/simple_animal/opossum,
/turf/open/floor/wood,
/area/maintenance/department/crew_quarters/dorms)
"pBD" = (
/obj/structure/cable{
icon_state = "0-8"
@@ -83454,7 +83472,7 @@ bHP
bJb
bJb
bJb
bJb
fgS
bJb
bJb
bPp
@@ -99823,7 +99841,7 @@ akh
alc
alR
amF
alb
pzF
alb
anm
ajv
File diff suppressed because it is too large Load Diff
+8 -8
View File
@@ -102,7 +102,7 @@
/turf/open/floor/plasteel,
/area/engine/gravity_generator)
"au" = (
/turf/open/openspace,
/turf/open/transparent/openspace,
/area/space)
"av" = (
/obj/structure/stairs{
@@ -1407,7 +1407,7 @@
},
/area/hallway/secondary/service)
"eC" = (
/turf/open/openspace,
/turf/open/transparent/openspace,
/area/maintenance/department/bridge)
"eD" = (
/obj/effect/turf_decal/stripes/asteroid/line{
@@ -1542,7 +1542,7 @@
/turf/open/floor/plating,
/area/space)
"iu" = (
/turf/open/openspace,
/turf/open/transparent/openspace,
/area/hallway/secondary/service)
"iK" = (
/turf/open/floor/plasteel{
@@ -1593,7 +1593,7 @@
},
/area/hallway/secondary/service)
"nx" = (
/turf/open/openspace,
/turf/open/transparent/openspace,
/area/space/nearstation)
"nz" = (
/obj/machinery/light{
@@ -1633,7 +1633,7 @@
/turf/open/floor/plating,
/area/maintenance/department/bridge)
"qo" = (
/turf/open/openspace,
/turf/open/transparent/openspace,
/area/engine/storage)
"qR" = (
/obj/effect/turf_decal/stripes/white/line{
@@ -1646,7 +1646,7 @@
/obj/machinery/light{
dir = 8
},
/turf/open/openspace,
/turf/open/transparent/openspace,
/area/engine/storage)
"sh" = (
/turf/open/floor/plasteel{
@@ -1746,7 +1746,7 @@
/area/construction)
"Bk" = (
/obj/structure/grille,
/turf/open/openspace,
/turf/open/transparent/openspace,
/area/space/nearstation)
"Bm" = (
/obj/machinery/light{
@@ -1876,7 +1876,7 @@
"Ob" = (
/obj/structure/lattice,
/obj/structure/grille,
/turf/open/openspace,
/turf/open/transparent/openspace,
/area/space/nearstation)
"Og" = (
/obj/machinery/airalarm/directional/north,
+64 -6
View File
@@ -13490,6 +13490,9 @@
/obj/structure/table/wood,
/obj/item/instrument/piano_synth,
/obj/item/instrument/guitar,
/obj/structure/sign/painting{
pixel_x = -32
},
/turf/open/indestructible/hotelwood,
/area/centcom/holding)
"Fg" = (
@@ -13794,6 +13797,9 @@
/turf/open/indestructible/hotelwood,
/area/centcom/holding)
"FX" = (
/obj/structure/sign/painting{
pixel_x = 32
},
/turf/open/floor/plasteel/stairs,
/area/centcom/holding)
"FZ" = (
@@ -14421,6 +14427,9 @@
dir = 8
},
/obj/structure/musician/piano,
/obj/structure/sign/painting{
pixel_x = -32
},
/turf/open/indestructible/hotelwood,
/area/centcom/holding)
"Hk" = (
@@ -16225,6 +16234,12 @@
dir = 1
},
/obj/structure/table/wood,
/obj/item/storage/crayons,
/obj/item/storage/crayons,
/obj/item/storage/crayons,
/obj/structure/sign/painting{
pixel_x = -32
},
/turf/open/indestructible/hotelwood,
/area/centcom/holding)
"KU" = (
@@ -16304,6 +16319,14 @@
/obj/item/storage/box/bodybags,
/turf/open/floor/plasteel/white,
/area/centcom/holding)
"Ll" = (
/obj/structure/window/reinforced{
dir = 1
},
/obj/structure/easel,
/obj/item/canvas/twentythreeXtwentythree,
/turf/open/indestructible/hotelwood,
/area/centcom/holding)
"Lm" = (
/obj/machinery/shower{
dir = 4
@@ -16808,6 +16831,22 @@
},
/turf/open/floor/plasteel,
/area/centcom/supplypod/loading/two)
"NA" = (
/obj/structure/window/reinforced{
dir = 1
},
/obj/structure/table/wood,
/obj/item/canvas/twentythreeXtwentythree,
/obj/item/canvas/twentythreeXtwentythree,
/obj/item/canvas/twentythreeXtwentythree,
/obj/item/canvas/twentythreeXnineteen,
/obj/item/canvas/twentythreeXnineteen,
/obj/item/canvas/twentythreeXnineteen,
/obj/item/canvas/nineteenXnineteen,
/obj/item/canvas/nineteenXnineteen,
/obj/item/canvas/nineteenXnineteen,
/turf/open/indestructible/hotelwood,
/area/centcom/holding)
"NE" = (
/obj/machinery/light{
dir = 4
@@ -16924,6 +16963,12 @@
},
/turf/open/floor/plasteel,
/area/centcom/supplypod/loading/three)
"On" = (
/obj/structure/sign/painting{
pixel_x = 32
},
/turf/open/indestructible/hotelwood,
/area/centcom/holding)
"Op" = (
/obj/structure/sink{
dir = 8;
@@ -17249,6 +17294,10 @@
},
/turf/open/floor/mineral/titanium,
/area/centcom/evac)
"Qc" = (
/obj/effect/landmark/mafia_game_area,
/turf/open/space/basic,
/area/space)
"Qe" = (
/turf/open/ai_visible,
/area/ai_multicam_room)
@@ -17906,6 +17955,15 @@
/obj/machinery/light,
/turf/open/floor/plasteel/freezer,
/area/centcom/holding)
"TD" = (
/obj/machinery/light{
dir = 4
},
/obj/structure/sign/painting{
pixel_x = 32
},
/turf/open/indestructible/hotelwood,
/area/centcom/holding)
"TF" = (
/obj/effect/turf_decal/tile/red{
dir = 8
@@ -45453,8 +45511,8 @@ Nd
AE
CV
Sd
KT
Sd
Ll
CV
Sd
Sd
Sd
@@ -45710,7 +45768,7 @@ Nd
QJ
Sd
Sd
KT
NA
Sd
Sd
Sd
@@ -46222,8 +46280,8 @@ Fh
Fh
Wl
Sd
MR
Sd
TD
On
FX
Sd
Sd
@@ -58911,7 +58969,7 @@ aa
aa
aa
aa
aa
Qc
aa
aa
aa
+1 -1
View File
@@ -2,5 +2,5 @@
"map_name": "MultiZ Debug",
"map_path": "map_files/debug",
"map_file": "multiz.dmm",
"traits": [{"Up": 1}, {"Up": 1, "Down": -1}, {"Down": -1}]
"traits": [{"Up" : 1, "Linkage" : "Cross"}, {"Up" : 1, "Down" : -1, "Baseturf" : "/turf/open/transparent/openspace", "Linkage" : "Cross"}, {"Down" : -1, "Baseturf" : "/turf/open/transparent/openspace", "Linkage" : "Cross"}]
}
+2 -2
View File
@@ -94,7 +94,7 @@
/turf/open/floor/light/colour_cycle,
/area/shuttle/escape)
"r" = (
/turf/open/floor/mineral/plasma,
/turf/open/floor/mineral/plasma/disco,
/area/shuttle/escape)
"s" = (
/turf/open/floor/mineral/silver,
@@ -112,7 +112,7 @@
resistance_flags = 2
},
/obj/structure/fans/tiny,
/turf/open/floor/mineral/plasma,
/turf/open/floor/mineral/plasma/disco,
/area/shuttle/escape)
"v" = (
/obj/machinery/jukebox/disco/indestructible,
+1 -1
View File
@@ -33,7 +33,7 @@
"Linkage":null,
"Gravity":true,
"Ice Ruins Underground":true,
"Baseturf":"/turf/open/openspace/icemoon"
"Baseturf":"/turf/open/transparent/openspace/icemoon"
},
{
"Down":-1,
+1 -1
View File
@@ -98,7 +98,7 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204
#define ZAP_MOB_DAMAGE (1<<3)
#define ZAP_MOB_STUN (1<<4)
#define ZAP_DEFAULT_FLAGS ALL
#define ZAP_DEFAULT_FLAGS ZAP_MOB_STUN | ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE
#define ZAP_FUSION_FLAGS ZAP_OBJ_DAMAGE | ZAP_MOB_DAMAGE | ZAP_MOB_STUN
#define ZAP_SUPERMATTER_FLAGS NONE
+11 -1
View File
@@ -63,6 +63,16 @@
#define CONTRACT_UPLINK_PAGE_CONTRACTS "CONTRACTS"
#define CONTRACT_UPLINK_PAGE_HUB "HUB"
///Heretics --
#define IS_HERETIC(mob) (mob.mind?.has_antag_datum(/datum/antagonist/heretic))
#define PATH_SIDE "Side"
#define PATH_ASH "Ash"
#define PATH_RUST "Rust"
#define PATH_FLESH "Flesh"
//Overthrow time to update heads obj
#define OBJECTIVE_UPDATING_TIME 300
@@ -91,4 +101,4 @@
#define BLOB_REROLL_TIME 2400 // blob gets a free reroll every X time
#define BLOB_SPREAD_COST 4
#define BLOB_ATTACK_REFUND 2 //blob refunds this much if it attacks and doesn't spread
#define BLOB_REFLECTOR_COST 15
#define BLOB_REFLECTOR_COST 15
+1
View File
@@ -60,6 +60,7 @@
#define ANTAG_HUD_BROTHER 23
#define ANTAG_HUD_BLOODSUCKER 24
#define ANTAG_HUD_FUGITIVE 25
#define ANTAG_HUD_HERETIC 26
// Notification action types
#define NOTIFY_JUMP "jump"
+67 -34
View File
@@ -15,22 +15,31 @@
//////////////////////////////////////////////////////////////////
// /datum signals
#define COMSIG_COMPONENT_ADDED "component_added" //sent to the new datum parent when a component is added to them: (/datum/component)
#define COMSIG_COMPONENT_REMOVING "component_removing" //sent to the datum parent before a component is removed from them because of RemoveComponent: (/datum/component)
#define COMSIG_COMPONENT_UNREGISTER_PARENT "component_unregister_parent" //sent to the component itself when unregistered from a parent
#define COMSIG_COMPONENT_REGISTER_PARENT "component_register_parent" //sent to the component itself when registered to a parent
#define COMSIG_PARENT_PREQDELETED "parent_preqdeleted" //before a datum's Destroy() is called: (force), returning a nonzero value will cancel the qdel operation
#define COMSIG_PARENT_QDELETING "parent_qdeleting" //just before a datum's Destroy() is called: (force), at this point none of the other components chose to interrupt qdel and Destroy will be called
/// Trait signals
#define COMPONENT_ADD_TRAIT (1<<0)
#define COMPONENT_REMOVE_TRAIT (1<<1)
/// when a component is added to a datum: (/datum/component)
#define COMSIG_COMPONENT_ADDED "component_added"
/// before a component is removed from a datum because of RemoveComponent: (/datum/component)
#define COMSIG_COMPONENT_REMOVING "component_removing"
/// before a datum's Destroy() is called: (force), returning a nonzero value will cancel the qdel operation
#define COMSIG_PARENT_PREQDELETED "parent_preqdeleted"
/// just before a datum's Destroy() is called: (force), at this point none of the other components chose to interrupt qdel and Destroy will be called
#define COMSIG_PARENT_QDELETING "parent_qdeleting"
/// generic topic handler (usr, href_list)
#define COMSIG_TOPIC "handle_topic"
/// fires on the target datum when an element is attached to it (/datum/element)
#define COMSIG_ELEMENT_ATTACH "element_attach"
/// fires on the target datum when an element is attached to it (/datum/element)
#define COMSIG_ELEMENT_DETACH "element_detach"
/// sent to the component itself when unregistered from a parent
#define COMSIG_COMPONENT_UNREGISTER_PARENT "component_unregister_parent"
/// sent to the component itself when registered to a parent
#define COMSIG_COMPONENT_REGISTER_PARENT "component_register_parent"
/// Trait signals
#define COMPONENT_ADD_TRAIT (1<<0)
#define COMPONENT_REMOVE_TRAIT (1<<1)
// /atom signals
//from base of atom/proc/Initialize(): sent any time a new atom is created
#define COMSIG_ATOM_CREATED "atom_created"
@@ -56,30 +65,54 @@
#define COMSIG_ATOM_EXIT "atom_exit" //from base of atom/Exit(): (/atom/movable/exiting, /atom/newloc)
#define COMPONENT_ATOM_BLOCK_EXIT 1
#define COMSIG_ATOM_EXITED "atom_exited" //from base of atom/Exited(): (atom/movable/exiting, atom/newloc)
#define COMSIG_ATOM_EX_ACT "atom_ex_act" //from base of atom/ex_act(): (severity, target)
#define COMSIG_ATOM_EMP_ACT "atom_emp_act" //from base of atom/emp_act(): (severity)
#define COMSIG_ATOM_FIRE_ACT "atom_fire_act" //from base of atom/fire_act(): (exposed_temperature, exposed_volume)
#define COMSIG_ATOM_BULLET_ACT "atom_bullet_act" //from base of atom/bullet_act(): (/obj/item/projectile, def_zone)
#define COMSIG_ATOM_BLOB_ACT "atom_blob_act" //from base of atom/blob_act(): (/obj/structure/blob)
#define COMSIG_ATOM_ACID_ACT "atom_acid_act" //from base of atom/acid_act(): (acidpwr, acid_volume)
#define COMSIG_ATOM_EMAG_ACT "atom_emag_act" //from base of atom/emag_act(): ()
#define COMSIG_ATOM_RAD_ACT "atom_rad_act" //from base of atom/rad_act(intensity)
#define COMSIG_ATOM_NARSIE_ACT "atom_narsie_act" //from base of atom/narsie_act(): ()
#define COMSIG_ATOM_RATVAR_ACT "atom_ratvar_act" //from base of atom/ratvar_act(): ()
#define COMSIG_ATOM_RCD_ACT "atom_rcd_act" //from base of atom/rcd_act(): (/mob, /obj/item/construction/rcd, passed_mode)
#define COMSIG_ATOM_SING_PULL "atom_sing_pull" //from base of atom/singularity_pull(): (S, current_size)
#define COMSIG_ATOM_SET_LIGHT "atom_set_light" //from base of atom/set_light(): (l_range, l_power, l_color)
#define COMSIG_ATOM_DIR_CHANGE "atom_dir_change" //from base of atom/setDir(): (old_dir, new_dir)
#define COMSIG_ATOM_CONTENTS_DEL "atom_contents_del" //from base of atom/handle_atom_del(): (atom/deleted)
#define COMSIG_ATOM_HAS_GRAVITY "atom_has_gravity" //from base of atom/has_gravity(): (turf/location, list/forced_gravities)
#define COMSIG_ATOM_RAD_PROBE "atom_rad_probe" //from proc/get_rad_contents(): ()
#define COMPONENT_BLOCK_RADIATION 1
#define COMSIG_ATOM_RAD_CONTAMINATING "atom_rad_contam" //from base of datum/radiation_wave/radiate(): (strength)
#define COMPONENT_BLOCK_CONTAMINATION 1
#define COMSIG_ATOM_RAD_WAVE_PASSING "atom_rad_wave_pass" //from base of datum/radiation_wave/check_obstructions(): (datum/radiation_wave, width)
#define COMPONENT_RAD_WAVE_HANDLED 1
#define COMSIG_ATOM_CANREACH "atom_can_reach" //from internal loop in atom/movable/proc/CanReach(): (list/next)
#define COMPONENT_BLOCK_REACH 1
///from base of atom/ex_act(): (severity, target)
#define COMSIG_ATOM_EX_ACT "atom_ex_act"
///from base of atom/emp_act(): (severity)
#define COMSIG_ATOM_EMP_ACT "atom_emp_act"
///from base of atom/fire_act(): (exposed_temperature, exposed_volume)
#define COMSIG_ATOM_FIRE_ACT "atom_fire_act"
///from base of atom/bullet_act(): (/obj/projectile, def_zone)
#define COMSIG_ATOM_BULLET_ACT "atom_bullet_act"
///from base of atom/blob_act(): (/obj/structure/blob)
#define COMSIG_ATOM_BLOB_ACT "atom_blob_act"
///from base of atom/acid_act(): (acidpwr, acid_volume)
#define COMSIG_ATOM_ACID_ACT "atom_acid_act"
///from base of atom/emag_act(): (/mob/user)
#define COMSIG_ATOM_EMAG_ACT "atom_emag_act"
///from base of atom/rad_act(intensity)
#define COMSIG_ATOM_RAD_ACT "atom_rad_act"
///from base of atom/narsie_act(): ()
#define COMSIG_ATOM_NARSIE_ACT "atom_narsie_act"
///from base of atom/ratvar_act(): ()
#define COMSIG_ATOM_RATVAR_ACT "atom_ratvar_act"
///from base of atom/rcd_act(): (/mob, /obj/item/construction/rcd, passed_mode)
#define COMSIG_ATOM_RCD_ACT "atom_rcd_act"
///from base of atom/singularity_pull(): (S, current_size)
#define COMSIG_ATOM_SING_PULL "atom_sing_pull"
///from obj/machinery/bsa/full/proc/fire(): ()
#define COMSIG_ATOM_BSA_BEAM "atom_bsa_beam_pass"
#define COMSIG_ATOM_BLOCKS_BSA_BEAM (1<<0)
///from base of atom/set_light(): (l_range, l_power, l_color)
#define COMSIG_ATOM_SET_LIGHT "atom_set_light"
///from base of atom/setDir(): (old_dir, new_dir). Called before the direction changes.
#define COMSIG_ATOM_DIR_CHANGE "atom_dir_change"
///from base of atom/handle_atom_del(): (atom/deleted)
#define COMSIG_ATOM_CONTENTS_DEL "atom_contents_del"
///from base of atom/has_gravity(): (turf/location, list/forced_gravities)
#define COMSIG_ATOM_HAS_GRAVITY "atom_has_gravity"
///from proc/get_rad_contents(): ()
#define COMSIG_ATOM_RAD_PROBE "atom_rad_probe"
#define COMPONENT_BLOCK_RADIATION (1<<0)
///from base of datum/radiation_wave/radiate(): (strength)
#define COMSIG_ATOM_RAD_CONTAMINATING "atom_rad_contam"
#define COMPONENT_BLOCK_CONTAMINATION (1<<0)
///from base of datum/radiation_wave/check_obstructions(): (datum/radiation_wave, width)
#define COMSIG_ATOM_RAD_WAVE_PASSING "atom_rad_wave_pass"
#define COMPONENT_RAD_WAVE_HANDLED (1<<0)
///from internal loop in atom/movable/proc/CanReach(): (list/next)
#define COMSIG_ATOM_CANREACH "atom_can_reach"
#define COMPONENT_BLOCK_REACH (1<<0)
#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, turf/destination)
#define COMPONENT_BLOCK_TELEPORT 1
+14 -4
View File
@@ -7,6 +7,8 @@
#define FOOTSTEP_WATER "water"
#define FOOTSTEP_LAVA "lava"
#define FOOTSTEP_MEAT "meat"
#define FOOTSTEP_RUST "rust"
//barefoot sounds
#define FOOTSTEP_WOOD_BAREFOOT "woodbarefoot"
#define FOOTSTEP_WOOD_CLAW "woodclaw"
@@ -91,7 +93,9 @@ GLOBAL_LIST_INIT(footstep, list(
'sound/effects/footstep/lava2.ogg',
'sound/effects/footstep/lava3.ogg'), 100, 0),
FOOTSTEP_MEAT = list(list(
'sound/effects/meatslap.ogg'), 100, 0)
'sound/effects/meatslap.ogg'), 100, 0),
FOOTSTEP_RUST = list(list(
'sound/effects/footstep/rustystep1.ogg'), 100, 0)
))
//bare footsteps lists
@@ -135,7 +139,9 @@ GLOBAL_LIST_INIT(barefootstep, list(
'sound/effects/footstep/lava2.ogg',
'sound/effects/footstep/lava3.ogg'), 100, 0),
FOOTSTEP_MEAT = list(list(
'sound/effects/meatslap.ogg'), 100, 0)
'sound/effects/meatslap.ogg'), 100, 0),
FOOTSTEP_RUST = list(list(
'sound/effects/footstep/rustystep1.ogg'), 100, 0)
))
//claw footsteps lists
@@ -179,7 +185,9 @@ GLOBAL_LIST_INIT(clawfootstep, list(
'sound/effects/footstep/lava2.ogg',
'sound/effects/footstep/lava3.ogg'), 100, 0),
FOOTSTEP_MEAT = list(list(
'sound/effects/meatslap.ogg'), 100, 0)
'sound/effects/meatslap.ogg'), 100, 0),
FOOTSTEP_RUST = list(list(
'sound/effects/footstep/rustystep1.ogg'), 100, 0)
))
//heavy footsteps list
@@ -197,5 +205,7 @@ GLOBAL_LIST_INIT(heavyfootstep, list(
'sound/effects/footstep/lava2.ogg',
'sound/effects/footstep/lava3.ogg'), 100, 0),
FOOTSTEP_MEAT = list(list(
'sound/effects/meatslap.ogg'), 100, 0)
'sound/effects/meatslap.ogg'), 100, 0),
FOOTSTEP_RUST = list(list(
'sound/effects/footstep/rustystep1.ogg'), 150, 2)
))
+3 -1
View File
@@ -17,7 +17,7 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list(
/turf/open/chasm,
/turf/open/lava,
/turf/open/water,
/turf/open/openspace
/turf/open/transparent/openspace
)))
#define isgroundlessturf(A) (is_type_in_typecache(A, GLOB.turfs_without_ground))
@@ -44,6 +44,8 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list(
#define isplatingturf(A) (istype(A, /turf/open/floor/plating))
#define istransparentturf(A) (istype(A, /turf/open/transparent))
//Mobs
#define isliving(A) (istype(A, /mob/living))
+1
View File
@@ -19,6 +19,7 @@
#define INVESTIGATE_FERMICHEM "fermichem"
#define INVESTIGATE_RCD "rcd"
#define INVESTIGATE_CRYOGENICS "cryogenics"
#define INVESTIGATE_GHOST "ghost"
// Logging types for log_message()
#define LOG_ATTACK (1 << 0)
+2
View File
@@ -46,6 +46,8 @@
// Cosecant
#define CSC(x) (1 / sin(x))
#define ATAN2(x, y) ( !(x) && !(y) ? 0 : (y) >= 0 ? arccos((x) / sqrt((x)*(x) + (y)*(y))) : -arccos((x) / sqrt((x)*(x) + (y)*(y))) )
// Greatest Common Divisor - Euclid's algorithm
/proc/Gcd(a, b)
return b ? Gcd(b, (a) % (b)) : a
+2
View File
@@ -332,3 +332,5 @@
/// If you examine the same atom twice in this timeframe, we call examine_more() instead of examine()
#define EXAMINE_MORE_TIME 1 SECONDS
#define SILENCE_RANGED_MESSAGE (1<<0)
+2
View File
@@ -17,6 +17,7 @@
#define ROLE_ALIEN "xenomorph"
#define ROLE_PAI "pAI"
#define ROLE_CULTIST "cultist"
#define ROLE_HERETIC "Heretic"
#define ROLE_BLOB "blob"
#define ROLE_NINJA "space ninja"
#define ROLE_MONKEY "monkey"
@@ -64,6 +65,7 @@ GLOBAL_LIST_INIT(special_roles, list(
ROLE_INTERNAL_AFFAIRS = /datum/game_mode/traitor/internal_affairs,
ROLE_SENTIENCE,
ROLE_GANG = /datum/game_mode/gang,
ROLE_HERETIC = /datum/game_mode/heretics,
ROLE_BLOODSUCKER = /datum/game_mode/bloodsucker
//ROLE_MONSTERHUNTER Disabled for now
))
+4
View File
@@ -111,6 +111,10 @@
#define STATUS_EFFECT_LIMP /datum/status_effect/limp //For when you have a busted leg (or two!) and want additional slowdown when walking on that leg
#define STATUS_EFFECT_AMOK /datum/status_effect/amok //Makes the target automatically strike out at adjecent non-heretics.
#define STATUS_EFFECT_CLOUDSTRUCK /datum/status_effect/cloudstruck //blinds and applies an overlay.
/// shoves inflict this to indicate the next shove while this is in effect should disarm guns
#define STATUS_EFFECT_OFF_BALANCE /datum/status_effect/off_balance
+6 -2
View File
@@ -104,7 +104,9 @@
#define TRAIT_RESISTCOLD "resist_cold"
#define TRAIT_RESISTHIGHPRESSURE "resist_high_pressure"
#define TRAIT_RESISTLOWPRESSURE "resist_low_pressure"
#define TRAIT_BOMBIMMUNE "bomb_immunity"
#define TRAIT_RADIMMUNE "rad_immunity"
#define TRAIT_GENELESS "geneless"
#define TRAIT_VIRUSIMMUNE "virus_immunity"
#define TRAIT_PIERCEIMMUNE "pierce_immunity"
#define TRAIT_NODISMEMBER "dismember_immunity"
@@ -178,6 +180,7 @@
#define TRAIT_FREERUNNING "freerunning"
#define TRAIT_SKITTISH "skittish"
#define TRAIT_POOR_AIM "poor_aim"
#define TRAIT_INSANE_AIM "insane_aim" //they don't miss. they never miss. it was all part of their immaculate plan.
#define TRAIT_PROSOPAGNOSIA "prosopagnosia"
#define TRAIT_DRUNK_HEALING "drunk_healing"
#define TRAIT_TAGGER "tagger"
@@ -202,7 +205,7 @@
#define TRAIT_NO_ALCOHOL "alcohol_intolerance"
#define TRAIT_MUTATION_STASIS "mutation_stasis" //Prevents processed genetics mutations from processing.
#define TRAIT_FAST_PUMP "fast_pump"
#define TRAIT_NICE_SHOT "nice_shot" //hnnnnnnnggggg..... you're pretty good....
#define TRAIT_NICE_SHOT "nice_shot" //hnnnnnnnggggg..... you're pretty good...
// mobility flag traits
// IN THE FUTURE, IT WOULD BE NICE TO DO SOMETHING SIMILAR TO https://github.com/tgstation/tgstation/pull/48923/files (ofcourse not nearly the same because I have my.. thoughts on it)
@@ -256,6 +259,7 @@
#define CURSED_ITEM_TRAIT "cursed-item" // The item is magically cursed
#define ABSTRACT_ITEM_TRAIT "abstract-item"
#define STATUS_EFFECT_TRAIT "status-effect"
#define CLOTHING_TRAIT "clothing"
#define ROUNDSTART_TRAIT "roundstart" //cannot be removed without admin intervention
#define GHOSTROLE_TRAIT "ghostrole"
#define APHRO_TRAIT "aphro"
@@ -310,4 +314,4 @@
#define ACTIVE_BLOCK_TRAIT "active_block"
/// This trait is added by the parry system.
#define ACTIVE_PARRY_TRAIT "active_parry"
#define STICKY_NODROP "sticky-nodrop" //sticky nodrop sounds like a bad soundcloud rapper's name
#define STICKY_NODROP "sticky-nodrop" //sticky nodrop sounds like a bad soundcloud rapper's name
+5 -1
View File
@@ -128,6 +128,10 @@ GLOBAL_VAR_INIT(cmp_field, "name")
else
return B.required_temp - A.required_temp //return hottest
/proc/cmp_mob_realname_dsc(mob/A,mob/B)
return sorttext(A.real_name,B.real_name)
/proc/cmp_job_display_asc(datum/job/A, datum/job/B)
return A.display_order - B.display_order
@@ -135,4 +139,4 @@ GLOBAL_VAR_INIT(cmp_field, "name")
return sorttext(initial(b.name),initial(a.name))
/proc/cmp_typepaths_asc(A, B)
return sorttext("[B]","[A]")
return sorttext("[B]","[A]")
+5 -1
View File
@@ -9,4 +9,8 @@ GLOBAL_DATUM(start_state, /datum/station_state) // Used in round-end report
//TODO clear this one up too
GLOBAL_DATUM(cult_narsie, /obj/singularity/narsie/large/cult)
GLOBAL_DATUM(cult_narsie, /obj/singularity/narsie/large/cult)
///We want reality_smash_tracker to exist only once and be accesable from anywhere.
GLOBAL_DATUM_INIT(reality_smash_track, /datum/reality_smash_tracker, new)
+7 -1
View File
@@ -231,4 +231,10 @@ GLOBAL_LIST_INIT(speech_verbs, list("default","says","gibbers", "states", "chitt
GLOBAL_LIST_INIT(roundstart_tongues, list("default","human tongue" = /obj/item/organ/tongue, "lizard tongue" = /obj/item/organ/tongue/lizard, "skeleton tongue" = /obj/item/organ/tongue/bone, "fly tongue" = /obj/item/organ/tongue/fly, "ipc tongue" = /obj/item/organ/tongue/robot/ipc))
//locked parts are those that your picked species requires to have
//unlocked parts are those that anyone can choose on customisation regardless
//parts not in unlocked, but in all, are thus locked
GLOBAL_LIST_INIT(all_mutant_parts, list("tail_lizard" = "Tail", "mam_tail" = "Tail", "tail_human" = "Tail", "snout" = "Snout", "frills" = "Frills", "spines" = "Spines", "body_markings" = "Body Markings", "mam_body_markings" = "Species Markings" , "mam_ears" = "Ears", "ears" = "Ears", "mam_snouts" = "Snout", "legs" = "Legs", "deco_wings" = "Decorative Wings", "insect_wings" = "Insect Wings", "insect_fluff" = "Insect Fluff", "taur" = "Tauric Body", "insect_markings" = "Insect Markings", "wings" = "Wings", "xenohead" = "Caste Head", "xenotail" = "Tail", "xenodorsal" = "Dorsal Spines", "ipc_screen" = "Screen", "ipc_antenna" = "Antenna", "meat_type" = "Meat Type", "horns" = "Horns"))
GLOBAL_LIST_INIT(unlocked_mutant_parts, list("horns", "insect_fluff"))
//parts in either of the above two lists that require a second option that allows them to be coloured
GLOBAL_LIST_INIT(colored_mutant_parts, list("insect_wings" = "wings_color", "deco_wings" = "wings_color", "horns" = "horns_color"))
+2
View File
@@ -37,7 +37,9 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_RESISTCOLD" = TRAIT_RESISTCOLD,
"TRAIT_RESISTHIGHPRESSURE" = TRAIT_RESISTHIGHPRESSURE,
"TRAIT_RESISTLOWPRESSURE" = TRAIT_RESISTLOWPRESSURE,
"TRAIT_BOMBIMMUNE" = TRAIT_BOMBIMMUNE,
"TRAIT_RADIMMUNE" = TRAIT_RADIMMUNE,
"TRAIT_GENELESS" = TRAIT_GENELESS,
"TRAIT_VIRUSIMMUNE" = TRAIT_VIRUSIMMUNE,
"TRAIT_PIERCEIMMUNE" = TRAIT_PIERCEIMMUNE,
"TRAIT_NODISMEMBER" = TRAIT_NODISMEMBER,
@@ -98,6 +98,11 @@
config_entry_value = 6
min_val = 1
/datum/config_entry/number/ecult_scaling_coeff //how much does the amount of players get divided by to determine e_cult
config_entry_value = 6
integer = FALSE
min_val = 1
/datum/config_entry/number/security_scaling_coeff //how much does the amount of players get divided by to determine open security officer positions
config_entry_value = 8
min_val = 1
+1 -1
View File
@@ -113,7 +113,7 @@ SUBSYSTEM_DEF(mapping)
// needs to be whitelisted for underground too so place_below ruins work
seedRuins(ice_ruins, CONFIG_GET(number/icemoon_budget), list(/area/icemoon/surface/outdoors/unexplored, /area/icemoon/underground/unexplored), ice_ruins_templates)
for (var/ice_z in ice_ruins)
spawn_rivers(ice_z, 4, /turf/open/openspace/icemoon, /area/icemoon/surface/outdoors/unexplored/rivers)
spawn_rivers(ice_z, 4, /turf/open/transparent/openspace/icemoon, /area/icemoon/surface/outdoors/unexplored/rivers)
var/list/ice_ruins_underground = levels_by_trait(ZTRAIT_ICE_RUINS_UNDERGROUND)
if (ice_ruins_underground.len)
@@ -126,7 +126,7 @@
/datum/crafting_recipe/brute_pack
name = "Suture Pack"
result = /obj/item/stack/medical/suture/one
result = /obj/item/stack/medical/suture/five
time = 1
reqs = list(/obj/item/stack/medical/gauze = 1,
/datum/reagent/medicine/styptic_powder = 10)
@@ -135,7 +135,7 @@
/datum/crafting_recipe/burn_pack
name = "Regenerative Mesh"
result = /obj/item/stack/medical/mesh/one
result = /obj/item/stack/medical/mesh/five
time = 1
reqs = list(/obj/item/stack/medical/gauze = 1,
/datum/reagent/medicine/silver_sulfadiazine = 10)
@@ -188,7 +188,7 @@
result = /obj/item/screwdriver/bronze
reqs = list(/obj/item/screwdriver = 1,
/obj/item/stack/cable_coil = 10,
/obj/item/stack/tile/bronze = 1,
/obj/item/stack/sheet/bronze = 1,
/datum/reagent/water = 15)
time = 40
subcategory = CAT_TOOL
@@ -200,7 +200,7 @@
result = /obj/item/weldingtool/bronze
reqs = list(/obj/item/weldingtool = 1,
/obj/item/stack/cable_coil = 10,
/obj/item/stack/tile/bronze = 1,
/obj/item/stack/sheet/bronze = 1,
/datum/reagent/water = 15)
time = 40
subcategory = CAT_TOOL
@@ -212,7 +212,7 @@
result = /obj/item/wirecutters/bronze
reqs = list(/obj/item/wirecutters = 1,
/obj/item/stack/cable_coil = 10,
/obj/item/stack/tile/bronze = 1,
/obj/item/stack/sheet/bronze = 1,
/datum/reagent/water = 15)
time = 40
subcategory = CAT_TOOL
@@ -224,7 +224,7 @@
result = /obj/item/crowbar/bronze
reqs = list(/obj/item/crowbar = 1,
/obj/item/stack/cable_coil = 10,
/obj/item/stack/tile/bronze = 1,
/obj/item/stack/sheet/bronze = 1,
/datum/reagent/water = 15)
time = 40
subcategory = CAT_TOOL
@@ -236,7 +236,7 @@
result = /obj/item/wrench/bronze
reqs = list(/obj/item/wrench = 1,
/obj/item/stack/cable_coil = 10,
/obj/item/stack/tile/bronze = 1,
/obj/item/stack/sheet/bronze = 1,
/datum/reagent/water = 15)
time = 40
subcategory = CAT_TOOL
@@ -269,6 +269,19 @@
subcategory = CAT_TOOL
category = CAT_MISC
/datum/crafting_recipe/heretic/codex
name = "Codex Cicatrix"
result = /obj/item/forbidden_book
tools = list(/obj/item/pen)
reqs = list(/obj/item/paper = 5,
/obj/item/organ/eyes = 1,
/obj/item/organ/heart = 1,
/obj/item/stack/sheet/animalhide/human = 1)
time = 150
subcategory = CAT_MISCELLANEOUS
category = CAT_MISC
always_availible = FALSE
////////////
//Vehicles//
////////////
+4 -2
View File
@@ -29,8 +29,8 @@ GLOBAL_LIST_EMPTY(uplinks)
var/saved_player_population = 0
var/list/filters = list()
/datum/component/uplink/Initialize(_owner, _lockable = TRUE, _enabled = FALSE, datum/game_mode/_gamemode, starting_tc = 20, datum/ui_state/_checkstate, datum/traitor_class/traitor_class)
/datum/component/uplink/Initialize(_owner, _lockable = TRUE, _enabled = FALSE, datum/game_mode/_gamemode, starting_tc = 20, datum/traitor_class/traitor_class)
if(!isitem(parent))
return COMPONENT_INCOMPATIBLE
@@ -144,6 +144,8 @@ GLOBAL_LIST_EMPTY(uplinks)
return COMPONENT_NO_INTERACT
/datum/component/uplink/ui_state(mob/user)
if(istype(parent, /obj/item/implant/uplink))
return GLOB.not_incapacitated_state
return GLOB.inventory_state
/datum/component/uplink/ui_interact(mob/user, datum/tgui/ui)
+10
View File
@@ -0,0 +1,10 @@
//blocks bluespace artillery beams that try to fly through
//look not all elements need to be fancy
/datum/element/bsa_blocker/Attach(datum/target)
if(!isatom(target))
return ELEMENT_INCOMPATIBLE
RegisterSignal(target, COMSIG_ATOM_BSA_BEAM, .proc/block_bsa)
return ..()
/datum/element/bsa_blocker/proc/block_bsa()
return COMSIG_ATOM_BLOCKS_BSA_BEAM
+2 -1
View File
@@ -28,7 +28,8 @@ GLOBAL_LIST_INIT(huds, list(
ANTAG_HUD_CLOCKWORK = new/datum/atom_hud/antag(),
ANTAG_HUD_BROTHER = new/datum/atom_hud/antag/hidden(),
ANTAG_HUD_BLOODSUCKER = new/datum/atom_hud/antag/bloodsucker(),
ANTAG_HUD_FUGITIVE = new/datum/atom_hud/antag()
ANTAG_HUD_FUGITIVE = new/datum/atom_hud/antag(),
ANTAG_HUD_HERETIC = new/datum/atom_hud/antag/hidden()
))
/datum/atom_hud
+1 -1
View File
@@ -287,7 +287,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
desc = "Clock Cult? Never heard of it."
color = "#92661A"
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE)
sheet_type = /obj/item/stack/tile/bronze
sheet_type = /obj/item/stack/sheet/bronze
value_per_unit = 0.025
armor_modifiers = list("melee" = 1, "bullet" = 1, "laser" = 1, "energy" = 1, "bomb" = 1, "bio" = 1, "rad" = 1.5, "fire" = 1.5, "acid" = 1.5)
beauty_modifier = 0.2
@@ -162,6 +162,11 @@
mood_change = -8
timeout = 3 MINUTES
/datum/mood_event/gates_of_mansus
description = "<span class='boldwarning'>LIVING IN A PERFORMANCE IS WORSE THAN DEATH</span>\n"
mood_change = -25
timeout = 4 MINUTES
//These are unused so far but I want to remember them to use them later
/datum/mood_event/cloned_corpse
@@ -70,6 +70,11 @@
mood_change = 40 //maybe being a cultist isnt that bad after all
hidden = TRUE
/datum/mood_event/heretics
description = "<span class='nicegreen'>THE HIGHER I RISE, THE MORE I SEE.</span>\n"
mood_change = 12 //maybe being a cultist isnt that bad after all
hidden = TRUE
/datum/mood_event/family_heirloom
description = "<span class='nicegreen'>My family heirloom is safe with me.</span>\n"
mood_change = 1
+6
View File
@@ -325,6 +325,12 @@
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."
/datum/map_template/ruin/space/spacediner
id = "spacediner"
suffix = "spacediner.dmm"
name = "Space Diner"
description = "Come, traveler of the bluespace planes. Sit, enjoy a drink and take one of the fair maidens for a night. The exit is the way you came in, via that teleporter thingy, but do remember to stay safe."
//Space ruins for the station z
/datum/map_template/ruin/spacenearstation
prefix = "_maps/RandomRuins/SpaceRuinsStation/"
+191
View File
@@ -403,6 +403,197 @@
owner.underlays -= marked_underlay //if this is being called, we should have an owner at this point.
..()
/datum/status_effect/eldritch
duration = 15 SECONDS
status_type = STATUS_EFFECT_REPLACE
alert_type = null
on_remove_on_mob_delete = TRUE
///underlay used to indicate that someone is marked
var/mutable_appearance/marked_underlay
///path for the underlay
var/effect_sprite = ""
/datum/status_effect/eldritch/on_creation(mob/living/new_owner, ...)
marked_underlay = mutable_appearance('icons/effects/effects.dmi', effect_sprite,BELOW_MOB_LAYER)
return ..()
/datum/status_effect/eldritch/on_apply()
. = ..()
if(owner.mob_size >= MOB_SIZE_HUMAN)
RegisterSignal(owner,COMSIG_ATOM_UPDATE_OVERLAYS,.proc/update_owner_underlay)
owner.update_icon()
return TRUE
return FALSE
/datum/status_effect/eldritch/on_remove()
UnregisterSignal(owner,COMSIG_ATOM_UPDATE_OVERLAYS)
owner.update_icon()
return ..()
/datum/status_effect/eldritch/proc/update_owner_underlay(atom/source, list/overlays)
overlays += marked_underlay
/datum/status_effect/eldritch/Destroy()
QDEL_NULL(marked_underlay)
return ..()
/**
* What happens when this mark gets popped
*
* Adds actual functionality to each mark
*/
/datum/status_effect/eldritch/proc/on_effect()
playsound(owner, 'sound/magic/repulse.ogg', 75, TRUE)
qdel(src) //what happens when this is procced.
//Each mark has diffrent effects when it is destroyed that combine with the mansus grasp effect.
/datum/status_effect/eldritch/flesh
id = "flesh_mark"
effect_sprite = "emark1"
/datum/status_effect/eldritch/flesh/on_effect()
if(ishuman(owner))
var/mob/living/carbon/human/H = owner
var/obj/item/bodypart/bodypart = pick(H.bodyparts)
var/datum/wound/slash/severe/crit_wound = new
crit_wound.apply_wound(bodypart)
return ..()
/datum/status_effect/eldritch/ash
id = "ash_mark"
effect_sprite = "emark2"
///Dictates how much damage and stamina loss this mark will cause.
var/repetitions = 1
/datum/status_effect/eldritch/ash/on_creation(mob/living/new_owner, _repetition = 5)
. = ..()
repetitions = min(1,_repetition)
/datum/status_effect/eldritch/ash/on_effect()
if(iscarbon(owner))
var/mob/living/carbon/carbon_owner = owner
carbon_owner.adjustStaminaLoss(10 * repetitions)
carbon_owner.adjustFireLoss(5 * repetitions)
for(var/mob/living/carbon/victim in range(1,carbon_owner))
if(IS_HERETIC(victim) || victim == carbon_owner)
continue
victim.apply_status_effect(type,repetitions-1)
break
return ..()
/datum/status_effect/eldritch/rust
id = "rust_mark"
effect_sprite = "emark3"
/datum/status_effect/eldritch/rust/on_effect()
if(!iscarbon(owner))
return
var/mob/living/carbon/carbon_owner = owner
for(var/obj/item/I in carbon_owner.get_all_gear()) //Affects roughly 75% of items
if(!QDELETED(I) && prob(75)) //Just in case
I.take_damage(100)
return ..()
/datum/status_effect/corrosion_curse
id = "corrosion_curse"
status_type = STATUS_EFFECT_REPLACE
alert_type = null
tick_interval = 1 SECONDS
/datum/status_effect/corrosion_curse/on_creation(mob/living/new_owner, ...)
. = ..()
to_chat(owner, "<span class='danger'>Your feel your body starting to break apart...</span>")
/datum/status_effect/corrosion_curse/tick()
. = ..()
if(!ishuman(owner))
return
var/mob/living/carbon/human/H = owner
var/chance = rand(0,100)
switch(chance)
if(0 to 19)
H.vomit()
if(20 to 29)
H.Dizzy(10)
if(30 to 39)
H.adjustOrganLoss(ORGAN_SLOT_LIVER,5)
if(40 to 49)
H.adjustOrganLoss(ORGAN_SLOT_HEART,5)
if(50 to 59)
H.adjustOrganLoss(ORGAN_SLOT_STOMACH,5)
if(60 to 69)
H.adjustOrganLoss(ORGAN_SLOT_EYES,10)
if(70 to 79)
H.adjustOrganLoss(ORGAN_SLOT_EARS,10)
if(80 to 89)
H.adjustOrganLoss(ORGAN_SLOT_LUNGS,10)
if(90 to 99)
H.adjustOrganLoss(ORGAN_SLOT_TONGUE,10)
if(100)
H.adjustOrganLoss(ORGAN_SLOT_BRAIN,20)
/datum/status_effect/amok
id = "amok"
status_type = STATUS_EFFECT_REPLACE
alert_type = null
duration = 10 SECONDS
tick_interval = 1 SECONDS
/datum/status_effect/amok/on_apply(mob/living/afflicted)
. = ..()
to_chat(owner, "<span class='boldwarning'>Your feel filled with a rage that is not your own!</span>")
/datum/status_effect/amok/tick()
. = ..()
var/prev_intent = owner.a_intent
owner.a_intent = INTENT_HARM
var/list/mob/living/targets = list()
for(var/mob/living/potential_target in oview(owner, 1))
if(IS_HERETIC(potential_target) || potential_target.mind?.has_antag_datum(/datum/antagonist/heretic_monster))
continue
targets += potential_target
if(LAZYLEN(targets))
owner.log_message(" attacked someone due to the amok debuff.", LOG_ATTACK) //the following attack will log itself
owner.ClickOn(pick(targets))
owner.a_intent = prev_intent
/datum/status_effect/cloudstruck
id = "cloudstruck"
status_type = STATUS_EFFECT_REPLACE
duration = 3 SECONDS
on_remove_on_mob_delete = TRUE
///This overlay is applied to the owner for the duration of the effect.
var/mutable_appearance/mob_overlay
/datum/status_effect/cloudstruck/on_creation(mob/living/new_owner, set_duration)
if(isnum(set_duration))
duration = set_duration
. = ..()
/datum/status_effect/cloudstruck/on_apply()
. = ..()
mob_overlay = mutable_appearance('icons/effects/eldritch.dmi', "cloud_swirl", ABOVE_MOB_LAYER)
owner.overlays += mob_overlay
owner.update_icon()
ADD_TRAIT(owner, TRAIT_BLIND, "cloudstruck")
return TRUE
/datum/status_effect/cloudstruck/on_remove()
. = ..()
if(QDELETED(owner))
return
REMOVE_TRAIT(owner, TRAIT_BLIND, "cloudstruck")
if(owner)
owner.overlays -= mob_overlay
owner.update_icon()
/datum/status_effect/cloudstruck/Destroy()
. = ..()
QDEL_NULL(mob_overlay)
/datum/status_effect/stacking/saw_bleed
id = "saw_bleed"
tick_interval = 6
+8
View File
@@ -1121,3 +1121,11 @@
max_grav = max(G.setting,max_grav)
return max_grav
return SSmapping.level_trait(T.z, ZTRAIT_GRAVITY)
/**
* Causes effects when the atom gets hit by a rust effect from heretics
*
* Override this if you want custom behaviour in whatever gets hit by the rust
*/
/atom/proc/rust_heretic_act()
return
@@ -191,6 +191,24 @@
SSticker.mode_result = "loss - rev heads killed"
SSticker.news_report = REVS_LOSE
//////////////////////////////////////////////
// //
// HERETIC SMUGGLER //
// //
//////////////////////////////////////////////
/datum/dynamic_ruleset/latejoin/heretic_smuggler
name = "Heretic Smuggler"
antag_datum = /datum/antagonist/heretic
antag_flag = ROLE_HERETIC
protected_roles = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster")
restricted_roles = list("AI","Cyborg")
required_candidates = 1
weight = 4
cost = 10
requirements = list(40,30,20,10,10,10,10,10,10,10)
repeatable = TRUE
//////////////////////////////////////////////
// //
// BLOODSUCKERS //
@@ -143,6 +143,46 @@
changeling.add_antag_datum(new_antag)
return TRUE
//////////////////////////////////////////////
// //
// ELDRITCH CULT //
// //
//////////////////////////////////////////////
/datum/dynamic_ruleset/roundstart/heretics
name = "Heretics"
antag_flag = ROLE_HERETIC
antag_datum = /datum/antagonist/heretic
protected_roles = list("Prisoner","Security Officer", "Warden", "Detective", "Head of Security", "Captain")
restricted_roles = list("AI", "Cyborg")
required_candidates = 1
weight = 3
cost = 20
scaling_cost = 15
requirements = list(50,45,45,40,35,20,20,15,10,10)
antag_cap = list(1,1,1,1,2,2,2,2,3,3)
/datum/dynamic_ruleset/roundstart/heretics/pre_execute()
. = ..()
var/num_ecult = antag_cap[indice_pop] * (scaled_times + 1)
for (var/i = 1 to num_ecult)
var/mob/picked_candidate = pick_n_take(candidates)
assigned += picked_candidate.mind
picked_candidate.mind.restricted_roles = restricted_roles
picked_candidate.mind.special_role = ROLE_HERETIC
return TRUE
/datum/dynamic_ruleset/roundstart/heretics/execute()
for(var/c in assigned)
var/datum/mind/cultie = c
var/datum/antagonist/heretic/new_antag = new antag_datum()
cultie.add_antag_datum(new_antag)
return TRUE
//////////////////////////////////////////////
// //
// WIZARDS //
@@ -0,0 +1,67 @@
/datum/game_mode/heretics
name = "heresy"
config_tag = "heresy"
antag_flag = ROLE_HERETIC
false_report_weight = 5
restricted_jobs = list("AI", "Cyborg")
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") //citadel change - adds HoP, CE, CMO, and RD to heretic role blacklist
required_players = 15
required_enemies = 1
recommended_enemies = 4
reroll_friendly = 1
enemy_minimum_age = 0
round_ends_with_antag_death = 0
announce_span = "danger"
announce_text = "Heretics have been spotted on the station!\n\
<span class='danger'>Heretics</span>: Accomplish your objectives.\n\
<span class='notice'>Crew</span>: Do not let the madman succeed!"
var/ecult_possible = 4 //hard limit on culties if scaling is turned off
var/num_ecult = 1
var/list/culties = list()
/datum/game_mode/heretics/pre_setup()
if(CONFIG_GET(flag/protect_roles_from_antagonist))
restricted_jobs += protected_jobs
if(CONFIG_GET(flag/protect_assistant_from_antagonist))
restricted_jobs += "Assistant"
var/esc = CONFIG_GET(number/ecult_scaling_coeff)
if(esc)
num_ecult = min(max(1, min(round(num_players() / (esc * 2)) + 2, round(num_players() / esc))),4)
else
num_ecult = max(1, min(num_players(), ecult_possible))
for(var/i in 1 to num_ecult)
if(!antag_candidates.len)
break
var/datum/mind/cultie = antag_pick(antag_candidates)
antag_candidates -= cultie
cultie.special_role = ROLE_HERETIC
cultie.restricted_roles = restricted_jobs
culties += cultie
var/enough_heretics = culties.len > 0
if(!enough_heretics)
setup_error = "Not enough heretic candidates"
return FALSE
else
for(var/antag in culties)
return TRUE
/datum/game_mode/heretics/post_setup()
for(var/c in culties)
var/datum/mind/cultie = c
log_game("[key_name(cultie)] has been selected as a heretic!")
var/datum/antagonist/heretic/new_antag = new()
cultie.add_antag_datum(new_antag)
return ..()
/datum/game_mode/heretics/generate_report()
return "Cybersun Industries has announced that they have successfully raided a high-security library. The library contained a very dangerous book that was \
shown to posses anomalous properties. We suspect that the book has been copied over, Stay vigilant!"
+59 -175
View File
@@ -12,9 +12,9 @@
density = FALSE
state_open = TRUE
circuit = /obj/item/circuitboard/machine/sleeper
req_access = list(ACCESS_CMO) //Used for reagent deletion and addition of non medicines
var/efficiency = 1
var/min_health = 30
var/min_health = -25
var/list/available_chems
var/controls_inside = FALSE
var/list/possible_chems = list(
@@ -31,32 +31,13 @@
/obj/machinery/sleeper/Initialize()
. = ..()
create_reagents(500, NO_REACT)
// if(mapload)
// component_parts -= circuit
// QDEL_NULL(circuit)
occupant_typecache = GLOB.typecache_living
update_icon()
reset_chem_buttons()
RefreshParts()
add_inital_chems()
new_occupant_dir = dir
/obj/machinery/sleeper/setDir(newdir)
. = ..()
new_occupant_dir = dir
/obj/machinery/sleeper/on_deconstruction()
var/obj/item/reagent_containers/sleeper_buffer/buffer = new (loc)
buffer.volume = reagents.maximum_volume
buffer.reagents.maximum_volume = reagents.maximum_volume
reagents.trans_to(buffer.reagents, reagents.total_volume)
/obj/machinery/sleeper/proc/add_inital_chems()
for(var/i in available_chems)
var/datum/reagent/R = reagents.has_reagent(i)
if(!R)
reagents.add_reagent(i, (20))
continue
if(R.volume < 20)
reagents.add_reagent(i, (20 - R.volume))
/obj/machinery/sleeper/RefreshParts()
var/E
@@ -73,15 +54,11 @@
available_chems |= possible_chems[i]
reset_chem_buttons()
//Total container size 500 - 2000u
if(reagents)
reagents.maximum_volume = (500*E)
/obj/machinery/sleeper/update_icon_state()
icon_state = initial(icon_state)
if(state_open)
icon_state += "-open"
icon_state = "[initial(icon_state)]-open"
else
icon_state = initial(icon_state)
/obj/machinery/sleeper/container_resist(mob/living/user)
visible_message("<span class='notice'>[occupant] emerges from [src]!</span>",
@@ -98,10 +75,12 @@
/obj/machinery/sleeper/open_machine()
if(!state_open && !panel_open)
// flick("[initial(icon_state)]-anim", src)
..()
/obj/machinery/sleeper/close_machine(mob/user)
if((isnull(user) || istype(user)) && state_open && !panel_open)
// flick("[initial(icon_state)]-anim", src)
..(user)
var/mob/living/mob_occupant = occupant
if(mob_occupant && mob_occupant.stat != DEAD)
@@ -112,46 +91,23 @@
if (. & EMP_PROTECT_SELF)
return
if(is_operational() && occupant)
var/datum/reagent/R = pick(reagents.reagent_list)
var/datum/reagent/R = pick(reagents.reagent_list) //cit specific
inject_chem(R.type, occupant)
open_machine()
//Is this too much?
//Is this too much? Cit specific
if(severity == EMP_HEAVY)
var/chem = pick(available_chems)
available_chems -= chem
available_chems += get_random_reagent_id()
reset_chem_buttons()
/obj/machinery/sleeper/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/reagent_containers/sleeper_buffer))
var/obj/item/reagent_containers/sleeper_buffer/SB = I
if((SB.reagents.total_volume + reagents.total_volume) < reagents.maximum_volume)
SB.reagents.trans_to(reagents, SB.reagents.total_volume)
visible_message("[user] places the [SB] into the [src].")
qdel(SB)
return
else
SB.reagents.trans_to(reagents, SB.reagents.total_volume)
visible_message("[user] adds as much as they can to the [src] from the [SB].")
return
if(istype(I, /obj/item/reagent_containers))
var/obj/item/reagent_containers/RC = I
if(RC.reagents.total_volume == 0)
to_chat(user, "<span class='notice'>The [I] is empty!</span>")
for(var/datum/reagent/R in RC.reagents.reagent_list)
if((obj_flags & EMAGGED) || (allowed(usr)))
break
if(!istype(R, /datum/reagent/medicine))
visible_message("The [src] gives out a hearty boop and rejects the [I]. The Sleeper's screen flashes with a pompous \"Medicines only, please.\"")
return
RC.reagents.trans_to(reagents, 1000)
visible_message("[user] adds as much as they can to the [src] from the [I].")
return
/obj/machinery/sleeper/MouseDrop_T(mob/target, mob/user)
if(user.stat || user.lying || !Adjacent(user) || !user.Adjacent(target) || !iscarbon(target) || !user.IsAdvancedToolUser())
if(user.stat || !Adjacent(user) || !user.Adjacent(target) || !iscarbon(target) || !user.IsAdvancedToolUser())
return
if(isliving(user))
var/mob/living/L = user
if(!(L.mobility_flags & MOBILITY_STAND))
return
close_machine(target)
/obj/machinery/sleeper/screwdriver_act(mob/living/user, obj/item/I)
@@ -187,23 +143,9 @@
visible_message("<span class='notice'>[usr] pries open [src].</span>", "<span class='notice'>You pry open [src].</span>")
open_machine()
/obj/machinery/sleeper/AltClick(mob/user)
. = ..()
if(!user.canUseTopic(src, !hasSiliconAccessInArea(user)))
return
if(state_open)
close_machine()
else
open_machine()
return TRUE
/obj/machinery/sleeper/examine(mob/user)
. = ..()
. += "<span class='notice'>Alt-click [src] to [state_open ? "close" : "open"] it.</span>"
/obj/machinery/sleeper/ui_state(mob/user)
if(controls_inside)
return GLOB.notcontained_state
return GLOB.contained_state
return GLOB.default_state
/obj/machinery/sleeper/ui_interact(mob/user, datum/tgui/ui)
@@ -212,6 +154,18 @@
ui = new(user, src, "Sleeper", name)
ui.open()
/obj/machinery/sleeper/AltClick(mob/user)
if(!user.canUseTopic(src, !issilicon(user)))
return
if(state_open)
close_machine()
else
open_machine()
/obj/machinery/sleeper/examine(mob/user)
. = ..()
. += "<span class='notice'>Alt-click [src] to [state_open ? "close" : "open"] it.</span>"
/obj/machinery/sleeper/process()
..()
check_nap_violations()
@@ -221,22 +175,13 @@
/obj/machinery/sleeper/ui_data()
var/list/data = list()
var/chemical_list = list()
var/blood_percent = 0
data["occupied"] = occupant ? 1 : 0
data["open"] = state_open
data["blood_levels"] = blood_percent
data["blood_status"] = "Patient either has no blood, or does not require it to function."
data["chemical_list"] = chemical_list
data["chems"] = list()
for(var/chem in available_chems)
var/datum/reagent/R = reagents.has_reagent(chem)
R = GLOB.chemical_reagents_list[chem]
data["synthchems"] += list(list("name" = R.name, "id" = R.type, "synth_allowed" = synth_allowed(chem)))
for(var/datum/reagent/R in reagents.reagent_list)
data["chems"] += list(list("name" = R.name, "id" = R.type, "vol" = R.volume, "purity" = R.purity, "allowed" = chem_allowed(R.type)))
var/datum/reagent/R = GLOB.chemical_reagents_list[chem]
data["chems"] += list(list("name" = R.name, "id" = R.type, "allowed" = chem_allowed(chem)))
data["occupant"] = list()
var/mob/living/mob_occupant = occupant
@@ -264,40 +209,10 @@
data["occupant"]["fireLoss"] = mob_occupant.getFireLoss()
data["occupant"]["cloneLoss"] = mob_occupant.getCloneLoss()
data["occupant"]["brainLoss"] = mob_occupant.getOrganLoss(ORGAN_SLOT_BRAIN)
if(mob_occupant.reagents.reagent_list.len)
data["occupant"]["reagents"] = list()
if(mob_occupant.reagents && mob_occupant.reagents.reagent_list.len)
for(var/datum/reagent/R in mob_occupant.reagents.reagent_list)
chemical_list += list(list("name" = R.name, "volume" = R.volume))
else
chemical_list = "Patient has no reagents."
data["occupant"]["failing_organs"] = list()
var/mob/living/carbon/C = mob_occupant
if(C)
for(var/obj/item/organ/Or in C.getFailingOrgans())
if(istype(Or, /obj/item/organ/brain))
continue
data["occupant"]["failing_organs"] += list(list("name" = Or.name))
if(istype(C)) //Non-carbons shouldn't be able to enter sleepers, but this is to prevent runtimes if something ever breaks
if(mob_occupant.has_dna()) // Blood-stuff is mostly a copy-paste from the healthscanner.
blood_percent = round((C.blood_volume / BLOOD_VOLUME_NORMAL)*100)
var/blood_id = C.get_blood_id()
var/blood_warning = ""
if(blood_percent < 80)
blood_warning = "Patient has low blood levels."
if(blood_percent < 60)
blood_warning = "Patient has DANGEROUSLY low blood levels."
if(blood_id)
var/blood_type = C.dna.blood_type
if(!(blood_id in GLOB.blood_reagent_types)) // special blood substance
var/datum/reagent/R = GLOB.chemical_reagents_list[blood_id]
if(R)
blood_type = R.name
else
blood_type = blood_id
data["blood_status"] = "Patient has [blood_type] type blood. [blood_warning]"
data["blood_levels"] = blood_percent
data["occupant"]["reagents"] += list(list("name" = R.name, "volume" = R.volume))
return data
/obj/machinery/sleeper/ui_act(action, params)
@@ -314,37 +229,14 @@
. = TRUE
if("inject")
var/chem = text2path(params["chem"])
var/amount = text2num(params["volume"])
if(!is_operational() || !mob_occupant || isnull(chem))
return
if(mob_occupant.health < min_health && chem != /datum/reagent/medicine/epinephrine)
return
if(inject_chem(chem, usr, amount))
if(inject_chem(chem, usr))
. = TRUE
if(scrambled_chems && prob(5))
to_chat(usr, "<span class='warning'>Chemical system re-route detected, results may not be as expected!</span>")
if("synth")
var/chem = text2path(params["chem"])
if(!is_operational())
return
reagents.add_reagent(chem_buttons[chem], 10) //other_purity = 0.75 for when the mechanics are in
if("purge")
var/chem = text2path(params["chem"])
if(allowed(usr))
if(!is_operational())
return
reagents.remove_reagent(chem, 1000)
return
if(chem in available_chems)
if(!is_operational())
return
/*var/datum/reagent/R = reagents.has_reagent(chem) //For when purity effects are in
if(R.purity < 0.8)*/
reagents.remove_reagent(chem, 1000)
else
visible_message("<span class='warning'>Access Denied.</span>")
playsound(src, 'sound/machines/terminal_prompt_deny.ogg', 50, 0)
/obj/machinery/sleeper/emag_act(mob/user)
. = ..()
@@ -353,10 +245,9 @@
to_chat(user, "<span class='warning'>You scramble the sleeper's user interface!</span>")
return TRUE
//trans to
/obj/machinery/sleeper/proc/inject_chem(chem, mob/user, volume = 10)
if(chem_allowed(chem))
reagents.trans_id_to(occupant, chem, volume)//emag effect kicks in here so that the "intended" chem is used for all checks, for extra FUUU
/obj/machinery/sleeper/proc/inject_chem(chem, mob/user)
if((chem in available_chems) && chem_allowed(chem))
occupant.reagents.add_reagent(chem_buttons[chem], 10) //emag effect kicks in here so that the "intended" chem is used for all checks, for extra FUUU
if(user)
log_combat(user, occupant, "injected [chem] into", addition = "via [src]")
return TRUE
@@ -369,14 +260,6 @@
var/occ_health = mob_occupant.health > min_health || chem == /datum/reagent/medicine/epinephrine
return amount && occ_health
/obj/machinery/sleeper/proc/synth_allowed(chem)
var/datum/reagent/R = reagents.has_reagent(chem)
if(!R)
return TRUE
if(R.volume < 50)
return TRUE
return FALSE
/obj/machinery/sleeper/proc/reset_chem_buttons()
scrambled_chems = FALSE
LAZYINITLIST(chem_buttons)
@@ -416,23 +299,6 @@
component_parts += new /obj/item/stack/cable_coil(null)
RefreshParts()
/obj/machinery/sleeper/clockwork
name = "soothing sleeper"
desc = "A large cryogenics unit built from brass. Its surface is pleasantly cool the touch."
icon_state = "sleeper_clockwork"
enter_message = "<span class='bold inathneq_small'>You hear the gentle hum and click of machinery, and are lulled into a sense of peace.</span>"
possible_chems = list(list(/datum/reagent/medicine/epinephrine, /datum/reagent/medicine/salbutamol, /datum/reagent/medicine/bicaridine,
/datum/reagent/medicine/kelotane, /datum/reagent/medicine/oculine, /datum/reagent/medicine/inacusiate, /datum/reagent/medicine/mannitol))
/obj/machinery/sleeper/clockwork/process()
if(occupant && isliving(occupant))
var/mob/living/L = occupant
if(GLOB.clockwork_vitality) //If there's Vitality, the sleeper has passive healing
GLOB.clockwork_vitality = max(0, GLOB.clockwork_vitality - 1)
L.adjustBruteLoss(-1)
L.adjustFireLoss(-1)
L.adjustOxyLoss(-5)
/obj/machinery/sleeper/old
icon_state = "oldpod"
@@ -443,8 +309,6 @@
idle_power_usage = 3000
circuit = /obj/item/circuitboard/machine/sleeper/party
var/leddit = FALSE //Get it like reddit and lead alright fine
ui_x = 310
ui_y = 400
controls_inside = TRUE
possible_chems = list(
@@ -477,3 +341,23 @@
/obj/machinery/sleeper/party/emag_act(mob/user)
..()
leddit = TRUE
/obj/machinery/sleeper/clockwork
name = "soothing sleeper"
desc = "A large cryogenics unit built from brass. Its surface is pleasantly cool the touch."
icon_state = "sleeper_clockwork"
enter_message = "<span class='bold inathneq_small'>You hear the gentle hum and click of machinery, and are lulled into a sense of peace.</span>"
possible_chems = list(
list(/datum/reagent/medicine/epinephrine, /datum/reagent/medicine/salbutamol, /datum/reagent/medicine/bicaridine, /datum/reagent/medicine/kelotane, /datum/reagent/medicine/oculine, /datum/reagent/medicine/inacusiate, /datum/reagent/medicine/mannitol)
) //everything is available at start
fair_market_price = 0 //it's free
/obj/machinery/sleeper/clockwork/process()
..()
if(occupant && isliving(occupant))
var/mob/living/L = occupant
if(GLOB.clockwork_vitality) //If there's Vitality, the sleeper has passive healing
GLOB.clockwork_vitality = max(0, GLOB.clockwork_vitality - 1)
L.adjustBruteLoss(-1)
L.adjustFireLoss(-1)
L.adjustOxyLoss(-5)
+4
View File
@@ -92,6 +92,7 @@ Class Procs:
pressure_resistance = 15
max_integrity = 200
layer = BELOW_OBJ_LAYER //keeps shit coming out of the machine from ending up underneath it.
flags_1 = DEFAULT_RICOCHET_1
flags_ricochet = RICOCHET_HARD
ricochet_chance_mod = 0.3
@@ -546,3 +547,6 @@ Class Procs:
. = . % 9
AM.pixel_x = -8 + ((.%3)*8)
AM.pixel_y = -8 + (round( . / 3)*8)
/obj/machinery/rust_heretic_act()
take_damage(500, BRUTE, "melee", 1)
@@ -310,6 +310,17 @@
opacity = 0
glass = TRUE
/obj/machinery/door/airlock/bronze
name = "bronze airlock"
icon = 'icons/obj/doors/airlocks/clockwork/pinion_airlock.dmi'
overlays_file = 'icons/obj/doors/airlocks/clockwork/overlays.dmi'
assemblytype = /obj/structure/door_assembly/door_assembly_bronze
/obj/machinery/door/airlock/bronze/seethru
assemblytype = /obj/structure/door_assembly/door_assembly_bronze/seethru
opacity = 0
glass = TRUE
//////////////////////////////////
/*
Station2 Airlocks
+1 -1
View File
@@ -11,7 +11,7 @@
max_integrity = 350
armor = list("melee" = 30, "bullet" = 30, "laser" = 20, "energy" = 20, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 70)
CanAtmosPass = ATMOS_PASS_DENSITY
flags_1 = PREVENT_CLICK_UNDER_1
flags_1 = PREVENT_CLICK_UNDER_1|DEFAULT_RICOCHET_1
ricochet_chance_mod = 0.8
interaction_flags_atom = INTERACT_ATOM_UI_INTERACT
+2 -2
View File
@@ -298,7 +298,7 @@
/obj/machinery/door/firedoor/border_only
icon = 'icons/obj/doors/edge_Doorfire.dmi'
flags_1 = ON_BORDER_1
flags_1 = ON_BORDER_1|DEFAULT_RICOCHET_1
CanAtmosPass = ATMOS_PASS_PROC
/obj/machinery/door/firedoor/border_only/closed
@@ -320,7 +320,7 @@
to_chat(M, "<span class='notice'>You pull [M.pulling] through [src] right as it closes</span>")
M.pulling.forceMove(T1)
M.start_pulling(M2)
for(var/mob/living/M in T2)
if(M.stat == CONSCIOUS && M.pulling && M.pulling.loc == T1 && !M.pulling.anchored && M.pulling.move_resist <= M.move_force)
var/mob/living/M2 = M.pulling
+1 -1
View File
@@ -11,7 +11,7 @@
integrity_failure = 0
armor = list("melee" = 20, "bullet" = 50, "laser" = 50, "energy" = 50, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 70, "acid" = 100)
visible = FALSE
flags_1 = ON_BORDER_1
flags_1 = ON_BORDER_1|DEFAULT_RICOCHET_1
opacity = 0
CanAtmosPass = ATMOS_PASS_PROC
interaction_flags_machine = INTERACT_MACHINE_WIRES_IF_OPEN | INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_OPEN_SILICON | INTERACT_MACHINE_REQUIRES_SILICON | INTERACT_MACHINE_OPEN
+3
View File
@@ -153,6 +153,9 @@
/obj/mecha/get_cell()
return cell
/obj/mecha/rust_heretic_act()
take_damage(500, BRUTE)
/obj/mecha/Destroy()
go_out()
var/mob/living/silicon/ai/AI
@@ -168,3 +168,26 @@
items = list(
/obj/item/clothing/mask/gas/sexymime,
/obj/item/clothing/under/rank/civilian/mime/sexy)
/obj/effect/spawner/bundle/crate/Initialize(mapload)
if(items && items.len)
var/turf/T = get_turf(src)
var/obj/structure/closet/LC = locate(/obj/structure/closet) in T
if(LC)
for(var/path in items)
new path(LC)
return INITIALIZE_HINT_QDEL
/obj/effect/spawner/bundle/crate/mosin
name = "Mosin-Nagant spawner"
items = list(
/obj/item/gun/ballistic/shotgun/boltaction,
/obj/item/ammo_box/a762
)
/obj/effect/spawner/bundle/crate/surplusrifle
name = "surplus rifle spawner"
items = list(
/obj/item/gun/ballistic/automatic/surplus,
/obj/item/ammo_box/magazine/m10mm/rifle
)
@@ -139,6 +139,23 @@
/obj/effect/temp_visual/dir_setting/curse/hand
icon_state = "cursehand"
/obj/effect/temp_visual/bsa_splash
name = "\improper Bluespace energy wave"
desc = "A massive, rippling wave of bluepace energy, all rapidly exhausting itself the moment it leaves the concentrated beam of light."
icon = 'icons/effects/beam_splash.dmi'
icon_state = "beam_splash_l"
layer = ABOVE_ALL_MOB_LAYER
pixel_y = -16
duration = 50
/obj/effect/temp_visual/bsa_splash/Initialize(mapload, dir)
. = ..()
switch(dir)
if(WEST)
icon_state = "beam_splash_w"
if(EAST)
icon_state = "beam_splash_e"
/obj/effect/temp_visual/wizard
name = "water"
icon = 'icons/mob/mob.dmi'
+34 -6
View File
@@ -51,6 +51,10 @@
// no attacking while blocking
block_lock_attacking = TRUE
block_projectile_mitigation = 75
// more efficient vs projectiles
block_stamina_efficiency_override = list(
TEXT_ATTACK_TYPE_PROJECTILE = 4
)
parry_time_windup = 0
parry_time_active = 8
@@ -65,14 +69,20 @@
parry_imperfect_falloff_percent = 10
parry_efficiency_to_counterattack = 100
parry_efficiency_considered_successful = 25 // VERY generous
parry_efficiency_perfect = 90
parry_failed_stagger_duration = 3 SECONDS
parry_failed_clickcd_duration = CLICK_CD_MELEE
// more efficient vs projectiles
block_stamina_efficiency_override = list(
TEXT_ATTACK_TYPE_PROJECTILE = 4
)
/obj/item/dualsaber/active_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return, override_direction)
if((attack_type & ATTACK_TYPE_PROJECTILE) && is_energy_reflectable_projectile(object))
block_return[BLOCK_RETURN_REDIRECT_METHOD] = REDIRECT_METHOD_RETURN_TO_SENDER
return BLOCK_SUCCESS | BLOCK_REDIRECTED | BLOCK_SHOULD_REDIRECT
return ..()
/obj/item/dualsaber/on_active_parry(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, list/block_return, parry_efficiency, parry_time)
. = ..()
if(parry_efficiency >= 90) // perfect parry
block_return[BLOCK_RETURN_REDIRECT_METHOD] = REDIRECT_METHOD_RETURN_TO_SENDER
. |= BLOCK_SHOULD_REDIRECT
/obj/item/dualsaber/Initialize()
. = ..()
@@ -342,12 +352,30 @@
name = "divine lightblade"
desc = "A giant blade of bright and holy light, said to cut down the wicked with ease."
force = 5
block_chance = 50
armour_penetration = 0
block_parry_data = /datum/block_parry_data/chaplain
var/chaplain_spawnable = TRUE
can_reflect = FALSE
obj_flags = UNIQUE_RENAME
/datum/block_parry_data/chaplain
parry_stamina_cost = 12
parry_time_windup = 2
parry_time_active = 5
parry_time_spindown = 3
// parry_flags = PARRY_DEFAULT_HANDLE_FEEDBACK
parry_time_perfect = 1
parry_time_perfect_leeway = 1
parry_imperfect_falloff_percent = 7.5
parry_efficiency_to_counterattack = 100
parry_efficiency_considered_successful = 80
parry_efficiency_perfect = 120
parry_efficiency_perfect_override = list(
TEXT_ATTACK_TYPE_PROJECTILE = 30,
)
parry_failed_stagger_duration = 3 SECONDS
parry_failed_clickcd_duration = 2 SECONDS
/obj/item/dualsaber/hypereutactic/chaplain/ComponentInitialize()
. = ..()
AddComponent(/datum/component/two_handed, force_unwielded=5, force_wielded=20, \
+4 -4
View File
@@ -253,7 +253,7 @@
user.set_nutrition(NUTRITION_LEVEL_STARVING + 50)
/obj/item/book/granter/spell/blind
spell = /obj/effect/proc_holder/spell/targeted/trigger/blind
spell = /obj/effect/proc_holder/spell/pointed/trigger/blind
spellname = "blind"
icon_state ="bookblind"
desc = "This book looks blurry, no matter how you look at it."
@@ -265,7 +265,7 @@
user.blind_eyes(10)
/obj/item/book/granter/spell/mindswap
spell = /obj/effect/proc_holder/spell/targeted/mind_transfer
spell = /obj/effect/proc_holder/spell/pointed/mind_transfer
spellname = "mindswap"
icon_state ="bookmindswap"
desc = "This book's cover is pristine, though its pages look ragged and torn."
@@ -289,7 +289,7 @@
if(stored_swap == user)
to_chat(user,"<span class='notice'>You stare at the book some more, but there doesn't seem to be anything else to learn...</span>")
return
var/obj/effect/proc_holder/spell/targeted/mind_transfer/swapper = new
var/obj/effect/proc_holder/spell/pointed/mind_transfer/swapper = new
if(swapper.cast(list(stored_swap), user, TRUE, TRUE))
to_chat(user,"<span class='warning'>You're suddenly somewhere else... and someone else?!</span>")
to_chat(stored_swap,"<span class='warning'>Suddenly you're staring at [src] again... where are you, who are you?!</span>")
@@ -324,7 +324,7 @@
user.DefaultCombatKnockdown(40)
/obj/item/book/granter/spell/barnyard
spell = /obj/effect/proc_holder/spell/targeted/barnyardcurse
spell = /obj/effect/proc_holder/spell/pointed/barnyardcurse
spellname = "barnyard"
icon_state ="bookhorses"
desc = "This book is more horse than your mind has room for."
@@ -9,7 +9,7 @@
/obj/item/implant/uplink/Initialize(mapload, _owner)
. = ..()
AddComponent(/datum/component/uplink, _owner, TRUE, FALSE, null, starting_tc, GLOB.not_incapacitated_state)
AddComponent(/datum/component/uplink, _owner, TRUE, FALSE, null, starting_tc)
/obj/item/implanter/uplink
name = "implanter (uplink)"
+64 -8
View File
@@ -240,7 +240,31 @@
custom_materials = list(/datum/material/glass = 1000, /datum/material/bluespace = 600)
escape_time = 200 //equal to the time of a bluespace bodybag
alternate_escape_time = 100
///gas supply for simplemobs so they don't die
var/datum/gas_mixture/occupant_gas_supply
///level until the reagent gets INGEST ed instead of TOUCH
var/sipping_level = 150
///prob50 level of sipping
var/sipping_probably = 99
///chem transfer rate / second
var/transfer_rate = 5
/obj/item/pet_carrier/bluespace/Initialize()
. = ..()
create_reagents(300, OPENCONTAINER, DEFAULT_REAGENTS_VALUE) //equivalent of bsbeakers
/obj/item/pet_carrier/bluespace/Destroy()
STOP_PROCESSING(SSobj, src)
return ..()
/obj/item/pet_carrier/bluespace/attack_self(mob/living/user)
..()
if(reagents)
if(open)
reagents.reagents_holder_flags = OPENCONTAINER
else
reagents.reagents_holder_flags = NONE
/obj/item/pet_carrier/bluespace/update_icon_state()
if(open)
@@ -248,11 +272,28 @@
else
icon_state = "bluespace_jar"
/obj/item/pet_carrier/bluespace/throw_impact()
/obj/item/pet_carrier/bluespace/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
. = ..()
//delete the item upon impact, releasing the creature inside (this is handled by its deletion)
if(occupants.len)
loc.visible_message("<span class='warning'>The bluespace jar smashes, releasing [occupants[1]]!</span>")
if(reagents?.total_volume && ismob(hit_atom) && hit_atom.reagents)
reagents.total_volume *= rand(5,10) * 0.1 //Not all of it makes contact with the target
var/mob/M = hit_atom
var/R = reagents.log_list()
hit_atom.visible_message("<span class='danger'>[M] has been splashed with something!</span>", \
"<span class='userdanger'>[M] has been splashed with something!</span>")
var/turf/TT = get_turf(hit_atom)
var/throwerstring
if(thrownby)
log_combat(thrownby, M, "splashed", R)
var/turf/AT = get_turf(thrownby)
throwerstring = " THROWN BY [key_name(thrownby)] at [AT] (AREACOORD(AT)]"
log_reagent("SPLASH: [src] mob throw_impact() onto [key_name(hit_atom)] at [TT] ([AREACOORD(TT)])[throwerstring] - [R]")
reagents.reaction(hit_atom, TOUCH)
reagents.clear_reagents()
playsound(src, "shatter", 70, 1)
qdel(src)
@@ -260,21 +301,24 @@
. = ..()
if(!occupant_gas_supply)
occupant_gas_supply = new
if(isanimal(occupant))
var/mob/living/simple_animal/animal = occupant
occupant_gas_supply[/datum/gas/oxygen] = 0.0064 //make sure it has some gas in so it isn't depressurized
occupant_gas_supply.set_temperature(animal.minbodytemp) //simple animals only care about temperature/pressure when their turf isnt a location
else
if(ishuman(occupant)) //humans require resistance to cold/heat and living in no air while inside, and lose this when outside
ADD_TRAIT(occupant, TRAIT_RESISTCOLD, "bluespace_container_cold_resist")
ADD_TRAIT(occupant, TRAIT_RESISTHEAT, "bluespace_container_heat_resist")
ADD_TRAIT(occupant, TRAIT_NOBREATH, "bluespace_container_no_breath")
ADD_TRAIT(occupant, TRAIT_RESISTHIGHPRESSURE, "bluespace_container_resist_high_pressure")
ADD_TRAIT(occupant, TRAIT_RESISTLOWPRESSURE, "bluespace_container_resist_low_pressure")
if(ishuman(occupant)) //humans require resistance to cold/heat and living in no air while inside, and lose this when outside
START_PROCESSING(SSobj, src)
ADD_TRAIT(occupant, TRAIT_RESISTCOLD, "bluespace_container_cold_resist")
ADD_TRAIT(occupant, TRAIT_RESISTHEAT, "bluespace_container_heat_resist")
ADD_TRAIT(occupant, TRAIT_NOBREATH, "bluespace_container_no_breath")
ADD_TRAIT(occupant, TRAIT_RESISTHIGHPRESSURE, "bluespace_container_resist_high_pressure")
ADD_TRAIT(occupant, TRAIT_RESISTLOWPRESSURE, "bluespace_container_resist_low_pressure")
/obj/item/pet_carrier/bluespace/remove_occupant(mob/living/occupant)
. = ..()
if(ishuman(occupant))
STOP_PROCESSING(SSobj, src)
REMOVE_TRAIT(occupant, TRAIT_RESISTCOLD, "bluespace_container_cold_resist")
REMOVE_TRAIT(occupant, TRAIT_RESISTHEAT, "bluespace_container_heat_resist")
REMOVE_TRAIT(occupant, TRAIT_NOBREATH, "bluespace_container_no_breath")
@@ -287,6 +331,18 @@
occupant_gas_supply = new
return occupant_gas_supply
/obj/item/pet_carrier/bluespace/process()
if(!reagents)
return
for(var/mob/living/L in occupants)
if(!ishuman(L))
continue
if((reagents.total_volume >= sipping_level) || ((reagents.total_volume >= sipping_probably) && prob(50))) //sipp
reagents.reaction(L, INGEST) //consume
reagents.trans_to(L, transfer_rate)
else
reagents.reaction(L, TOUCH, show_message = FALSE)
/obj/item/pet_carrier/bluespace/load_occupant(mob/living/user, mob/living/target)
if(..())
name = "[initial(name)] ([target])"
+12
View File
@@ -688,6 +688,18 @@ GLOBAL_LIST_INIT(valid_plushie_paths, valid_plushie_paths())
icon_state = "scrubpuppy"
item_state = "scrubpuppy"
/obj/item/toy/plush/borgplushie/meddrake
name = "MediDrake Plushie"
desc = "An adorable stuffed toy of a Medidrake."
icon_state = "meddrake"
item_state = "meddrake"
/obj/item/toy/plush/borgplushie/secdrake
name = "SecDrake Plushie"
desc = "An adorable stuffed toy of a Secdrake."
icon_state = "secdrake"
item_state = "secdrake"
/obj/item/toy/plush/aiplush
name = "AI plushie"
desc = "A little stuffed toy AI core... it appears to be malfunctioning."
@@ -239,6 +239,9 @@
/obj/item/stack/medical/suture/one
amount = 1
/obj/item/stack/medical/suture/five
amount = 5
/obj/item/stack/medical/suture/medicated
name = "medicated suture"
icon_state = "suture_purp"
@@ -319,6 +322,9 @@
/obj/item/stack/medical/mesh/one
amount = 1
/obj/item/stack/medical/mesh/five
amount = 5
/obj/item/stack/medical/mesh/advanced
name = "advanced regenerative mesh"
desc = "An advanced mesh made with aloe extracts and sterilizing chemicals, used to treat burns."
@@ -672,6 +672,10 @@ GLOBAL_LIST_INIT(brass_recipes, list ( \
GLOBAL_LIST_INIT(bronze_recipes, list ( \
new/datum/stack_recipe("wall gear", /obj/structure/girder/bronze, 2, time = 20, one_per_turf = TRUE, on_floor = TRUE), \
null,
new/datum/stack_recipe("directional bronze window", /obj/structure/window/bronze/unanchored, time = 0, on_floor = TRUE, window_checks = TRUE), \
new/datum/stack_recipe("fulltile bronze window", /obj/structure/window/bronze/fulltile/unanchored, 2, time = 0, on_floor = TRUE, window_checks = TRUE), \
new/datum/stack_recipe("pinion airlock assembly", /obj/structure/door_assembly/door_assembly_bronze, 4, time = 50, one_per_turf = TRUE, on_floor = TRUE), \
new/datum/stack_recipe("bronze pinion airlock assembly", /obj/structure/door_assembly/door_assembly_bronze/seethru, 4, time = 50, one_per_turf = TRUE, on_floor = TRUE), \
new/datum/stack_recipe("bronze hat", /obj/item/clothing/head/bronze), \
new/datum/stack_recipe("bronze suit", /obj/item/clothing/suit/bronze), \
new/datum/stack_recipe("bronze boots", /obj/item/clothing/shoes/bronze), \
@@ -679,9 +683,10 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \
new/datum/stack_recipe("bronze chair", /obj/structure/chair/bronze, 1, time = 0, one_per_turf = TRUE, on_floor = TRUE), \
new/datum/stack_recipe("bronze bar stool", /obj/structure/chair/stool/bar/bronze, 1, time = 0, one_per_turf = TRUE, on_floor = TRUE), \
new/datum/stack_recipe("bronze stool", /obj/structure/chair/stool/bronze, 1, time = 0, one_per_turf = TRUE, on_floor = TRUE), \
new /datum/stack_recipe("bronze floor tiles", /obj/item/stack/tile/bronze, 1, 4, 20), \
))
/obj/item/stack/tile/bronze
/obj/item/stack/sheet/bronze
name = "brass"
desc = "On closer inspection, what appears to be wholly-unsuitable-for-building brass is actually more structurally stable bronze."
singular_name = "bronze sheet"
@@ -690,27 +695,21 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \
icon = 'icons/obj/stack_objects.dmi'
custom_materials = list(/datum/material/bronze = MINERAL_MATERIAL_AMOUNT)
resistance_flags = FIRE_PROOF | ACID_PROOF
throwforce = 10
max_amount = 50
throw_speed = 1
throw_range = 3
turf_type = /turf/open/floor/bronze
novariants = FALSE
grind_results = list(/datum/reagent/iron = 5, /datum/reagent/copper = 3) //we have no "tin" reagent so this is the closest thing
merge_type = /obj/item/stack/tile/bronze
merge_type = /obj/item/stack/sheet/bronze
tableVariant = /obj/structure/table/bronze
material_type = /datum/material/bronze
/obj/item/stack/tile/bronze/attack_self(mob/living/user)
/obj/item/stack/sheet/bronze/attack_self(mob/living/user)
if(is_servant_of_ratvar(user)) //still lets them build with it, just gives a message
to_chat(user, "<span class='danger'>Wha... what is this cheap imitation crap? This isn't brass at all!</span>")
..()
/obj/item/stack/tile/bronze/get_main_recipes()
/obj/item/stack/sheet/bronze/get_main_recipes()
. = ..()
. += GLOB.bronze_recipes
/obj/item/stack/tile/bronze/thirty
/obj/item/stack/sheet/bronze/thirty
amount = 30
/*
@@ -513,3 +513,12 @@
icon_state = "material_tile"
turf_type = /turf/open/floor/material
material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS
/obj/item/stack/tile/bronze
name = "bronze tile"
singular_name = "bronze floor tile"
desc = "A tile made out of bronze. Looks like clockwork."
icon_state = "material_tile"
color = "#92661A"
turf_type = /turf/open/floor/bronze
custom_materials = list(/datum/material/bronze = 250)
+47 -30
View File
@@ -47,41 +47,58 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "bible",
user.visible_message("<span class='suicide'>[user] is offering [user.p_them()]self to [deity_name]! It looks like [user.p_theyre()] trying to commit suicide!</span>")
return (BRUTELOSS)
/obj/item/storage/book/bible/attack_self(mob/living/carbon/human/H)
if(!istype(H))
/obj/item/storage/book/bible/attack_self(mob/living/carbon/human/user)
if(!istype(user))
return
// If H is the Chaplain, we can set the icon_state of the bible (but only once!)
if(!GLOB.bible_icon_state && H.job == "Chaplain")
var/dat = "<html><head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8'><title>Pick Bible Style</title></head><body><center><h2>Pick a bible style</h2></center><table>"
for(var/i in 1 to GLOB.biblestates.len)
var/icon/bibleicon = icon('icons/obj/storage.dmi', GLOB.biblestates[i])
var/nicename = GLOB.biblenames[i]
H << browse_rsc(bibleicon, nicename)
dat += {"<tr><td><img src="[nicename]"></td><td><a href="?src=[REF(src)];seticon=[i]">[nicename]</a></td></tr>"}
dat += "</table></body></html>"
H << browse(dat, "window=editicon;can_close=0;can_minimize=0;size=250x650")
if(GLOB.bible_icon_state) // if there is already a bible icon return FALSE
return FALSE
if(user.job != "Chaplain") // if the user is not the chaplain, return FALSE
return FALSE
/obj/item/storage/book/bible/Topic(href, href_list)
if(!usr.canUseTopic(src))
return
if(href_list["seticon"] && GLOB && !GLOB.bible_icon_state)
var/iconi = text2num(href_list["seticon"])
var/biblename = GLOB.biblenames[iconi]
var/obj/item/storage/book/bible/B = locate(href_list["src"])
B.icon_state = GLOB.biblestates[iconi]
B.item_state = GLOB.bibleitemstates[iconi]
var/list/skins = list()
for(var/i in 1 to GLOB.biblestates.len)
var/image/bible_image = image(icon = 'icons/obj/storage.dmi', icon_state = GLOB.biblestates[i])
skins += list("[GLOB.biblenames[i]]" = bible_image)
if(B.icon_state == "honk1" || B.icon_state == "honk2")
var/mob/living/carbon/human/H = usr
H.dna.add_mutation(CLOWNMUT)
H.dna.add_mutation(SMILE)
H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(H), SLOT_WEAR_MASK)
var/choice = show_radial_menu(user, src, skins, custom_check = CALLBACK(src, .proc/check_menu, user), radius = 40, require_near = TRUE)
if(!choice)
return FALSE
var/bible_index = GLOB.biblenames.Find(choice)
if(!bible_index)
return FALSE
icon_state = GLOB.biblestates[bible_index]
item_state = GLOB.bibleitemstates[bible_index]
GLOB.bible_icon_state = B.icon_state
GLOB.bible_item_state = B.item_state
if(icon_state == "honk1" || icon_state == "honk2")
var/mob/living/carbon/human/H = usr
H.dna.add_mutation(CLOWNMUT)
H.dna.add_mutation(SMILE)
H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(H), SLOT_WEAR_MASK)
SSblackbox.record_feedback("text", "religion_book", 1, "[biblename]")
usr << browse(null, "window=editicon")
GLOB.bible_icon_state = icon_state
GLOB.bibleitemstates = item_state
SSblackbox.record_feedback("text", "religion_book", 1, "[choice]")
/**
* Checks if we are allowed to interact with the radial
*
* Arguements: user The mob interacting with the menu
*/
/obj/item/storage/book/bible/proc/check_menu(mob/living/carbon/human/user)
if(GLOB.bible_icon_state)
return FALSE
if(!istype(user))
return FALSE
if(!user.is_holding(src))
return FALSE
if(!user.can_read(src))
return FALSE
if(user.incapacitated())
return FALSE
if(user.job != "Chaplain")
return FALSE
return TRUE
/obj/item/storage/book/bible/proc/bless(mob/living/carbon/human/H, mob/living/user)
for(var/X in H.bodyparts)
+10 -9
View File
@@ -245,19 +245,20 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons)
new /obj/item/stack/cable_coil/white(src)
/obj/item/storage/toolbox/ammo
name = "ammo box"
desc = "It contains a few clips."
name = "ammunition case (7.62mm stripper clips)"
desc = "It contains a few 7.62 stripper clips."
icon_state = "ammobox"
item_state = "ammobox"
var/ammotype = /obj/item/ammo_box/a762 // make sure this is a typepath thanks
/obj/item/storage/toolbox/ammo/PopulateContents()
new /obj/item/ammo_box/a762(src)
new /obj/item/ammo_box/a762(src)
new /obj/item/ammo_box/a762(src)
new /obj/item/ammo_box/a762(src)
new /obj/item/ammo_box/a762(src)
new /obj/item/ammo_box/a762(src)
new /obj/item/ammo_box/a762(src)
for (var/i = 0, i < 7, i++)
new ammotype(src)
/obj/item/storage/toolbox/ammo/surplus
name = "ammunition case (10mm rifle magazines)"
desc = "It contains a few 10mm rifle magazines."
ammotype = /obj/item/ammo_box/magazine/m10mm/rifle
/obj/item/storage/toolbox/infiltrator
name = "insidious case"
+5 -2
View File
@@ -122,11 +122,14 @@
return TRUE
return ..()
/obj/item/hand_tele/proc/try_dispel_portal(atom/target, mob/user)
if(is_parent_of_portal(target))
/obj/item/hand_tele/proc/try_dispel_portal(atom/target, mob/user, delay = 30)
var/datum/beam/B = user.Beam(target, icon_state = "rped_upgrade", maxdistance = 50)
if(is_parent_of_portal(target) && (!delay || do_after(user, delay, target = target)))
qdel(target)
to_chat(user, "<span class='notice'>You dispel [target] with \the [src]!</span>")
qdel(B)
return TRUE
qdel(B)
return FALSE
/obj/item/hand_tele/afterattack(atom/target, mob/user)
+6 -4
View File
@@ -252,6 +252,8 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
/obj/item/katana/timestop
name = "temporal katana"
desc = "Delicately balanced, this finely-crafted blade hums with barely-restrained potential."
block_chance = 0 // oops
force = 27.5 // oops
item_flags = ITEM_CAN_PARRY
block_parry_data = /datum/block_parry_data/bokken/quick_parry/proj
@@ -259,7 +261,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
if(ishuman(owner))
var/mob/living/carbon/human/flynn = owner
flynn.emote("smirk")
new /obj/effect/timestop(get_turf(owner), 2, 50, list(owner))
new /obj/effect/timestop/magic(get_turf(owner), 1, 50, list(owner)) // null roddies counter
/obj/item/melee/bokken // parrying stick
name = "bokken"
@@ -295,7 +297,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
parry_time_perfect = 1.5
parry_time_perfect_leeway = 1
parry_imperfect_falloff_percent = 7.5
parry_efficiency_to_counterattack = 100
parry_efficiency_to_counterattack = 120
parry_efficiency_considered_successful = 65 // VERY generous
parry_efficiency_perfect = 120
parry_efficiency_perfect_override = list(
@@ -304,13 +306,13 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
parry_failed_stagger_duration = 3 SECONDS
parry_data = list(
PARRY_COUNTERATTACK_MELEE_ATTACK_CHAIN = 2.5, // 7*2.5 = 17.5, 8*2.5 = 20, 9*2.5 = 22.5, 10*2.5 = 25
)
)
/datum/block_parry_data/bokken/quick_parry // emphasizing REALLY SHORT PARRIES
parry_stamina_cost = 6 // still more costly than most parries, but less than a full bokken parry
parry_time_active = 5 // REALLY small parry window
parry_time_perfect = 2.5 // however...
parry_time_perfect_leeway = 2.5 // the entire time, the parry is perfect
parry_time_perfect_leeway = 2 // the entire time, the parry is perfect
parry_failed_stagger_duration = 1 SECONDS
parry_failed_clickcd_duration = 1 SECONDS // more forgiving punishments for missed parries
// still, don't fucking miss your parries or you're down stamina and staggered to shit
+7 -2
View File
@@ -9,8 +9,10 @@
var/mob/living/structureclimber
var/broken = 0 //similar to machinery's stat BROKEN
layer = BELOW_OBJ_LAYER
flags_ricochet = RICOCHET_HARD
ricochet_chance_mod = 0.5
//ricochets on structures commented out for now because there's a lot of structures that /shouldnt/ be ricocheting and those need to be reviewed first
//flags_1 = DEFAULT_RICOCHET_1
//flags_ricochet = RICOCHET_HARD
//ricochet_chance_mod = 0.5
/obj/structure/Initialize()
if (!armor)
@@ -110,3 +112,6 @@
if(0 to 25)
if(!broken)
return "<span class='warning'>It's falling apart!</span>"
/obj/structure/rust_heretic_act()
take_damage(500, BRUTE, "melee", 1)
@@ -487,7 +487,7 @@
desc = "A bronze bar stool with red silk for a pillow."
icon_state = "barbrass"
item_chair = /obj/item/chair/stool/bar/bronze
buildstacktype = /obj/item/stack/tile/bronze
buildstacktype = /obj/item/stack/sheet/bronze
buildstackamount = 1
/obj/structure/chair/stool/brass
@@ -503,7 +503,7 @@
desc = "A bronze stool with a silk top for comfort."
icon_state = "stoolbrass"
item_chair = /obj/item/chair/stool/bronze
buildstacktype = /obj/item/stack/tile/bronze
buildstacktype = /obj/item/stack/sheet/bronze
buildstackamount = 1
/obj/item/chair/stool/brass
@@ -569,7 +569,6 @@
buildstacktype = /obj/item/stack/tile/brass
buildstackamount = 1
item_chair = null
var/turns = 0
/obj/structure/chair/brass/ComponentInitialize()
return //it spins with the power of ratvar, not components.
@@ -581,16 +580,12 @@
/obj/structure/chair/brass/process()
setDir(turn(dir,-90))
playsound(src, 'sound/effects/servostep.ogg', 50, FALSE)
turns++
if(turns >= 8)
STOP_PROCESSING(SSfastprocess, src)
/obj/structure/chair/brass/ratvar_act()
return
/obj/structure/chair/brass/AltClick(mob/living/user)
. = ..()
turns = 0
if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user)))
return
if(!(datum_flags & DF_ISPROCESSING))
@@ -608,7 +603,7 @@
desc = "A spinny chair made of bronze. It has little cogs for wheels!"
anchored = FALSE
icon_state = "brass_chair"
buildstacktype = /obj/item/stack/tile/bronze
buildstacktype = /obj/item/stack/sheet/bronze
buildstackamount = 1
item_chair = null
@@ -111,6 +111,9 @@
var/mob/living/L = user
if(HAS_TRAIT(L, TRAIT_SKITTISH))
. += "<span class='notice'>Ctrl-Shift-click [src] to jump inside.</span>"
if(isobserver(user))
. += "<span class='info'>It contains: [english_list(contents)].</span>"
investigate_log("had its contents examined by [user] as a ghost.", INVESTIGATE_GHOST)
/obj/structure/closet/CanPass(atom/movable/mover, turf/target)
if(wall_mounted)
@@ -240,3 +240,14 @@
airlock_type = /obj/machinery/door/airlock/wood
mineral = "wood"
glass_type = /obj/machinery/door/airlock/wood/glass
/obj/structure/door_assembly/door_assembly_bronze
name = "bronze airlock assembly"
icon = 'icons/obj/doors/airlocks/clockwork/pinion_airlock.dmi'
base_name = "bronze airlock"
airlock_type = /obj/machinery/door/airlock/bronze
noglass = TRUE
material_type = /obj/item/stack/tile/bronze
/obj/structure/door_assembly/door_assembly_bronze/seethru
airlock_type = /obj/machinery/door/airlock/bronze/seethru
+4 -4
View File
@@ -442,19 +442,19 @@
to_chat(user, "<span class='notice'>You start slicing apart [src]...</span>")
if(W.use_tool(src, user, 40, volume=50))
to_chat(user, "<span class='notice'>You slice apart [src].</span>")
var/obj/item/stack/tile/bronze/B = new(drop_location(), 2)
var/obj/item/stack/sheet/bronze/B = new(drop_location(), 2)
transfer_fingerprints_to(B)
qdel(src)
else if(istype(W, /obj/item/pickaxe/drill/jackhammer))
to_chat(user, "<span class='notice'>Your jackhammer smashes through the girder!</span>")
var/obj/item/stack/tile/bronze/B = new(drop_location(), 2)
var/obj/item/stack/sheet/bronze/B = new(drop_location(), 2)
transfer_fingerprints_to(B)
W.play_tool_sound(src)
qdel(src)
else if(istype(W, /obj/item/stack/tile/bronze))
var/obj/item/stack/tile/bronze/B = W
else if(istype(W, /obj/item/stack/sheet/bronze))
var/obj/item/stack/sheet/bronze/B = W
if(B.get_amount() < 2)
to_chat(user, "<span class='warning'>You need at least two bronze sheets to build a bronze wall!</span>")
return 0
+7 -7
View File
@@ -3,7 +3,7 @@
#define STAIR_TERMINATOR_YES 2
// dir determines the direction of travel to go upwards (due to lack of sprites, currently only 1 and 2 make sense)
// stairs require /turf/open/openspace as the tile above them to work
// stairs require /turf/open/transparent/openspace as the tile above them to work
// multiple stair objects can be chained together; the Z level transition will happen on the final stair object in the chain
/obj/structure/stairs
@@ -12,7 +12,7 @@
icon_state = "stairs"
anchored = TRUE
var/force_open_above = FALSE // replaces the turf above this stair obj with /turf/open/openspace
var/force_open_above = FALSE // replaces the turf above this stair obj with /turf/open/transparent/openspace
var/terminator_mode = STAIR_TERMINATOR_AUTOMATIC
var/turf/listeningTo
@@ -95,20 +95,20 @@
/obj/structure/stairs/proc/build_signal_listener()
if(listeningTo)
UnregisterSignal(listeningTo, COMSIG_TURF_MULTIZ_NEW)
var/turf/open/openspace/T = get_step_multiz(get_turf(src), UP)
var/turf/open/transparent/openspace/T = get_step_multiz(get_turf(src), UP)
RegisterSignal(T, COMSIG_TURF_MULTIZ_NEW, .proc/on_multiz_new)
listeningTo = T
/obj/structure/stairs/proc/force_open_above()
var/turf/open/openspace/T = get_step_multiz(get_turf(src), UP)
var/turf/open/transparent/openspace/T = get_step_multiz(get_turf(src), UP)
if(T && !istype(T))
T.ChangeTurf(/turf/open/openspace, flags = CHANGETURF_INHERIT_AIR)
T.ChangeTurf(/turf/open/transparent/openspace, flags = CHANGETURF_INHERIT_AIR)
/obj/structure/stairs/proc/on_multiz_new(turf/source, dir)
if(dir == UP)
var/turf/open/openspace/T = get_step_multiz(get_turf(src), UP)
var/turf/open/transparent/openspace/T = get_step_multiz(get_turf(src), UP)
if(T && !istype(T))
T.ChangeTurf(/turf/open/openspace, flags = CHANGETURF_INHERIT_AIR)
T.ChangeTurf(/turf/open/transparent/openspace, flags = CHANGETURF_INHERIT_AIR)
/obj/structure/stairs/intercept_zImpact(atom/movable/AM, levels = 1)
. = ..()
+1 -1
View File
@@ -597,7 +597,7 @@
icon = 'icons/obj/smooth_structures/brass_table.dmi'
icon_state = "brass_table"
resistance_flags = FIRE_PROOF | ACID_PROOF
buildstack = /obj/item/stack/tile/bronze
buildstack = /obj/item/stack/sheet/bronze
canSmoothWith = list(/obj/structure/table/reinforced/brass, /obj/structure/table/bronze)
/obj/structure/table/bronze/tablelimbsmash(mob/living/user, mob/living/pushed_mob)
+25 -2
View File
@@ -17,7 +17,6 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup)
layer = ABOVE_OBJ_LAYER //Just above doors
pressure_resistance = 4*ONE_ATMOSPHERE
anchored = TRUE //initially is 0 for tile smoothing
flags_1 = ON_BORDER_1
max_integrity = 25
var/ini_dir = null
var/state = WINDOW_OUT_OF_FRAME
@@ -38,7 +37,8 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup)
var/hitsound = 'sound/effects/Glasshit.ogg'
rad_insulation = RAD_VERY_LIGHT_INSULATION
rad_flags = RAD_PROTECT_CONTENTS
flags_ricochet = RICOCHET_HARD
flags_1 = ON_BORDER_1|DEFAULT_RICOCHET_1
flags_ricochet = RICOCHET_HARD
ricochet_chance_mod = 0.4
attack_hand_speed = CLICK_CD_MELEE
attack_hand_is_action = TRUE
@@ -875,3 +875,26 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup)
return
..()
update_icon()
/obj/structure/window/bronze
name = "brass window"
desc = "A paper-thin pane of translucent yet reinforced brass. Nevermind, this is just weak bronze!"
icon = 'icons/obj/smooth_structures/clockwork_window.dmi'
icon_state = "clockwork_window_single"
glass_type = /obj/item/stack/tile/bronze
/obj/structure/window/bronze/unanchored
anchored = FALSE
/obj/structure/window/bronze/fulltile
icon_state = "clockwork_window"
canSmoothWith = null
smooth = SMOOTH_TRUE
fulltile = TRUE
flags_1 = PREVENT_CLICK_UNDER_1
dir = FULLTILE_WINDOW_DIR
max_integrity = 50
glass_amount = 2
/obj/structure/window/bronze/fulltile/unanchored
anchored = FALSE
+4
View File
@@ -226,5 +226,9 @@
soundin = pick('sound/effects/clangsmall1.ogg', 'sound/effects/clangsmall2.ogg')
if("slosh")
soundin = pick('sound/effects/slosh1.ogg', 'sound/effects/slosh2.ogg')
if("smcalm")
soundin = pick('sound/machines/sm/accent/normal/1.ogg', 'sound/machines/sm/accent/normal/2.ogg', 'sound/machines/sm/accent/normal/3.ogg', 'sound/machines/sm/accent/normal/4.ogg', 'sound/machines/sm/accent/normal/5.ogg', 'sound/machines/sm/accent/normal/6.ogg', 'sound/machines/sm/accent/normal/7.ogg', 'sound/machines/sm/accent/normal/8.ogg', 'sound/machines/sm/accent/normal/9.ogg', 'sound/machines/sm/accent/normal/10.ogg', 'sound/machines/sm/accent/normal/11.ogg', 'sound/machines/sm/accent/normal/12.ogg', 'sound/machines/sm/accent/normal/13.ogg', 'sound/machines/sm/accent/normal/14.ogg', 'sound/machines/sm/accent/normal/15.ogg', 'sound/machines/sm/accent/normal/16.ogg', 'sound/machines/sm/accent/normal/17.ogg', 'sound/machines/sm/accent/normal/18.ogg', 'sound/machines/sm/accent/normal/19.ogg', 'sound/machines/sm/accent/normal/20.ogg', 'sound/machines/sm/accent/normal/21.ogg', 'sound/machines/sm/accent/normal/22.ogg', 'sound/machines/sm/accent/normal/23.ogg', 'sound/machines/sm/accent/normal/24.ogg', 'sound/machines/sm/accent/normal/25.ogg', 'sound/machines/sm/accent/normal/26.ogg', 'sound/machines/sm/accent/normal/27.ogg', 'sound/machines/sm/accent/normal/28.ogg', 'sound/machines/sm/accent/normal/29.ogg', 'sound/machines/sm/accent/normal/30.ogg', 'sound/machines/sm/accent/normal/31.ogg', 'sound/machines/sm/accent/normal/32.ogg', 'sound/machines/sm/accent/normal/33.ogg')
if("smdelam")
soundin = pick('sound/machines/sm/accent/delam/1.ogg', 'sound/machines/sm/accent/normal/2.ogg', 'sound/machines/sm/accent/normal/3.ogg', 'sound/machines/sm/accent/normal/4.ogg', 'sound/machines/sm/accent/normal/5.ogg', 'sound/machines/sm/accent/normal/6.ogg', 'sound/machines/sm/accent/normal/7.ogg', 'sound/machines/sm/accent/normal/8.ogg', 'sound/machines/sm/accent/normal/9.ogg', 'sound/machines/sm/accent/normal/10.ogg', 'sound/machines/sm/accent/normal/11.ogg', 'sound/machines/sm/accent/normal/12.ogg', 'sound/machines/sm/accent/normal/13.ogg', 'sound/machines/sm/accent/normal/14.ogg', 'sound/machines/sm/accent/normal/15.ogg', 'sound/machines/sm/accent/normal/16.ogg', 'sound/machines/sm/accent/normal/17.ogg', 'sound/machines/sm/accent/normal/18.ogg', 'sound/machines/sm/accent/normal/19.ogg', 'sound/machines/sm/accent/normal/20.ogg', 'sound/machines/sm/accent/normal/21.ogg', 'sound/machines/sm/accent/normal/22.ogg', 'sound/machines/sm/accent/normal/23.ogg', 'sound/machines/sm/accent/normal/24.ogg', 'sound/machines/sm/accent/normal/25.ogg', 'sound/machines/sm/accent/normal/26.ogg', 'sound/machines/sm/accent/normal/27.ogg', 'sound/machines/sm/accent/normal/28.ogg', 'sound/machines/sm/accent/normal/29.ogg', 'sound/machines/sm/accent/normal/30.ogg', 'sound/machines/sm/accent/normal/31.ogg', 'sound/machines/sm/accent/normal/32.ogg', 'sound/machines/sm/accent/normal/33.ogg')
//END OF CIT CHANGES
return soundin
+5 -2
View File
@@ -29,6 +29,9 @@
icon = 'icons/turf/walls.dmi'
explosion_block = 50
/turf/closed/indestructible/rust_heretic_act()
return
/turf/closed/indestructible/TerraformTurf(path, new_baseturf, flags, defer_change = FALSE, ignore_air = FALSE)
return
@@ -198,13 +201,13 @@
/turf/closed/indestructible/rock/glacierrock
name = "unaturally hard ice wall"
desc = "Ice, hardened over thousands of years, you're not breaking through this."
desc = "Ice, hardened over thousands of years, you're not breaking through this."
icon = 'icons/turf/walls.dmi'
icon_state = "snow_rock"
/turf/closed/indestructible/rock/glacierrock/blue
name = "blue ice wall"
desc = "The incredible compressive forces that formed this sturdy ice wall gave it a blue color."
desc = "The incredible compressive forces that formed this sturdy ice wall gave it a blue color."
icon = 'icons/turf/walls.dmi'
icon_state = "ice"
canSmoothWith = list(/turf/closed/indestructible/rock/glacierrock/blue)
+33 -52
View File
@@ -11,66 +11,47 @@ GLOBAL_DATUM_INIT(openspace_backdrop_one_for_all, /atom/movable/openspace_backdr
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
layer = SPLASHSCREEN_LAYER
/turf/open/openspace
/turf/open/transparent/openspace
name = "open space"
desc = "Watch your step!"
icon_state = "transparent"
baseturfs = /turf/open/openspace
baseturfs = /turf/open/transparent/openspace
CanAtmosPassVertical = ATMOS_PASS_YES
//mouse_opacity = MOUSE_OPACITY_TRANSPARENT
var/can_cover_up = TRUE
var/can_build_on = TRUE
/turf/open/openspace/debug/update_multiz()
/turf/open/transparent/openspace/airless
initial_gas_mix = AIRLESS_ATMOS
/turf/open/transparent/openspace/debug/update_multiz()
..()
return TRUE
/turf/open/openspace/Initialize() // handle plane and layer here so that they don't cover other obs/turfs in Dream Maker
///No bottom level for openspace.
/turf/open/transparent/openspace/show_bottom_level()
return FALSE
/turf/open/transparent/openspace/Initialize() // handle plane and layer here so that they don't cover other obs/turfs in Dream Maker
. = ..()
plane = OPENSPACE_PLANE
layer = OPENSPACE_LAYER
vis_contents += GLOB.openspace_backdrop_one_for_all //Special grey square for projecting backdrop darkness filter on it.
return INITIALIZE_HINT_LATELOAD
/turf/open/openspace/LateInitialize()
update_multiz(TRUE, TRUE)
/turf/open/transparent/openspace/can_have_cabling()
if(locate(/obj/structure/lattice/catwalk, src))
return TRUE
return FALSE
/turf/open/openspace/Destroy()
vis_contents.len = 0
return ..()
/turf/open/openspace/update_multiz(prune_on_fail = FALSE, init = FALSE)
. = ..()
var/turf/T = below()
if(!T)
vis_contents.len = 0
if(prune_on_fail)
ChangeTurf(/turf/open/floor/plating)
return FALSE
if(init)
vis_contents += T
/turf/open/transparent/openspace/zAirIn()
return TRUE
/turf/open/openspace/multiz_turf_del(turf/T, dir)
if(dir != DOWN)
return
update_multiz()
/turf/open/openspace/multiz_turf_new(turf/T, dir)
if(dir != DOWN)
return
update_multiz()
/turf/open/openspace/zAirIn()
/turf/open/transparent/openspace/zAirOut()
return TRUE
/turf/open/openspace/zAirOut()
/turf/open/transparent/openspace/zPassIn(atom/movable/A, direction, turf/source)
return TRUE
/turf/open/openspace/zPassIn(atom/movable/A, direction, turf/source)
return TRUE
/turf/open/openspace/zPassOut(atom/movable/A, direction, turf/destination)
/turf/open/transparent/openspace/zPassOut(atom/movable/A, direction, turf/destination)
if(A.anchored)
return FALSE
for(var/obj/O in contents)
@@ -78,13 +59,13 @@ GLOBAL_DATUM_INIT(openspace_backdrop_one_for_all, /atom/movable/openspace_backdr
return FALSE
return TRUE
/turf/open/openspace/proc/CanCoverUp()
/turf/open/transparent/openspace/proc/CanCoverUp()
return can_cover_up
/turf/open/openspace/proc/CanBuildHere()
/turf/open/transparent/openspace/proc/CanBuildHere()
return can_build_on
/turf/open/openspace/attackby(obj/item/C, mob/user, params)
/turf/open/transparent/openspace/attackby(obj/item/C, mob/user, params)
..()
if(!CanBuildHere())
return
@@ -98,14 +79,14 @@ GLOBAL_DATUM_INIT(openspace_backdrop_one_for_all, /atom/movable/openspace_backdr
if(L)
if(R.use(1))
to_chat(user, "<span class='notice'>You construct a catwalk.</span>")
playsound(src, 'sound/weapons/genhit.ogg', 50, 1)
playsound(src, 'sound/weapons/genhit.ogg', 50, TRUE)
new/obj/structure/lattice/catwalk(src)
else
to_chat(user, "<span class='warning'>You need two rods to build a catwalk!</span>")
return
if(R.use(1))
to_chat(user, "<span class='notice'>You construct a lattice.</span>")
playsound(src, 'sound/weapons/genhit.ogg', 50, 1)
playsound(src, 'sound/weapons/genhit.ogg', 50, TRUE)
ReplaceWithLattice()
else
to_chat(user, "<span class='warning'>You need one rod to build a lattice.</span>")
@@ -118,7 +99,7 @@ GLOBAL_DATUM_INIT(openspace_backdrop_one_for_all, /atom/movable/openspace_backdr
var/obj/item/stack/tile/plasteel/S = C
if(S.use(1))
qdel(L)
playsound(src, 'sound/weapons/genhit.ogg', 50, 1)
playsound(src, 'sound/weapons/genhit.ogg', 50, TRUE)
to_chat(user, "<span class='notice'>You build a floor.</span>")
PlaceOnTop(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR)
else
@@ -126,7 +107,7 @@ GLOBAL_DATUM_INIT(openspace_backdrop_one_for_all, /atom/movable/openspace_backdr
else
to_chat(user, "<span class='warning'>The plating is going to need some support! Place metal rods first.</span>")
/turf/open/openspace/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd)
/turf/open/transparent/openspace/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd)
if(!CanBuildHere())
return FALSE
@@ -139,7 +120,7 @@ GLOBAL_DATUM_INIT(openspace_backdrop_one_for_all, /atom/movable/openspace_backdr
return list("mode" = RCD_FLOORWALL, "delay" = 0, "cost" = 3)
return FALSE
/turf/open/openspace/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode)
/turf/open/transparent/openspace/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode)
switch(passed_mode)
if(RCD_FLOORWALL)
to_chat(user, "<span class='notice'>You build a floor.</span>")
@@ -147,12 +128,12 @@ GLOBAL_DATUM_INIT(openspace_backdrop_one_for_all, /atom/movable/openspace_backdr
return TRUE
return FALSE
/turf/open/openspace/icemoon
/turf/open/transparent/openspace/icemoon
name = "ice chasm"
baseturfs = /turf/open/openspace/icemoon
can_cover_up = FALSE
can_build_on = FALSE
baseturfs = /turf/open/transparent/openspace/icemoon
can_cover_up = TRUE
can_build_on = TRUE
initial_gas_mix = ICEMOON_DEFAULT_ATMOS
/turf/open/openspace/icemoon/can_zFall(atom/movable/A, levels = 1, turf/target)
/turf/open/transparent/openspace/icemoon/can_zFall(atom/movable/A, levels = 1, turf/target)
return TRUE
+95
View File
@@ -0,0 +1,95 @@
/turf/open/transparent
baseturfs = /turf/open/transparent/openspace
intact = FALSE //this means wires go on top
/turf/open/transparent/Initialize() // handle plane and layer here so that they don't cover other obs/turfs in Dream Maker
. = ..()
plane = OPENSPACE_PLANE
layer = OPENSPACE_LAYER
return INITIALIZE_HINT_LATELOAD
/turf/open/transparent/LateInitialize()
update_multiz(TRUE, TRUE)
/turf/open/transparent/Destroy()
vis_contents.len = 0
return ..()
/turf/open/transparent/update_multiz(prune_on_fail = FALSE, init = FALSE)
. = ..()
var/turf/T = below()
if(!T)
vis_contents.len = 0
if(!show_bottom_level() && prune_on_fail) //If we cant show whats below, and we prune on fail, change the turf to plating as a fallback
ChangeTurf(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR)
return FALSE
if(init)
vis_contents += T
return TRUE
/turf/open/transparent/multiz_turf_del(turf/T, dir)
if(dir != DOWN)
return
update_multiz()
/turf/open/transparent/multiz_turf_new(turf/T, dir)
if(dir != DOWN)
return
update_multiz()
///Called when there is no real turf below this turf
/turf/open/transparent/proc/show_bottom_level()
var/turf/path = SSmapping.level_trait(z, ZTRAIT_BASETURF) || /turf/open/space
if(!ispath(path))
path = text2path(path)
if(!ispath(path))
warning("Z-level [z] has invalid baseturf '[SSmapping.level_trait(z, ZTRAIT_BASETURF)]'")
path = /turf/open/space
var/mutable_appearance/underlay_appearance = mutable_appearance(initial(path.icon), initial(path.icon_state), layer = TURF_LAYER, plane = PLANE_SPACE)
underlays += underlay_appearance
return TRUE
/turf/open/transparent/glass
name = "Glass floor"
desc = "Dont jump on it, or do, I'm not your mom."
icon = 'icons/turf/floors/glass.dmi'
icon_state = "floor_glass"
smooth = SMOOTH_MORE
var/floor_tile = /obj/item/stack/sheet/glass
canSmoothWith = list(/turf/open/transparent/glass, /turf/open/transparent/glass/reinforced)
footstep = FOOTSTEP_PLATING
barefootstep = FOOTSTEP_HARD_BAREFOOT
clawfootstep = FOOTSTEP_HARD_CLAW
heavyfootstep = FOOTSTEP_GENERIC_HEAVY
/turf/open/transparent/glass/Initialize()
icon_state = "" //Prevent the normal icon from appearing behind the smooth overlays
return ..()
/turf/open/transparent/glass/wrench_act(mob/living/user, obj/item/I)
to_chat(user, "<span class='notice'>You begin removing glass...</span>")
if(I.use_tool(src, user, 30, volume=80))
if(!istype(src, /turf/open/transparent/glass))
return TRUE
if(floor_tile)
new floor_tile(src, 2)
ScrapeAway(flags = CHANGETURF_INHERIT_AIR)
return TRUE
/turf/open/transparent/glass/reinforced
name = "Reinforced glass floor"
desc = "Do jump on it, it can take it."
icon = 'icons/turf/floors/reinf_glass.dmi'
floor_tile = /obj/item/stack/sheet/rglass
/turf/open/transparent/glass/reinforced/wrench_act(mob/living/user, obj/item/I)
to_chat(user, "<span class='notice'>You begin removing reinforced glass...</span>")
if(I.use_tool(src, user, 30, volume=80))
if(!istype(src, /turf/open/transparent/glass/reinforced))
return TRUE
if(floor_tile)
new floor_tile(src, 2)
ScrapeAway(flags = CHANGETURF_INHERIT_AIR)
return TRUE
@@ -63,6 +63,11 @@
to_chat(user, "<span class='notice'>You forcefully pry off the planks, destroying them in the process.</span>")
return make_plating()
/turf/open/floor/wood/rust_heretic_act()
if(prob(70))
new /obj/effect/temp_visual/glowing_rune(src)
ChangeTurf(/turf/open/floor/plating/rust)
/turf/open/floor/wood/cold
temperature = 255.37
@@ -58,6 +58,12 @@
if(exposed_temperature > 300)
PlasmaBurn(exposed_temperature)
// Plasma floor that can't be removed, for disco
/turf/open/floor/mineral/plasma/disco
name = "disco floor"
/turf/open/floor/mineral/plasma/disco/crowbar_act(mob/living/user, obj/item/I)
return
//GOLD
+13 -1
View File
@@ -259,7 +259,7 @@
desc = "Some heavy bronze tiles."
icon = 'icons/obj/clockwork_objects.dmi'
icon_state = "clockwork_floor"
floor_tile = /obj/item/stack/tile/bronze
floor_tile = /obj/item/stack/sheet/bronze
/turf/open/floor/padded
name = "padded floor"
@@ -267,3 +267,15 @@
icon = 'icons/turf/floors.dmi'
icon_state = "floor_padded"
floor_tile = /obj/item/stack/tile/padded
/turf/open/floor/plating/rust
name = "rusted plating"
desc = "Corrupted steel."
icon_state = "plating_rust"
footstep = FOOTSTEP_RUST
barefootstep = FOOTSTEP_RUST
clawfootstep = FOOTSTEP_RUST
heavyfootstep = FOOTSTEP_RUST
/turf/open/floor/plating/rust/rust_heretic_act()
return
@@ -8,6 +8,11 @@
. = ..()
. += "<span class='notice'>There's a <b>small crack</b> on the edge of it.</span>"
/turf/open/floor/plasteel/rust_heretic_act()
if(prob(70))
new /obj/effect/temp_visual/glowing_rune(src)
ChangeTurf(/turf/open/floor/plating/rust)
/turf/open/floor/plasteel/update_icon()
if(!..())
return 0
@@ -66,6 +66,40 @@
R.use(2)
to_chat(user, "<span class='notice'>You reinforce the floor.</span>")
return
if(istype(C, /obj/item/stack/sheet/glass))
if(broken || burnt)
to_chat(user, "<span class='warning'>Repair the plating first!</span>")
return
var/obj/item/stack/sheet/glass/G = C
if (G.get_amount() < 2)
to_chat(user, "<span class='warning'>You need two glass sheets to make a glass floor!</span>")
return
else
to_chat(user, "<span class='notice'>You begin adding glass to the floor...</span>")
if(do_after(user, 5, target = src))
if (G.get_amount() >= 2 && !istype(src, /turf/open/transparent/glass))
PlaceOnTop(/turf/open/transparent/glass, flags = CHANGETURF_INHERIT_AIR)
playsound(src, 'sound/items/deconstruct.ogg', 80, 1)
G.use(2)
to_chat(user, "<span class='notice'>You add glass to the floor.</span>")
return
if(istype(C, /obj/item/stack/sheet/rglass))
if(broken || burnt)
to_chat(user, "<span class='warning'>Repair the plating first!</span>")
return
var/obj/item/stack/sheet/rglass/RG = C
if (RG.get_amount() < 2)
to_chat(user, "<span class='warning'>You need two reinforced glass sheets to make a reinforced glass floor!</span>")
return
else
to_chat(user, "<span class='notice'>You begin adding reinforced glass to the floor...</span>")
if(do_after(user, 10, target = src))
if (RG.get_amount() >= 2 && !istype(src, /turf/open/transparent/glass/reinforced))
PlaceOnTop(/turf/open/transparent/glass/reinforced, flags = CHANGETURF_INHERIT_AIR)
playsound(src, 'sound/items/deconstruct.ogg', 80, 1)
RG.use(2)
to_chat(user, "<span class='notice'>You add reinforced glass to the floor.</span>")
return
else if(istype(C, /obj/item/stack/tile))
if(!broken && !burnt)
for(var/obj/O in src)
@@ -98,6 +132,11 @@
return TRUE
/turf/open/floor/plating/rust_heretic_act()
if(prob(70))
new /obj/effect/temp_visual/glowing_rune(src)
ChangeTurf(/turf/open/floor/plating/rust)
/turf/open/floor/plating/make_plating()
return
@@ -192,6 +192,7 @@
icon_state = "map-shuttle"
explosion_block = 3
flags_1 = CAN_BE_DIRTY_1 | DEFAULT_RICOCHET_1
flags_ricochet = RICOCHET_SHINY | RICOCHET_HARD
sheet_type = /obj/item/stack/sheet/mineral/titanium
smooth = SMOOTH_MORE|SMOOTH_DIAGONAL
canSmoothWith = list(/turf/closed/wall/mineral/titanium, /obj/machinery/door/airlock/shuttle, /obj/machinery/door/airlock, /obj/structure/window/shuttle, /obj/structure/shuttle/engine/heater, /obj/structure/falsewall/titanium)
+9 -1
View File
@@ -188,17 +188,25 @@
icon = 'icons/turf/walls/rusty_wall.dmi'
hardness = 45
/turf/closed/wall/rust/rust_heretic_act()
ScrapeAway()
/turf/closed/wall/r_wall/rust
name = "rusted reinforced wall"
desc = "A huge chunk of rusted reinforced metal."
icon = 'icons/turf/walls/rusty_reinforced_wall.dmi'
hardness = 15
/turf/closed/wall/r_wall/rust/rust_heretic_act()
if(prob(50))
return
ScrapeAway()
/turf/closed/wall/mineral/bronze
name = "clockwork wall"
desc = "A huge chunk of bronze, decorated like gears and cogs."
icon = 'icons/turf/walls/clockwork_wall.dmi'
icon_state = "clockwork_wall"
sheet_type = /obj/item/stack/tile/bronze
sheet_type = /obj/item/stack/sheet/bronze
sheet_amount = 2
girder_type = /obj/structure/girder/bronze
@@ -235,6 +235,13 @@
if(the_rcd.canRturf)
return ..()
/turf/closed/wall/r_wall/rust_heretic_act()
if(prob(50))
return
if(prob(70))
new /obj/effect/temp_visual/glowing_rune(src)
ChangeTurf(/turf/closed/wall/r_wall/rust)
/turf/closed/wall/r_wall/syndicate
name = "hull"
desc = "The armored hull of an ominous looking ship."
+7 -1
View File
@@ -6,7 +6,8 @@
icon = 'icons/turf/walls/wall.dmi'
icon_state = "wall"
explosion_block = 1
flags_1 = DEFAULT_RICOCHET_1
flags_ricochet = RICOCHET_HARD
thermal_conductivity = WALL_HEAT_TRANSFER_COEFFICIENT
heat_capacity = 312500 //a little over 5 cm thick , 312500 for 1 m by 2.5 m by 0.25 m plasteel wall
attack_hand_speed = 8
@@ -324,4 +325,9 @@
add_overlay(dent_decals)
/turf/closed/wall/rust_heretic_act()
if(prob(70))
new /obj/effect/temp_visual/glowing_rune(src)
ChangeTurf(/turf/closed/wall/rust)
#undef MAX_DENT_DECALS
@@ -14,6 +14,8 @@ GLOBAL_LIST_EMPTY(antagonists)
var/list/objectives = list()
var/antag_memory = ""//These will be removed with antag datum
var/antag_moodlet //typepath of moodlet that the mob will gain with their status
var/antag_hud_type
var/antag_hud_name
/// If above 0, this is the multiplier for the speed at which we hijack the shuttle. Do not directly read, use hijack_speed().
var/hijack_speed = 0
@@ -77,6 +79,17 @@ GLOBAL_LIST_EMPTY(antagonists)
hud.leave_hud(mob_override)
set_antag_hud(mob_override, null)
// Handles adding and removing the clumsy mutation from clown antags. Gets called in apply/remove_innate_effects
/datum/antagonist/proc/handle_clown_mutation(mob/living/mob_override, message, removing = TRUE)
var/mob/living/carbon/human/H = mob_override
if(H && istype(H) && owner.assigned_role == "Clown")
if(removing) // They're a clown becoming an antag, remove clumsy
H.dna.remove_mutation(CLOWNMUT)
if(!silent && message)
to_chat(H, "<span class='boldnotice'>[message]</span>")
else
H.dna.add_mutation(CLOWNMUT) // We're removing their antag status, add back clumsy
//Assign default team and creates one for one of a kind team antagonists
/datum/antagonist/proc/create_team(datum/team/team)
return
@@ -37,14 +37,14 @@ GLOBAL_LIST_INIT(abductor_gear, subtypesof(/datum/abductor_gear))
description = "A dual-mode tool for retrieving specimens and scanning appearances. Scanning can be done through cameras."
id = "science_tool"
build_path = /obj/item/abductor/gizmo
/*
/datum/abductor_gear/advanced_baton
name = "Advanced Baton"
description = "A quad-mode baton used for incapacitation and restraining of specimens."
id = "advanced_baton"
cost = 2
build_path = /obj/item/melee/baton/abductor //does not exist?
*/
build_path = /obj/item/abductor/baton //does not exist?
/datum/abductor_gear/superlingual_matrix
name = "Superlingual Matrix"
description = "A mysterious structure that allows for instant communication between users. Pretty impressive until you need to eat something."
@@ -30,6 +30,22 @@
/// Possible gear to be dispensed
var/list/possible_gear
/obj/machinery/abductor/console/Initialize(mapload)
. = ..()
possible_gear = get_abductor_gear()
/**
* get_abductor_gear: Returns a list of a filtered abductor gear sorted by categories
*/
/obj/machinery/abductor/console/proc/get_abductor_gear()
var/list/filtered_modules = list()
for(var/path in GLOB.abductor_gear)
var/datum/abductor_gear/AG = new path
if(!filtered_modules[AG.category])
filtered_modules[AG.category] = list()
filtered_modules[AG.category][AG] = AG
return filtered_modules
/obj/machinery/abductor/console/on_attack_hand(mob/user, act_intent = user.a_intent, unarmed_attack_flags)
if(!HAS_TRAIT(user, TRAIT_ABDUCTOR_TRAINING) && !HAS_TRAIT(user.mind, TRAIT_ABDUCTOR_TRAINING))
to_chat(user, "<span class='warning'>You start mashing alien buttons at random!</span>")

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