mirror of
https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13.git
synced 2025-12-09 16:07:40 +00:00
Forgot about not versioned files.
This commit is contained in:
755
_maps/RandomRuins/LavaRuins/lavaland_surface_wizard.dmm
Normal file
755
_maps/RandomRuins/LavaRuins/lavaland_surface_wizard.dmm
Normal file
@@ -0,0 +1,755 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/turf/closed/mineral/volcanic/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"b" = (
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"c" = (
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"d" = (
|
||||
/obj/structure/stone_tile/slab,
|
||||
/turf/closed/mineral/volcanic/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"e" = (
|
||||
/obj/structure/stone_tile,
|
||||
/obj/structure/stone_tile{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/stone_tile/cracked{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/stone_tile/cracked{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/indestructible/boss/air,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"f" = (
|
||||
/obj/structure/stone_tile/block,
|
||||
/obj/structure/stone_tile{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/stone_tile{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/indestructible/boss/air,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"g" = (
|
||||
/obj/structure/stone_tile/block,
|
||||
/obj/structure/stone_tile{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/stone_tile{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/decal/cleanable/blood,
|
||||
/turf/open/indestructible/boss/air,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"h" = (
|
||||
/obj/structure/stone_tile/block,
|
||||
/obj/structure/stone_tile/cracked{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/stone_tile{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/indestructible/boss/air,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"i" = (
|
||||
/obj/structure/stone_tile,
|
||||
/obj/structure/stone_tile{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/stone_tile/cracked{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/stone_tile/cracked{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/indestructible/boss/air,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"j" = (
|
||||
/obj/structure/stone_tile/block/cracked{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/stone_tile/cracked{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/stone_tile{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/indestructible/boss/air,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"k" = (
|
||||
/obj/structure/stone_tile/surrounding_tile/cracked,
|
||||
/obj/structure/stone_tile/center,
|
||||
/obj/structure/stone_tile/surrounding_tile{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/stone_tile/surrounding_tile{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/indestructible/necropolis,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"l" = (
|
||||
/obj/structure/stone_tile/block/cracked,
|
||||
/turf/open/indestructible/necropolis,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"m" = (
|
||||
/obj/structure/stone_tile/surrounding_tile/cracked,
|
||||
/obj/structure/stone_tile/surrounding_tile/cracked{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/stone_tile/center,
|
||||
/obj/structure/stone_tile/surrounding_tile{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/indestructible/necropolis,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"n" = (
|
||||
/obj/structure/stone_tile/block/cracked{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/stone_tile/cracked{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/stone_tile,
|
||||
/turf/open/indestructible/boss/air,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"o" = (
|
||||
/obj/structure/stone_tile/block{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/stone_tile{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/stone_tile{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/decal/cleanable/blood,
|
||||
/turf/open/indestructible/boss/air,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"p" = (
|
||||
/obj/structure/stone_tile/block/cracked{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/table/bronze,
|
||||
/obj/item/disk/design_disk/adv/knight_gear,
|
||||
/turf/open/indestructible/necropolis,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"q" = (
|
||||
/obj/structure/table/bronze,
|
||||
/obj/item/stack/sheet/mineral/runite{
|
||||
amount = 5
|
||||
},
|
||||
/turf/open/indestructible/necropolis,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"r" = (
|
||||
/obj/structure/stone_tile/block{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/table/bronze,
|
||||
/obj/item/stack/sheet/mineral/runite{
|
||||
amount = 5
|
||||
},
|
||||
/turf/open/indestructible/necropolis,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"s" = (
|
||||
/obj/structure/stone_tile/block{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/stone_tile,
|
||||
/obj/structure/stone_tile{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/indestructible/boss/air,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"t" = (
|
||||
/obj/structure/stone_tile/block{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/stone_tile{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/stone_tile{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/indestructible/boss/air,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"u" = (
|
||||
/obj/structure/stone_tile/surrounding_tile/cracked{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/stone_tile/center/cracked,
|
||||
/obj/structure/stone_tile/surrounding_tile,
|
||||
/obj/structure/stone_tile/surrounding_tile{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/indestructible/necropolis,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"v" = (
|
||||
/obj/structure/stone_tile/block{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/indestructible/necropolis,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"w" = (
|
||||
/obj/structure/stone_tile/surrounding_tile/cracked{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/stone_tile/center,
|
||||
/obj/structure/stone_tile/surrounding_tile{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/stone_tile/surrounding_tile{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/indestructible/necropolis,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"x" = (
|
||||
/obj/structure/stone_tile/block{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/stone_tile/cracked{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/stone_tile,
|
||||
/turf/open/indestructible/boss/air,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"y" = (
|
||||
/obj/structure/stone_tile,
|
||||
/obj/structure/stone_tile{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/stone_tile{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/stone_tile{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/indestructible/boss/air,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"z" = (
|
||||
/obj/structure/stone_tile/block{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/stone_tile/cracked,
|
||||
/obj/structure/stone_tile{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/indestructible/boss/air,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"A" = (
|
||||
/obj/structure/stone_tile/slab/cracked,
|
||||
/turf/open/indestructible/boss/air,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"B" = (
|
||||
/obj/structure/stone_tile/block/cracked{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/stone_tile{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/stone_tile,
|
||||
/obj/effect/decal/cleanable/blood,
|
||||
/turf/open/indestructible/boss/air,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"C" = (
|
||||
/obj/structure/stone_tile,
|
||||
/obj/structure/stone_tile{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/stone_tile{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/stone_tile/cracked{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/indestructible/boss/air,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"D" = (
|
||||
/turf/closed/indestructible/riveted/boss,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"E" = (
|
||||
/obj/structure/stone_tile/block{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/stone_tile/block/cracked{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/indestructible/boss/air,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"F" = (
|
||||
/obj/structure/stone_tile/slab,
|
||||
/obj/effect/mapping_helpers/no_lava,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"G" = (
|
||||
/turf/closed/indestructible/riveted/boss/see_through,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"H" = (
|
||||
/obj/structure/necropolis_gate,
|
||||
/obj/structure/stone_tile/block{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/stone_tile/block/cracked{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/fans/tiny/invisible,
|
||||
/obj/effect/decal/cleanable/blood,
|
||||
/turf/open/indestructible/boss/air,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"I" = (
|
||||
/obj/structure/stone_tile/slab/cracked,
|
||||
/turf/closed/mineral/volcanic/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"J" = (
|
||||
/obj/structure/fluff/divine/convertaltar,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"K" = (
|
||||
/mob/living/simple_animal/hostile/dark_wizard,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors)
|
||||
|
||||
(1,1,1) = {"
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
c
|
||||
c
|
||||
a
|
||||
a
|
||||
a
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
c
|
||||
c
|
||||
a
|
||||
a
|
||||
a
|
||||
c
|
||||
c
|
||||
a
|
||||
a
|
||||
c
|
||||
c
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
c
|
||||
c
|
||||
c
|
||||
a
|
||||
d
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
F
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
c
|
||||
c
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
D
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
c
|
||||
c
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
e
|
||||
j
|
||||
o
|
||||
t
|
||||
y
|
||||
D
|
||||
D
|
||||
b
|
||||
K
|
||||
b
|
||||
b
|
||||
b
|
||||
K
|
||||
a
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
c
|
||||
c
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
f
|
||||
k
|
||||
p
|
||||
u
|
||||
z
|
||||
D
|
||||
G
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
c
|
||||
c
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
g
|
||||
l
|
||||
q
|
||||
v
|
||||
A
|
||||
E
|
||||
H
|
||||
b
|
||||
b
|
||||
b
|
||||
J
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(12,1,1) = {"
|
||||
c
|
||||
c
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
h
|
||||
m
|
||||
r
|
||||
w
|
||||
B
|
||||
D
|
||||
G
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(13,1,1) = {"
|
||||
c
|
||||
c
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
i
|
||||
n
|
||||
s
|
||||
x
|
||||
C
|
||||
D
|
||||
D
|
||||
b
|
||||
K
|
||||
b
|
||||
b
|
||||
b
|
||||
K
|
||||
a
|
||||
"}
|
||||
(14,1,1) = {"
|
||||
c
|
||||
c
|
||||
c
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
D
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(15,1,1) = {"
|
||||
c
|
||||
c
|
||||
c
|
||||
a
|
||||
d
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
I
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(16,1,1) = {"
|
||||
c
|
||||
c
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
c
|
||||
c
|
||||
c
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
"}
|
||||
(17,1,1) = {"
|
||||
c
|
||||
c
|
||||
a
|
||||
a
|
||||
a
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
c
|
||||
"}
|
||||
(18,1,1) = {"
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
"}
|
||||
(19,1,1) = {"
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
"}
|
||||
(20,1,1) = {"
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
"}
|
||||
579
_maps/RandomRuins/SpaceRuins/clericden.dmm
Normal file
579
_maps/RandomRuins/SpaceRuins/clericden.dmm
Normal file
@@ -0,0 +1,579 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"b" = (
|
||||
/turf/closed/mineral/random/no_caves,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"c" = (
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"d" = (
|
||||
/turf/closed/wall,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"e" = (
|
||||
/turf/closed/wall/rust,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"f" = (
|
||||
/obj/item/stack/rods{
|
||||
amount = 2
|
||||
},
|
||||
/obj/item/shard,
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"g" = (
|
||||
/obj/structure/grille,
|
||||
/obj/structure/window/fulltile,
|
||||
/turf/open/floor/plating,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"h" = (
|
||||
/obj/structure/grille/broken,
|
||||
/obj/structure/barricade/wooden/crude,
|
||||
/obj/structure/trap/cult,
|
||||
/obj/effect/decal/cleanable/glass,
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"i" = (
|
||||
/obj/structure/light_prism,
|
||||
/turf/open/floor/plasteel/airless/dark,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"j" = (
|
||||
/obj/effect/decal/cleanable/blood/drip,
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"k" = (
|
||||
/obj/item/ectoplasm,
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"l" = (
|
||||
/obj/structure/closet/crate/coffin,
|
||||
/turf/open/floor/plasteel/airless/dark,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"m" = (
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"n" = (
|
||||
/turf/open/floor/carpet/royalblack/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"o" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/holywater,
|
||||
/turf/open/floor/carpet/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"p" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/melee/cleric_mace,
|
||||
/turf/open/floor/carpet/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"q" = (
|
||||
/obj/effect/decal/cleanable/shreds,
|
||||
/turf/open/floor/carpet/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"r" = (
|
||||
/obj/effect/decal/cleanable/shreds,
|
||||
/obj/effect/decal/remains/human,
|
||||
/obj/item/disk/design_disk/adv/cleric_mace,
|
||||
/obj/structure/trap/cult,
|
||||
/turf/open/floor/carpet/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"s" = (
|
||||
/obj/effect/decal/cleanable/shreds,
|
||||
/turf/open/floor/carpet/royalblack/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"t" = (
|
||||
/turf/open/floor/carpet/royalblue/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"u" = (
|
||||
/turf/open/floor/carpet/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"v" = (
|
||||
/obj/effect/decal/cleanable/blood/splatter,
|
||||
/obj/effect/decal/cleanable/blood/footprints,
|
||||
/obj/effect/decal/cleanable/shreds,
|
||||
/turf/open/floor/carpet/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"w" = (
|
||||
/obj/effect/decal/cleanable/blood/drip,
|
||||
/turf/open/floor/carpet/royalblack/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"x" = (
|
||||
/obj/structure/bonfire,
|
||||
/turf/open/floor/plasteel/airless/dark,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"y" = (
|
||||
/obj/effect/decal/cleanable/blood/tracks,
|
||||
/turf/open/floor/carpet/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"z" = (
|
||||
/obj/item/paper/fluff/ruins/clericsden/contact,
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"A" = (
|
||||
/obj/structure/table/wood{
|
||||
layer = 3.3
|
||||
},
|
||||
/turf/open/floor/carpet/royalblack/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"B" = (
|
||||
/obj/effect/decal/cleanable/blood/footprints,
|
||||
/obj/effect/decal/cleanable/blood/tracks,
|
||||
/turf/open/floor/carpet/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"C" = (
|
||||
/obj/structure/chair/wood{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/carpet/royalblue/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"D" = (
|
||||
/obj/effect/decal/remains/human,
|
||||
/obj/structure/trap/cult,
|
||||
/turf/open/floor/carpet/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"E" = (
|
||||
/obj/effect/decal/cleanable/blood/tracks,
|
||||
/mob/living/simple_animal/hostile/construct/proteon/hostile,
|
||||
/turf/open/floor/carpet/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"F" = (
|
||||
/obj/item/flashlight/flare/torch,
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"G" = (
|
||||
/obj/effect/decal/cleanable/blood/tracks,
|
||||
/obj/structure/trap/cult,
|
||||
/turf/open/floor/carpet/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"H" = (
|
||||
/obj/structure/light_prism,
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"I" = (
|
||||
/obj/effect/decal/cleanable/blood/drip,
|
||||
/turf/open/floor/carpet/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"J" = (
|
||||
/obj/structure/rack,
|
||||
/obj/item/tank/internals/emergency_oxygen,
|
||||
/obj/item/clothing/mask/breath,
|
||||
/turf/open/floor/plasteel/airless/dark,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"K" = (
|
||||
/obj/structure/grille,
|
||||
/obj/structure/window/fulltile,
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"L" = (
|
||||
/obj/machinery/door/airlock/wood,
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"M" = (
|
||||
/obj/effect/decal/cleanable/blood/tracks,
|
||||
/obj/machinery/door/airlock/wood,
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"N" = (
|
||||
/mob/living/simple_animal/hostile/construct/proteon,
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"O" = (
|
||||
/obj/structure/grille,
|
||||
/obj/structure/window/fulltile,
|
||||
/obj/structure/barricade/wooden/crude,
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"Q" = (
|
||||
/obj/item/storage/book/bible,
|
||||
/obj/effect/decal/cleanable/blood,
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"S" = (
|
||||
/obj/effect/decal/cleanable/blood/drip,
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"U" = (
|
||||
/obj/effect/decal/remains/human,
|
||||
/obj/item/paper/fluff/ruins/clericsden/warning,
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
|
||||
(1,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
c
|
||||
b
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
b
|
||||
c
|
||||
c
|
||||
b
|
||||
c
|
||||
c
|
||||
a
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
a
|
||||
c
|
||||
b
|
||||
c
|
||||
c
|
||||
b
|
||||
c
|
||||
b
|
||||
c
|
||||
c
|
||||
b
|
||||
b
|
||||
b
|
||||
c
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
c
|
||||
a
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
a
|
||||
b
|
||||
d
|
||||
d
|
||||
e
|
||||
d
|
||||
e
|
||||
K
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
e
|
||||
c
|
||||
c
|
||||
a
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
a
|
||||
b
|
||||
e
|
||||
i
|
||||
l
|
||||
e
|
||||
x
|
||||
m
|
||||
e
|
||||
x
|
||||
m
|
||||
e
|
||||
m
|
||||
J
|
||||
d
|
||||
e
|
||||
b
|
||||
a
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
a
|
||||
a
|
||||
e
|
||||
j
|
||||
n
|
||||
n
|
||||
t
|
||||
w
|
||||
A
|
||||
C
|
||||
n
|
||||
A
|
||||
C
|
||||
n
|
||||
H
|
||||
e
|
||||
d
|
||||
a
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
a
|
||||
f
|
||||
h
|
||||
m
|
||||
o
|
||||
q
|
||||
u
|
||||
u
|
||||
u
|
||||
D
|
||||
u
|
||||
u
|
||||
u
|
||||
u
|
||||
I
|
||||
L
|
||||
c
|
||||
c
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
a
|
||||
b
|
||||
g
|
||||
m
|
||||
p
|
||||
r
|
||||
v
|
||||
y
|
||||
B
|
||||
E
|
||||
B
|
||||
y
|
||||
B
|
||||
G
|
||||
B
|
||||
M
|
||||
U
|
||||
S
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
a
|
||||
b
|
||||
d
|
||||
m
|
||||
n
|
||||
s
|
||||
t
|
||||
n
|
||||
A
|
||||
C
|
||||
n
|
||||
A
|
||||
C
|
||||
n
|
||||
H
|
||||
d
|
||||
e
|
||||
c
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
a
|
||||
c
|
||||
e
|
||||
i
|
||||
l
|
||||
d
|
||||
x
|
||||
z
|
||||
e
|
||||
x
|
||||
F
|
||||
e
|
||||
m
|
||||
J
|
||||
e
|
||||
d
|
||||
b
|
||||
b
|
||||
"}
|
||||
(12,1,1) = {"
|
||||
a
|
||||
a
|
||||
e
|
||||
e
|
||||
d
|
||||
d
|
||||
e
|
||||
O
|
||||
d
|
||||
d
|
||||
d
|
||||
e
|
||||
e
|
||||
d
|
||||
d
|
||||
b
|
||||
b
|
||||
c
|
||||
"}
|
||||
(13,1,1) = {"
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
c
|
||||
c
|
||||
"}
|
||||
(14,1,1) = {"
|
||||
a
|
||||
c
|
||||
b
|
||||
b
|
||||
b
|
||||
c
|
||||
b
|
||||
b
|
||||
c
|
||||
b
|
||||
c
|
||||
Q
|
||||
b
|
||||
b
|
||||
b
|
||||
c
|
||||
S
|
||||
a
|
||||
"}
|
||||
(15,1,1) = {"
|
||||
a
|
||||
a
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
N
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
S
|
||||
c
|
||||
c
|
||||
a
|
||||
a
|
||||
"}
|
||||
(16,1,1) = {"
|
||||
a
|
||||
a
|
||||
k
|
||||
c
|
||||
b
|
||||
b
|
||||
c
|
||||
c
|
||||
b
|
||||
c
|
||||
c
|
||||
b
|
||||
c
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
"}
|
||||
(17,1,1) = {"
|
||||
a
|
||||
b
|
||||
c
|
||||
b
|
||||
c
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
c
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(18,1,1) = {"
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(19,1,1) = {"
|
||||
a
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
14
code/__DEFINES/materials.dm
Normal file
14
code/__DEFINES/materials.dm
Normal file
@@ -0,0 +1,14 @@
|
||||
/// Is the material from an ore? currently unused but exists atm for categorizations sake
|
||||
#define MAT_CATEGORY_ORE "ore capable"
|
||||
|
||||
/// Hard materials, such as iron or metal
|
||||
#define MAT_CATEGORY_RIGID "rigid material"
|
||||
|
||||
|
||||
/// Gets the reference for the material type that was given
|
||||
#define getmaterialref(A) (SSmaterials.materials[A] || A)
|
||||
|
||||
/// Flag for atoms, this flag ensures it isn't re-colored by materials. Useful for snowflake icons such as default toolboxes.
|
||||
#define MATERIAL_COLOR (1<<0)
|
||||
#define MATERIAL_ADD_PREFIX (1<<1)
|
||||
#define MATERIAL_NO_EFFECTS (1<<2)
|
||||
27
code/controllers/subsystem/materials.dm
Normal file
27
code/controllers/subsystem/materials.dm
Normal file
@@ -0,0 +1,27 @@
|
||||
/*! How material datums work
|
||||
Materials are now instanced datums, with an associative list of them being kept in SSmaterials. We only instance the materials once and then re-use these instances for everything.
|
||||
These materials call on_applied() on whatever item they are applied to, common effects are adding components, changing color and changing description. This allows us to differentiate items based on the material they are made out of.area
|
||||
*/
|
||||
|
||||
SUBSYSTEM_DEF(materials)
|
||||
name = "Materials"
|
||||
flags = SS_NO_FIRE
|
||||
init_order = INIT_ORDER_MATERIALS
|
||||
///Dictionary of material.type || material ref
|
||||
var/list/materials = list()
|
||||
///Dictionary of category || list of material refs
|
||||
var/list/materials_by_category = list()
|
||||
///List of stackcrafting recipes for materials using rigid materials
|
||||
var/list/rigid_stack_recipes = list(new/datum/stack_recipe("chair", /obj/structure/chair/greyscale, one_per_turf = TRUE, on_floor = TRUE, applies_mats = TRUE))
|
||||
|
||||
/datum/controller/subsystem/materials/Initialize(timeofday)
|
||||
InitializeMaterials()
|
||||
return ..()
|
||||
|
||||
///Ran on initialize, populated the materials and materials_by_category dictionaries with their appropiate vars (See these variables for more info)
|
||||
/datum/controller/subsystem/materials/proc/InitializeMaterials(timeofday)
|
||||
for(var/type in subtypesof(/datum/material))
|
||||
var/datum/material/ref = new type
|
||||
materials[type] = ref
|
||||
for(var/c in ref.categories)
|
||||
materials_by_category[c] += list(ref)
|
||||
105
code/datums/components/explodable.dm
Normal file
105
code/datums/components/explodable.dm
Normal file
@@ -0,0 +1,105 @@
|
||||
///Component specifically for explosion sensetive things, currently only applies to heat based explosions but can later perhaps be used for things that are dangerous to handle carelessly like nitroglycerin.
|
||||
/datum/component/explodable
|
||||
var/devastation_range = 0
|
||||
var/heavy_impact_range = 0
|
||||
var/light_impact_range = 2
|
||||
var/flash_range = 3
|
||||
var/equipped_slot //For items, lets us determine where things should be hit.
|
||||
|
||||
/datum/component/explodable/Initialize(devastation_range_override, heavy_impact_range_override, light_impact_range_override, flash_range_override)
|
||||
if(!isatom(parent))
|
||||
return COMPONENT_INCOMPATIBLE
|
||||
|
||||
RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/explodable_attack)
|
||||
RegisterSignal(parent, COMSIG_TRY_STORAGE_INSERT, .proc/explodable_insert_item)
|
||||
RegisterSignal(parent, COMSIG_ATOM_EX_ACT, .proc/detonate)
|
||||
if(ismovableatom(parent))
|
||||
RegisterSignal(parent, COMSIG_MOVABLE_IMPACT, .proc/explodable_impact)
|
||||
RegisterSignal(parent, COMSIG_MOVABLE_BUMP, .proc/explodable_bump)
|
||||
if(isitem(parent))
|
||||
RegisterSignal(parent, list(COMSIG_ITEM_ATTACK, COMSIG_ITEM_ATTACK_OBJ, COMSIG_ITEM_HIT_REACT), .proc/explodable_attack)
|
||||
RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/on_equip)
|
||||
RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/on_drop)
|
||||
|
||||
|
||||
|
||||
if(devastation_range_override)
|
||||
devastation_range = devastation_range_override
|
||||
if(heavy_impact_range_override)
|
||||
heavy_impact_range = heavy_impact_range_override
|
||||
if(light_impact_range_override)
|
||||
light_impact_range = light_impact_range_override
|
||||
if(flash_range_override)
|
||||
flash_range = flash_range_override
|
||||
|
||||
/datum/component/explodable/proc/explodable_insert_item(datum/source, obj/item/I, mob/M, silent = FALSE, force = FALSE)
|
||||
check_if_detonate(I)
|
||||
|
||||
/datum/component/explodable/proc/explodable_impact(datum/source, atom/hit_atom, datum/thrownthing/throwingdatum)
|
||||
check_if_detonate(hit_atom)
|
||||
|
||||
/datum/component/explodable/proc/explodable_bump(datum/source, atom/A)
|
||||
check_if_detonate(A)
|
||||
|
||||
///Called when you use this object to attack sopmething
|
||||
/datum/component/explodable/proc/explodable_attack(datum/source, atom/movable/target, mob/living/user)
|
||||
check_if_detonate(target)
|
||||
|
||||
///Called when you attack a specific body part of the thing this is equipped on. Useful for exploding pants.
|
||||
/datum/component/explodable/proc/explodable_attack_zone(datum/source, damage, damagetype, def_zone)
|
||||
if(!def_zone)
|
||||
return
|
||||
if(damagetype != BURN) //Don't bother if it's not fire.
|
||||
return
|
||||
if(!is_hitting_zone(def_zone)) //You didn't hit us! ha!
|
||||
return
|
||||
detonate()
|
||||
|
||||
/datum/component/explodable/proc/on_equip(datum/source, mob/equipper, slot)
|
||||
RegisterSignal(equipper, COMSIG_MOB_APPLY_DAMGE, .proc/explodable_attack_zone, TRUE)
|
||||
|
||||
/datum/component/explodable/proc/on_drop(datum/source, mob/user)
|
||||
UnregisterSignal(user, COMSIG_MOB_APPLY_DAMGE)
|
||||
|
||||
/// Checks if we're hitting the zone this component is covering
|
||||
/datum/component/explodable/proc/is_hitting_zone(def_zone)
|
||||
var/obj/item/item = parent
|
||||
var/mob/living/L = item.loc //Get whoever is equipping the item currently
|
||||
|
||||
if(!istype(L))
|
||||
return
|
||||
|
||||
var/obj/item/bodypart/bodypart = L.get_bodypart(check_zone(def_zone))
|
||||
|
||||
var/list/equipment_items = list()
|
||||
if(iscarbon(L))
|
||||
var/mob/living/carbon/C = L
|
||||
equipment_items += list(C.head, C.wear_mask, C.back, C.gloves, C.shoes, C.glasses, C.ears)
|
||||
if(ishuman(C))
|
||||
var/mob/living/carbon/human/H = C
|
||||
equipment_items += list(H.wear_suit, H.w_uniform, H.belt, H.s_store, H.wear_id)
|
||||
|
||||
for(var/bp in equipment_items)
|
||||
if(!bp)
|
||||
continue
|
||||
|
||||
var/obj/item/I = bp
|
||||
if(I.body_parts_covered & bodypart.body_part)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
|
||||
/datum/component/explodable/proc/check_if_detonate(target)
|
||||
if(!isitem(target))
|
||||
return
|
||||
var/obj/item/I = target
|
||||
if(!I.get_temperature())
|
||||
return
|
||||
detonate() //If we're touching a hot item we go boom
|
||||
|
||||
|
||||
/// Expldoe and remove the object
|
||||
/datum/component/explodable/proc/detonate()
|
||||
var/atom/A = parent
|
||||
explosion(A, devastation_range, heavy_impact_range, light_impact_range, flash_range) //epic explosion time
|
||||
qdel(A)
|
||||
40
code/datums/elements/firestacker.dm
Normal file
40
code/datums/elements/firestacker.dm
Normal file
@@ -0,0 +1,40 @@
|
||||
/**
|
||||
* Can be applied to /atom/movable subtypes to make them apply fire stacks to things they hit
|
||||
*/
|
||||
/datum/element/firestacker
|
||||
element_flags = ELEMENT_BESPOKE
|
||||
id_arg_index = 2
|
||||
/// How many firestacks to apply per hit
|
||||
var/amount
|
||||
|
||||
/datum/element/firestacker/Attach(datum/target, amount)
|
||||
. = ..()
|
||||
|
||||
if(!ismovableatom(target))
|
||||
return ELEMENT_INCOMPATIBLE
|
||||
|
||||
src.amount = amount
|
||||
|
||||
RegisterSignal(target, COMSIG_MOVABLE_IMPACT, .proc/impact, override = TRUE)
|
||||
if(isitem(target))
|
||||
RegisterSignal(target, COMSIG_ITEM_ATTACK, .proc/item_attack, override = TRUE)
|
||||
RegisterSignal(target, COMSIG_ITEM_ATTACK_SELF, .proc/item_attack_self, override = TRUE)
|
||||
|
||||
/datum/element/firestacker/Detach(datum/source, force)
|
||||
. = ..()
|
||||
UnregisterSignal(source, list(COMSIG_MOVABLE_IMPACT, COMSIG_ITEM_ATTACK, COMSIG_ITEM_ATTACK_SELF))
|
||||
|
||||
/datum/element/firestacker/proc/stack_on(datum/owner, mob/living/target)
|
||||
target.adjust_fire_stacks(amount)
|
||||
|
||||
/datum/element/firestacker/proc/impact(datum/source, atom/hit_atom, datum/thrownthing/throwingdatum)
|
||||
if(isliving(hit_atom))
|
||||
stack_on(source, hit_atom)
|
||||
|
||||
/datum/element/firestacker/proc/item_attack(datum/source, atom/movable/target, mob/living/user)
|
||||
if(isliving(target))
|
||||
stack_on(source, target)
|
||||
|
||||
/datum/element/firestacker/proc/item_attack_self(datum/source, mob/user)
|
||||
if(isliving(user))
|
||||
stack_on(source, user)
|
||||
77
code/datums/materials/_material.dm
Normal file
77
code/datums/materials/_material.dm
Normal file
@@ -0,0 +1,77 @@
|
||||
/*! Material datum
|
||||
Simple datum which is instanced once per type and is used for every object of said material. It has a variety of variables that define behavior. Subtyping from this makes it easier to create your own materials.
|
||||
*/
|
||||
|
||||
|
||||
/datum/material
|
||||
var/name = "material"
|
||||
var/desc = "its..stuff."
|
||||
///Var that's mostly used by science machines to identify specific materials, should most likely be phased out at some point
|
||||
var/id = "mat"
|
||||
///Base color of the material, is used for greyscale. Item isn't changed in color if this is null.
|
||||
var/color
|
||||
///Base alpha of the material, is used for greyscale icons.
|
||||
var/alpha
|
||||
///Materials "Traits". its a map of key = category | Value = Bool. Used to define what it can be used for
|
||||
var/list/categories = list()
|
||||
///The type of sheet this material creates. This should be replaced as soon as possible by greyscale sheets
|
||||
var/sheet_type
|
||||
///This is a modifier for force, and resembles the strength of the material
|
||||
var/strength_modifier = 1
|
||||
///This is a modifier for integrity, and resembles the strength of the material
|
||||
var/integrity_modifier = 1
|
||||
///This is the amount of value per 1 unit of the material
|
||||
var/value_per_unit = 0
|
||||
///Armor modifiers, multiplies an items normal armor vars by these amounts.
|
||||
var/armor_modifiers = list("melee" = 1, "bullet" = 1, "laser" = 1, "energy" = 1, "bomb" = 1, "bio" = 1, "rad" = 1, "fire" = 1, "acid" = 1)
|
||||
|
||||
///This proc is called when the material is added to an object.
|
||||
/datum/material/proc/on_applied(atom/source, amount, material_flags)
|
||||
if(material_flags & MATERIAL_COLOR) //Prevent changing things with pre-set colors, to keep colored toolboxes their looks for example
|
||||
if(color) //Do we have a custom color?
|
||||
source.add_atom_colour(color, FIXED_COLOUR_PRIORITY)
|
||||
if(alpha)
|
||||
source.alpha = alpha
|
||||
|
||||
if(material_flags & MATERIAL_ADD_PREFIX)
|
||||
source.name = "[name] [source.name]"
|
||||
|
||||
if(istype(source, /obj)) //objs
|
||||
on_applied_obj(source, amount, material_flags)
|
||||
|
||||
///This proc is called when the material is added to an object specifically.
|
||||
/datum/material/proc/on_applied_obj(var/obj/o, amount, material_flags)
|
||||
var/new_max_integrity = CEILING(o.max_integrity * integrity_modifier, 1)
|
||||
o.modify_max_integrity(new_max_integrity)
|
||||
o.force *= strength_modifier
|
||||
o.throwforce *= strength_modifier
|
||||
|
||||
var/list/temp_armor_list = list() //Time to add armor modifiers!
|
||||
|
||||
if(!istype(o.armor))
|
||||
return
|
||||
var/list/current_armor = o.armor?.getList()
|
||||
|
||||
for(var/i in current_armor)
|
||||
temp_armor_list[i] = current_armor[i] * armor_modifiers[i]
|
||||
o.armor = getArmor(arglist(temp_armor_list))
|
||||
|
||||
///This proc is called when the material is removed from an object.
|
||||
/datum/material/proc/on_removed(atom/source, material_flags)
|
||||
if(material_flags & MATERIAL_COLOR) //Prevent changing things with pre-set colors, to keep colored toolboxes their looks for example
|
||||
if(color)
|
||||
source.remove_atom_colour(FIXED_COLOUR_PRIORITY, color)
|
||||
source.alpha = initial(source.alpha)
|
||||
|
||||
if(material_flags & MATERIAL_ADD_PREFIX)
|
||||
source.name = initial(source.name)
|
||||
|
||||
if(istype(source, /obj)) //objs
|
||||
on_removed_obj(source, material_flags)
|
||||
|
||||
///This proc is called when the material is removed from an object specifically.
|
||||
/datum/material/proc/on_removed_obj(var/obj/o, amount, material_flags)
|
||||
var/new_max_integrity = initial(o.max_integrity)
|
||||
o.modify_max_integrity(new_max_integrity)
|
||||
o.force = initial(o.force)
|
||||
o.throwforce = initial(o.throwforce)
|
||||
210
code/datums/materials/basemats.dm
Normal file
210
code/datums/materials/basemats.dm
Normal file
@@ -0,0 +1,210 @@
|
||||
///Has no special properties.
|
||||
/datum/material/iron
|
||||
name = "iron"
|
||||
id = "iron"
|
||||
desc = "Common iron ore often found in sedimentary and igneous layers of the crust."
|
||||
color = "#878687"
|
||||
categories = list(MAT_CATEGORY_ORE = TRUE, MAT_CATEGORY_RIGID = TRUE)
|
||||
sheet_type = /obj/item/stack/sheet/metal
|
||||
value_per_unit = 0.0025
|
||||
|
||||
///Breaks extremely easily but is transparent.
|
||||
/datum/material/glass
|
||||
name = "glass"
|
||||
id = "glass"
|
||||
desc = "Glass forged by melting sand."
|
||||
color = "#88cdf1"
|
||||
alpha = 150
|
||||
categories = list(MAT_CATEGORY_RIGID = TRUE)
|
||||
integrity_modifier = 0.1
|
||||
sheet_type = /obj/item/stack/sheet/glass
|
||||
value_per_unit = 0.0025
|
||||
armor_modifiers = list("melee" = 0.2, "bullet" = 0.2, "laser" = 0, "energy" = 1, "bomb" = 0, "bio" = 0.2, "rad" = 0.2, "fire" = 1, "acid" = 0.2) // yeah ok retard
|
||||
|
||||
/*
|
||||
Color matrices are like regular colors but unlike with normal colors, you can go over 255 on a channel.
|
||||
Unless you know what you're doing, only use the first three numbers. They're in RGB order.
|
||||
*/
|
||||
|
||||
///Has no special properties. Could be good against vampires in the future perhaps.
|
||||
/datum/material/silver
|
||||
name = "silver"
|
||||
id = "silver"
|
||||
desc = "Silver"
|
||||
color = list(255/255, 284/255, 302/255,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, 0,0,0,0)
|
||||
categories = list(MAT_CATEGORY_ORE = TRUE, MAT_CATEGORY_RIGID = TRUE)
|
||||
sheet_type = /obj/item/stack/sheet/mineral/silver
|
||||
value_per_unit = 0.025
|
||||
|
||||
///Slight force increase
|
||||
/datum/material/gold
|
||||
name = "gold"
|
||||
id = "gold"
|
||||
desc = "Gold"
|
||||
color = list(340/255, 240/255, 50/255,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, 0,0,0,0) //gold is shiny, but not as bright as bananium
|
||||
strength_modifier = 1.2
|
||||
categories = list(MAT_CATEGORY_ORE = TRUE, MAT_CATEGORY_RIGID = TRUE)
|
||||
sheet_type = /obj/item/stack/sheet/mineral/gold
|
||||
value_per_unit = 0.0625
|
||||
armor_modifiers = list("melee" = 1.1, "bullet" = 1.1, "laser" = 1.15, "energy" = 1.15, "bomb" = 1, "bio" = 1, "rad" = 1, "fire" = 0.7, "acid" = 1.1)
|
||||
|
||||
///Has no special properties
|
||||
/datum/material/diamond
|
||||
name = "diamond"
|
||||
id = "diamond"
|
||||
desc = "Highly pressurized carbon"
|
||||
color = list(48/255, 272/255, 301/255,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, 0,0,0,0)
|
||||
alpha = 132
|
||||
categories = list(MAT_CATEGORY_ORE = TRUE, MAT_CATEGORY_RIGID = TRUE)
|
||||
sheet_type = /obj/item/stack/sheet/mineral/diamond
|
||||
value_per_unit = 0.25
|
||||
|
||||
///Is slightly radioactive
|
||||
/datum/material/uranium
|
||||
name = "uranium"
|
||||
id = "uranium"
|
||||
desc = "Uranium"
|
||||
color = rgb(48, 237, 26)
|
||||
categories = list(MAT_CATEGORY_ORE = TRUE, MAT_CATEGORY_RIGID = TRUE)
|
||||
sheet_type = /obj/item/stack/sheet/mineral/uranium
|
||||
value_per_unit = 0.05
|
||||
armor_modifiers = list("melee" = 1.5, "bullet" = 1.4, "laser" = 0.5, "energy" = 0.5, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 1, "acid" = 1)
|
||||
|
||||
/datum/material/uranium/on_applied(atom/source, amount, material_flags)
|
||||
. = ..()
|
||||
source.AddComponent(/datum/component/radioactive, amount / 20, source, 0) //half-life of 0 because we keep on going.
|
||||
|
||||
/datum/material/uranium/on_removed(atom/source, material_flags)
|
||||
. = ..()
|
||||
qdel(source.GetComponent(/datum/component/radioactive))
|
||||
|
||||
|
||||
///Adds firestacks on hit (Still needs support to turn into gas on destruction)
|
||||
/datum/material/plasma
|
||||
name = "plasma"
|
||||
id = "plasma"
|
||||
desc = "Isn't plasma a state of matter? Oh whatever."
|
||||
color = list(298/255, 46/255, 352/255,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, 0,0,0,0)
|
||||
categories = list(MAT_CATEGORY_ORE = TRUE, MAT_CATEGORY_RIGID = TRUE)
|
||||
sheet_type = /obj/item/stack/sheet/mineral/plasma
|
||||
value_per_unit = 0.1
|
||||
armor_modifiers = list("melee" = 1.4, "bullet" = 0.7, "laser" = 0, "energy" = 1.2, "bomb" = 0, "bio" = 1.2, "rad" = 1, "fire" = 0, "acid" = 0.5)
|
||||
|
||||
/datum/material/plasma/on_applied(atom/source, amount, material_flags)
|
||||
. = ..()
|
||||
if(ismovableatom(source))
|
||||
source.AddElement(/datum/element/firestacker)
|
||||
source.AddComponent(/datum/component/explodable, 0, 0, amount / 2500, amount / 1250)
|
||||
|
||||
/datum/material/plasma/on_removed(atom/source, material_flags)
|
||||
. = ..()
|
||||
source.RemoveElement(/datum/element/firestacker)
|
||||
qdel(source.GetComponent(/datum/component/explodable))
|
||||
|
||||
///Can cause bluespace effects on use. (Teleportation) (Not yet implemented)
|
||||
/datum/material/bluespace
|
||||
name = "bluespace crystal"
|
||||
id = "bluespace_crystal"
|
||||
desc = "Crystals with bluespace properties"
|
||||
color = list(119/255, 217/255, 396/255,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, 0,0,0,0)
|
||||
alpha = 200
|
||||
categories = list(MAT_CATEGORY_ORE = TRUE)
|
||||
sheet_type = /obj/item/stack/sheet/bluespace_crystal
|
||||
value_per_unit = 0.15
|
||||
|
||||
///Honks and slips
|
||||
/datum/material/bananium
|
||||
name = "bananium"
|
||||
id = "bananium"
|
||||
desc = "Material with hilarious properties"
|
||||
color = list(460/255, 464/255, 0, 0, 0,0,0,0, 0,0,0,0, 0,0,0,1, 0,0,0,0) //obnoxiously bright yellow
|
||||
categories = list(MAT_CATEGORY_ORE = TRUE, MAT_CATEGORY_RIGID = TRUE)
|
||||
sheet_type = /obj/item/stack/sheet/mineral/bananium
|
||||
value_per_unit = 0.5
|
||||
armor_modifiers = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 100, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 0) //Clowns cant be blown away
|
||||
|
||||
/datum/material/bananium/on_applied(atom/source, amount, material_flags)
|
||||
. = ..()
|
||||
source.AddComponent(/datum/component/squeak, list('sound/items/bikehorn.ogg'=1), 50)
|
||||
source.AddComponent(/datum/component/slippery, min(amount / 10, 80))
|
||||
|
||||
/datum/material/bananium/on_removed(atom/source, amount, material_flags)
|
||||
. = ..()
|
||||
qdel(source.GetComponent(/datum/component/slippery))
|
||||
qdel(source.GetComponent(/datum/component/squeak))
|
||||
|
||||
|
||||
///Mediocre force increase
|
||||
/datum/material/titanium
|
||||
name = "titanium"
|
||||
id = "titanium"
|
||||
desc = "Titanium"
|
||||
color = "#b3c0c7"
|
||||
strength_modifier = 1.3
|
||||
categories = list(MAT_CATEGORY_ORE = TRUE, MAT_CATEGORY_RIGID = TRUE)
|
||||
sheet_type = /obj/item/stack/sheet/mineral/titanium
|
||||
value_per_unit = 0.0625
|
||||
armor_modifiers = list("melee" = 1.35, "bullet" = 1.3, "laser" = 1.3, "energy" = 1.25, "bomb" = 1.25, "bio" = 1, "rad" = 1, "fire" = 0.7, "acid" = 1)
|
||||
|
||||
/datum/material/runite
|
||||
name = "runite"
|
||||
id = "runite"
|
||||
desc = "Runite"
|
||||
color = "#3F9995"
|
||||
strength_modifier = 1.3
|
||||
categories = list(MAT_CATEGORY_RIGID = TRUE)
|
||||
sheet_type = /obj/item/stack/sheet/mineral/runite
|
||||
armor_modifiers = list("melee" = 1.35, "bullet" = 2, "laser" = 0.5, "energy" = 1.25, "bomb" = 1.25, "bio" = 1, "rad" = 1, "fire" = 1.4, "acid" = 1) //rune is weak against magic lasers but strong against bullets. This is the combat triangle.
|
||||
|
||||
///Force decrease
|
||||
/datum/material/plastic
|
||||
name = "plastic"
|
||||
id = "plastic"
|
||||
desc = "Plastic"
|
||||
color = "#caccd9"
|
||||
strength_modifier = 0.85
|
||||
sheet_type = /obj/item/stack/sheet/plastic
|
||||
value_per_unit = 0.0125
|
||||
armor_modifiers = list("melee" = 1.5, "bullet" = 1.1, "laser" = 0.3, "energy" = 0.5, "bomb" = 1, "bio" = 1, "rad" = 1, "fire" = 1.1, "acid" = 1)
|
||||
|
||||
///Force decrease and mushy sound effect. (Not yet implemented)
|
||||
/datum/material/biomass
|
||||
name = "biomass"
|
||||
id = "biomass"
|
||||
desc = "Organic matter"
|
||||
color = "#735b4d"
|
||||
strength_modifier = 0.8
|
||||
value_per_unit = 0.025
|
||||
|
||||
///Stronk force increase
|
||||
/datum/material/adamantine
|
||||
name = "adamantine"
|
||||
id = "adamantine"
|
||||
desc = "A powerful material made out of magic, I mean science!"
|
||||
color = "#6d7e8e"
|
||||
strength_modifier = 1.5
|
||||
categories = list(MAT_CATEGORY_RIGID = TRUE)
|
||||
sheet_type = /obj/item/stack/sheet/mineral/adamantine
|
||||
value_per_unit = 0.25
|
||||
armor_modifiers = list("melee" = 1.5, "bullet" = 1.5, "laser" = 1.3, "energy" = 1.3, "bomb" = 1, "bio" = 1, "rad" = 1, "fire" = 2.5, "acid" = 1)
|
||||
|
||||
///RPG Magic. (Admin only)
|
||||
/datum/material/mythril
|
||||
name = "mythril"
|
||||
id = "mythril"
|
||||
desc = "How this even exists is byond me"
|
||||
color = "#f2d5d7"
|
||||
categories = list(MAT_CATEGORY_RIGID = TRUE)
|
||||
sheet_type = /obj/item/stack/sheet/mineral/mythril
|
||||
value_per_unit = 0.75
|
||||
armor_modifiers = list("melee" = 2, "bullet" = 2, "laser" = 2, "energy" = 2, "bomb" = 2, "bio" = 2, "rad" = 2, "fire" = 2, "acid" = 2)
|
||||
|
||||
/datum/material/mythril/on_applied_obj(atom/source, amount, material_flags)
|
||||
. = ..()
|
||||
if(istype(source, /obj/item))
|
||||
source.AddComponent(/datum/component/fantasy)
|
||||
|
||||
/datum/material/mythril/on_removed_obj(atom/source, material_flags)
|
||||
. = ..()
|
||||
if(istype(source, /obj/item))
|
||||
qdel(source.GetComponent(/datum/component/fantasy))
|
||||
39
code/modules/mob/living/simple_animal/hostile/dark_wizard.dm
Normal file
39
code/modules/mob/living/simple_animal/hostile/dark_wizard.dm
Normal file
@@ -0,0 +1,39 @@
|
||||
/mob/living/simple_animal/hostile/dark_wizard
|
||||
name = "Dark Wizard"
|
||||
desc = "Killing amateurs since the dawn of times."
|
||||
icon = 'icons/mob/simple_human.dmi'
|
||||
icon_state = "dark_wizard"
|
||||
icon_living = "dark_wizard"
|
||||
move_to_delay = 10
|
||||
projectiletype = /obj/item/projectile/temp/earth_bolt
|
||||
projectilesound = 'sound/magic/ethereal_enter.ogg'
|
||||
ranged = TRUE
|
||||
ranged_message = "earth bolts"
|
||||
ranged_cooldown_time = 20
|
||||
maxHealth = 50
|
||||
health = 50
|
||||
harm_intent_damage = 5
|
||||
obj_damage = 20
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 5
|
||||
attacktext = "staves"
|
||||
a_intent = INTENT_HARM
|
||||
speak_emote = list("chants")
|
||||
attack_sound = 'sound/weapons/bladeslice.ogg'
|
||||
aggro_vision_range = 9
|
||||
turns_per_move = 5
|
||||
gold_core_spawnable = HOSTILE_SPAWN
|
||||
faction = list(ROLE_WIZARD)
|
||||
do_footstep = TRUE
|
||||
weather_immunities = list("lava","ash")
|
||||
minbodytemp = 0
|
||||
maxbodytemp = INFINITY
|
||||
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
||||
loot = list(/obj/effect/decal/remains/human)
|
||||
|
||||
/obj/item/projectile/temp/earth_bolt
|
||||
name = "earth_bolt"
|
||||
icon_state = "declone"
|
||||
damage = 4
|
||||
damage_type = BURN
|
||||
flag = "energy"
|
||||
36
code/modules/ruins/spaceruin_code/clericsden.dm
Normal file
36
code/modules/ruins/spaceruin_code/clericsden.dm
Normal file
@@ -0,0 +1,36 @@
|
||||
/////////// cleric's den items.
|
||||
|
||||
//Primary reward: the cleric's mace design disk.
|
||||
/obj/item/disk/design_disk/adv/cleric_mace
|
||||
name = "Enshrined Disc of Smiting"
|
||||
|
||||
/obj/item/disk/design_disk/adv/cleric_mace/Initialize()
|
||||
. = ..()
|
||||
var/datum/design/cleric_mace/M = new
|
||||
blueprints[1] = M
|
||||
|
||||
/obj/item/paper/fluff/ruins/clericsden/contact
|
||||
info = "Father Aurellion, the ritual is complete, and soon our brothers at the bastion will see the error of our ways. After all, a god of clockwork or blood? Preposterous. Only the TRUE GOD should have so much power. Signed, Father Odivallus."
|
||||
|
||||
/obj/item/paper/fluff/ruins/clericsden/warning
|
||||
info = "FATHER ODIVALLUS DO NOT GO FORWARD WITH THE RITUAL. THE ASTEROID WE'RE ANCHORED TO IS UNSTABLE, YOU WILL DESTROY THE STATION. I HOPE THIS REACHES YOU IN TIME. FATHER AURELLION."
|
||||
|
||||
/mob/living/simple_animal/hostile/construct/proteon
|
||||
name = "Proteon"
|
||||
real_name = "Proteon"
|
||||
desc = "A weaker construct meant to scour ruins for objects of Nar'Sie's affection. Those barbed claws are no joke."
|
||||
icon_state = "proteon"
|
||||
icon_living = "proteon"
|
||||
maxHealth = 35
|
||||
health = 35
|
||||
melee_damage_lower = 8
|
||||
melee_damage_upper = 10
|
||||
retreat_distance = 4 //AI proteons will rapidly move in and out of combat to avoid conflict, but will still target and follow you.
|
||||
attacktext = "pinches"
|
||||
environment_smash = ENVIRONMENT_SMASH_WALLS
|
||||
attack_sound = 'sound/weapons/punch2.ogg'
|
||||
playstyle_string = "<b>You are a Proteon. Your abilities in combat are outmatched by most combat constructs, but you are still fast and nimble. Run metal and supplies, and cooperate with your fellow cultists.</b>"
|
||||
|
||||
/mob/living/simple_animal/hostile/construct/proteon/hostile //Style of mob spawned by trapped cult runes in the cleric ruin.
|
||||
AIStatus = AI_ON
|
||||
environment_smash = ENVIRONMENT_SMASH_STRUCTURES //standard ai construct behavior, breaks things if it wants, but not walls.
|
||||
BIN
icons/obj/smooth_structures/table_greyscale.dmi
Normal file
BIN
icons/obj/smooth_structures/table_greyscale.dmi
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 670 B |
Reference in New Issue
Block a user