Merge branch 'master' of https://github.com/Citadel-Station-13/Citadel-Station-13 into eigenstasium-nope
This commit is contained in:
@@ -4,32 +4,32 @@
|
||||
/area/template_noop)
|
||||
"ab" = (
|
||||
/turf/closed/mineral/random/low_chance,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"ac" = (
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"ad" = (
|
||||
/obj/machinery/hydroponics/soil,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"ae" = (
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/space)
|
||||
"af" = (
|
||||
/obj/effect/spawner/structure/window/shuttle,
|
||||
/turf/open/floor/mineral/titanium,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/space)
|
||||
"ag" = (
|
||||
/obj/structure/shuttle/engine/propulsion/right{
|
||||
dir = 4
|
||||
},
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/space)
|
||||
"ah" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/shovel,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"ai" = (
|
||||
/obj/structure/lattice,
|
||||
/turf/template_noop,
|
||||
@@ -37,35 +37,35 @@
|
||||
"aj" = (
|
||||
/obj/machinery/computer/cryopod,
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/space)
|
||||
"ak" = (
|
||||
/obj/structure/fluff/empty_cryostasis_sleeper,
|
||||
/turf/open/floor/mineral/titanium,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/space)
|
||||
"al" = (
|
||||
/obj/machinery/status_display/shuttle,
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/space)
|
||||
"am" = (
|
||||
/obj/item/circuitboard/computer/rdconsole,
|
||||
/obj/item/circuitboard/machine/protolathe/department/science,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"an" = (
|
||||
/turf/open/floor/mineral/titanium,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/space)
|
||||
"ao" = (
|
||||
/obj/structure/chair/comfy/shuttle{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/mineral/titanium,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/space)
|
||||
"ap" = (
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/mineral/titanium,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/space)
|
||||
"aq" = (
|
||||
/obj/machinery/computer{
|
||||
desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages.";
|
||||
@@ -73,29 +73,29 @@
|
||||
name = "Broken Computer"
|
||||
},
|
||||
/turf/open/floor/mineral/titanium,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/space)
|
||||
"ar" = (
|
||||
/obj/machinery/door/airlock/titanium{
|
||||
name = "Escape Pod Airlock"
|
||||
},
|
||||
/turf/open/floor/mineral/titanium,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/space)
|
||||
"as" = (
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/mineral/titanium,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/space)
|
||||
"at" = (
|
||||
/obj/structure/shuttle/engine/propulsion/left{
|
||||
dir = 4
|
||||
},
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/space)
|
||||
"au" = (
|
||||
/obj/item/seeds/tower,
|
||||
/obj/item/seeds/tower,
|
||||
/obj/item/seeds/tower,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"av" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/paper/crumpled{
|
||||
@@ -103,7 +103,7 @@
|
||||
},
|
||||
/obj/item/pen,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"aw" = (
|
||||
/obj/item/stack/sheet/mineral/wood,
|
||||
/obj/item/stack/sheet/mineral/wood,
|
||||
@@ -111,55 +111,51 @@
|
||||
/obj/item/stack/sheet/mineral/wood,
|
||||
/obj/item/stack/sheet/mineral/wood,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"ax" = (
|
||||
/obj/item/twohanded/spear,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"ay" = (
|
||||
/obj/item/grown/log,
|
||||
/obj/item/grown/log,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"az" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/storage/bag/plants/portaseeder,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"aA" = (
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"aB" = (
|
||||
/obj/item/seeds/banana,
|
||||
/obj/item/seeds/banana,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"aC" = (
|
||||
/obj/effect/mob_spawn/human/clown/corpse,
|
||||
/obj/structure/fans/tiny/invisible,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"aD" = (
|
||||
/obj/item/mining_scanner,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
"aE" = (
|
||||
/obj/machinery/status_display/shuttle,
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"aF" = (
|
||||
/obj/item/pickaxe/emergency,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"aG" = (
|
||||
/obj/structure/sink/puddle,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"aH" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/storage/firstaid/regular,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"aI" = (
|
||||
/obj/effect/mob_spawn/human/corpse/assistant,
|
||||
/turf/template_noop,
|
||||
@@ -168,17 +164,17 @@
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/storage/bag/ore,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"aK" = (
|
||||
/obj/structure/reagent_dispensers/fueltank,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"aL" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/storage/toolbox/mechanical,
|
||||
/obj/item/clothing/head/welding,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"aM" = (
|
||||
/mob/living/simple_animal/hostile/carp,
|
||||
/turf/template_noop,
|
||||
@@ -186,38 +182,38 @@
|
||||
"aN" = (
|
||||
/obj/structure/mineral_door/sandstone,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"aO" = (
|
||||
/mob/living/simple_animal/hostile/carp,
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"aP" = (
|
||||
/obj/item/stack/ore/gold,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"aQ" = (
|
||||
/obj/item/stack/ore/gold,
|
||||
/obj/item/stack/ore/gold,
|
||||
/obj/item/stack/ore/gold,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"aR" = (
|
||||
/obj/item/stack/ore/iron,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"aS" = (
|
||||
/turf/closed/wall/mineral/iron,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"aT" = (
|
||||
/obj/item/stack/ore/iron,
|
||||
/obj/item/stack/ore/iron,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"aU" = (
|
||||
/obj/item/flashlight/lamp,
|
||||
/obj/structure/table/wood,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"aV" = (
|
||||
/obj/item/clothing/suit/space/orange,
|
||||
/turf/template_noop,
|
||||
@@ -236,89 +232,76 @@
|
||||
job_description = "Space Hermit"
|
||||
},
|
||||
/turf/open/floor/mineral/titanium,
|
||||
/area/ruin/powered)
|
||||
"aZ" = (
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/ruin/unpowered)
|
||||
"ba" = (
|
||||
/obj/effect/spawner/structure/window/shuttle,
|
||||
/turf/open/floor/mineral/titanium,
|
||||
/area/ruin/unpowered)
|
||||
"bb" = (
|
||||
/obj/structure/shuttle/engine/propulsion/left{
|
||||
dir = 4
|
||||
},
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"bc" = (
|
||||
/obj/item/circuitboard/machine/circuit_imprinter,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"bd" = (
|
||||
/obj/item/grown/bananapeel,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"be" = (
|
||||
/obj/effect/mob_spawn/human/corpse/cargo_tech,
|
||||
/obj/structure/fans/tiny/invisible,
|
||||
/obj/effect/decal/cleanable/vomit,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"bf" = (
|
||||
/obj/item/clothing/glasses/meson,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"bg" = (
|
||||
/obj/item/stock_parts/matter_bin,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"bh" = (
|
||||
/obj/item/circuitboard/machine/autolathe,
|
||||
/turf/open/floor/mineral/titanium,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/space)
|
||||
"bi" = (
|
||||
/obj/item/stock_parts/manipulator,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"bj" = (
|
||||
/obj/item/holosign_creator/atmos,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"bk" = (
|
||||
/obj/structure/holosign/barrier/atmos,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"bl" = (
|
||||
/obj/machinery/power/floodlight,
|
||||
/obj/structure/cable{
|
||||
icon_state = "0-2"
|
||||
},
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"bm" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-4"
|
||||
},
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"bn" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "2-8"
|
||||
},
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"bo" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"bp" = (
|
||||
/obj/item/stack/ore/iron,
|
||||
/obj/item/stack/ore/iron,
|
||||
/obj/item/stack/ore/iron,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"bq" = (
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/power/port_gen/pacman{
|
||||
@@ -327,20 +310,20 @@
|
||||
sheets = 10
|
||||
},
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"br" = (
|
||||
/obj/item/stack/ore/iron,
|
||||
/obj/item/stack/sheet/mineral/plasma,
|
||||
/obj/item/stack/sheet/mineral/plasma,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"bs" = (
|
||||
/obj/item/flashlight/lamp/bananalamp,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
"bt" = (
|
||||
/turf/closed/mineral/random/low_chance/earth_like,
|
||||
/area/ruin/unpowered)
|
||||
/area/ruin/space)
|
||||
|
||||
(1,1,1) = {"
|
||||
aa
|
||||
@@ -954,7 +937,7 @@ bh
|
||||
an
|
||||
an
|
||||
ae
|
||||
aZ
|
||||
ae
|
||||
bt
|
||||
bt
|
||||
bt
|
||||
@@ -1006,7 +989,7 @@ ao
|
||||
ao
|
||||
ao
|
||||
ak
|
||||
ba
|
||||
af
|
||||
bt
|
||||
bt
|
||||
bt
|
||||
@@ -1058,7 +1041,7 @@ ap
|
||||
an
|
||||
as
|
||||
aj
|
||||
aE
|
||||
al
|
||||
bt
|
||||
bt
|
||||
bt
|
||||
@@ -1110,7 +1093,7 @@ ao
|
||||
ao
|
||||
ao
|
||||
ak
|
||||
ba
|
||||
af
|
||||
ac
|
||||
bt
|
||||
bt
|
||||
@@ -1162,7 +1145,7 @@ an
|
||||
an
|
||||
an
|
||||
ae
|
||||
aZ
|
||||
ae
|
||||
ac
|
||||
bt
|
||||
bt
|
||||
@@ -1214,7 +1197,7 @@ af
|
||||
ar
|
||||
af
|
||||
at
|
||||
bb
|
||||
at
|
||||
ac
|
||||
bt
|
||||
bt
|
||||
|
||||
@@ -0,0 +1,111 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"e" = (
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"m" = (
|
||||
/turf/closed/mineral/random/no_caves,
|
||||
/area/ruin/space)
|
||||
"q" = (
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/space)
|
||||
|
||||
(1,1,1) = {"
|
||||
e
|
||||
e
|
||||
e
|
||||
q
|
||||
q
|
||||
e
|
||||
e
|
||||
e
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
e
|
||||
e
|
||||
q
|
||||
m
|
||||
m
|
||||
q
|
||||
e
|
||||
e
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
e
|
||||
q
|
||||
m
|
||||
m
|
||||
m
|
||||
m
|
||||
q
|
||||
e
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
e
|
||||
q
|
||||
m
|
||||
m
|
||||
m
|
||||
m
|
||||
m
|
||||
q
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
q
|
||||
m
|
||||
m
|
||||
m
|
||||
m
|
||||
m
|
||||
m
|
||||
q
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
q
|
||||
m
|
||||
m
|
||||
m
|
||||
m
|
||||
m
|
||||
m
|
||||
q
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
q
|
||||
m
|
||||
m
|
||||
m
|
||||
m
|
||||
m
|
||||
q
|
||||
e
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
e
|
||||
q
|
||||
m
|
||||
m
|
||||
m
|
||||
m
|
||||
q
|
||||
e
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
e
|
||||
e
|
||||
q
|
||||
m
|
||||
m
|
||||
q
|
||||
e
|
||||
e
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
e
|
||||
e
|
||||
e
|
||||
q
|
||||
q
|
||||
e
|
||||
e
|
||||
e
|
||||
"}
|
||||
@@ -0,0 +1,342 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"m" = (
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/space)
|
||||
"n" = (
|
||||
/turf/closed/mineral/random/no_caves,
|
||||
/area/ruin/space)
|
||||
"B" = (
|
||||
/obj/item/toy/plush/borgplushie,
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/space)
|
||||
"J" = (
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"Y" = (
|
||||
/obj/item/pickaxe/drill,
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/space)
|
||||
|
||||
(1,1,1) = {"
|
||||
J
|
||||
J
|
||||
m
|
||||
m
|
||||
m
|
||||
m
|
||||
m
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
m
|
||||
m
|
||||
J
|
||||
J
|
||||
J
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
J
|
||||
m
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
m
|
||||
J
|
||||
J
|
||||
m
|
||||
m
|
||||
n
|
||||
n
|
||||
m
|
||||
J
|
||||
J
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
m
|
||||
n
|
||||
n
|
||||
n
|
||||
m
|
||||
B
|
||||
n
|
||||
m
|
||||
J
|
||||
m
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
m
|
||||
J
|
||||
J
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
m
|
||||
n
|
||||
n
|
||||
m
|
||||
m
|
||||
n
|
||||
n
|
||||
n
|
||||
m
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
m
|
||||
J
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
m
|
||||
n
|
||||
n
|
||||
m
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
m
|
||||
m
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
m
|
||||
J
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
m
|
||||
n
|
||||
n
|
||||
m
|
||||
m
|
||||
m
|
||||
m
|
||||
n
|
||||
n
|
||||
m
|
||||
m
|
||||
m
|
||||
n
|
||||
n
|
||||
n
|
||||
m
|
||||
J
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
m
|
||||
n
|
||||
n
|
||||
n
|
||||
m
|
||||
n
|
||||
m
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
m
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
m
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
m
|
||||
n
|
||||
n
|
||||
n
|
||||
m
|
||||
n
|
||||
m
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
m
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
m
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
m
|
||||
n
|
||||
n
|
||||
n
|
||||
m
|
||||
n
|
||||
m
|
||||
m
|
||||
m
|
||||
n
|
||||
n
|
||||
m
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
m
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
m
|
||||
n
|
||||
n
|
||||
n
|
||||
m
|
||||
n
|
||||
n
|
||||
n
|
||||
m
|
||||
n
|
||||
n
|
||||
m
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
m
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
m
|
||||
n
|
||||
n
|
||||
n
|
||||
m
|
||||
Y
|
||||
n
|
||||
n
|
||||
m
|
||||
n
|
||||
n
|
||||
m
|
||||
m
|
||||
n
|
||||
n
|
||||
n
|
||||
m
|
||||
"}
|
||||
(12,1,1) = {"
|
||||
m
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
m
|
||||
m
|
||||
m
|
||||
m
|
||||
m
|
||||
n
|
||||
n
|
||||
n
|
||||
m
|
||||
J
|
||||
"}
|
||||
(13,1,1) = {"
|
||||
J
|
||||
m
|
||||
n
|
||||
n
|
||||
n
|
||||
m
|
||||
n
|
||||
m
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
m
|
||||
J
|
||||
J
|
||||
"}
|
||||
(14,1,1) = {"
|
||||
J
|
||||
m
|
||||
n
|
||||
n
|
||||
n
|
||||
m
|
||||
m
|
||||
m
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
m
|
||||
J
|
||||
J
|
||||
"}
|
||||
(15,1,1) = {"
|
||||
J
|
||||
J
|
||||
m
|
||||
m
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
m
|
||||
J
|
||||
J
|
||||
"}
|
||||
(16,1,1) = {"
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
m
|
||||
m
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
m
|
||||
m
|
||||
J
|
||||
J
|
||||
J
|
||||
"}
|
||||
(17,1,1) = {"
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
m
|
||||
m
|
||||
m
|
||||
m
|
||||
m
|
||||
m
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
"}
|
||||
@@ -0,0 +1,277 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/obj/effect/overlay/palmtree_l,
|
||||
/turf/open/floor/holofloor/beach,
|
||||
/area/ruin/space/has_grav)
|
||||
"j" = (
|
||||
/turf/open/floor/holofloor/beach/coast_t,
|
||||
/area/ruin/space/has_grav)
|
||||
"n" = (
|
||||
/turf/open/floor/holofloor/beach/coast_b,
|
||||
/area/ruin/space/has_grav)
|
||||
"o" = (
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"p" = (
|
||||
/turf/open/floor/holofloor/beach/water,
|
||||
/area/ruin/space/has_grav)
|
||||
"t" = (
|
||||
/obj/effect/overlay/palmtree_r,
|
||||
/turf/open/floor/holofloor/beach,
|
||||
/area/ruin/space/has_grav)
|
||||
"u" = (
|
||||
/obj/structure/marker_beacon,
|
||||
/turf/open/floor/holofloor/beach/coast_t,
|
||||
/area/ruin/space/has_grav)
|
||||
"A" = (
|
||||
/turf/open/floor/holofloor/beach,
|
||||
/area/ruin/space/has_grav)
|
||||
"F" = (
|
||||
/mob/living/simple_animal/crab{
|
||||
desc = "This little bugger seems so happy to dance.!";
|
||||
name = "raving crab"
|
||||
},
|
||||
/turf/open/floor/holofloor/beach/coast_t,
|
||||
/area/ruin/space/has_grav)
|
||||
"H" = (
|
||||
/obj/structure/marker_beacon,
|
||||
/turf/open/floor/holofloor/beach,
|
||||
/area/ruin/space/has_grav)
|
||||
"L" = (
|
||||
/turf/closed/mineral/random/no_caves,
|
||||
/area/ruin/space)
|
||||
"R" = (
|
||||
/mob/living/simple_animal/crab{
|
||||
desc = "This little bugger seems so happy to dance.!";
|
||||
name = "raving crab"
|
||||
},
|
||||
/turf/open/floor/holofloor/beach,
|
||||
/area/ruin/space/has_grav)
|
||||
"T" = (
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/space)
|
||||
|
||||
(1,1,1) = {"
|
||||
o
|
||||
o
|
||||
T
|
||||
o
|
||||
o
|
||||
o
|
||||
o
|
||||
o
|
||||
o
|
||||
o
|
||||
o
|
||||
o
|
||||
o
|
||||
o
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
T
|
||||
L
|
||||
L
|
||||
T
|
||||
o
|
||||
o
|
||||
o
|
||||
o
|
||||
o
|
||||
o
|
||||
o
|
||||
o
|
||||
o
|
||||
o
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
T
|
||||
L
|
||||
L
|
||||
L
|
||||
L
|
||||
T
|
||||
T
|
||||
T
|
||||
T
|
||||
T
|
||||
o
|
||||
o
|
||||
o
|
||||
o
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
o
|
||||
T
|
||||
L
|
||||
L
|
||||
L
|
||||
L
|
||||
L
|
||||
L
|
||||
L
|
||||
L
|
||||
T
|
||||
o
|
||||
o
|
||||
o
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
o
|
||||
T
|
||||
L
|
||||
L
|
||||
A
|
||||
A
|
||||
L
|
||||
L
|
||||
L
|
||||
L
|
||||
L
|
||||
T
|
||||
o
|
||||
o
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
T
|
||||
L
|
||||
L
|
||||
L
|
||||
A
|
||||
R
|
||||
j
|
||||
n
|
||||
p
|
||||
p
|
||||
L
|
||||
L
|
||||
T
|
||||
o
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
T
|
||||
L
|
||||
L
|
||||
A
|
||||
a
|
||||
A
|
||||
u
|
||||
n
|
||||
p
|
||||
p
|
||||
L
|
||||
L
|
||||
T
|
||||
o
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
T
|
||||
L
|
||||
L
|
||||
H
|
||||
R
|
||||
A
|
||||
j
|
||||
n
|
||||
p
|
||||
p
|
||||
L
|
||||
L
|
||||
T
|
||||
o
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
T
|
||||
L
|
||||
L
|
||||
A
|
||||
A
|
||||
A
|
||||
u
|
||||
n
|
||||
p
|
||||
p
|
||||
L
|
||||
L
|
||||
T
|
||||
o
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
T
|
||||
L
|
||||
L
|
||||
L
|
||||
A
|
||||
t
|
||||
F
|
||||
n
|
||||
p
|
||||
p
|
||||
L
|
||||
L
|
||||
T
|
||||
o
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
o
|
||||
T
|
||||
T
|
||||
L
|
||||
L
|
||||
A
|
||||
L
|
||||
L
|
||||
L
|
||||
L
|
||||
L
|
||||
L
|
||||
T
|
||||
o
|
||||
"}
|
||||
(12,1,1) = {"
|
||||
o
|
||||
o
|
||||
o
|
||||
T
|
||||
L
|
||||
L
|
||||
L
|
||||
L
|
||||
L
|
||||
L
|
||||
L
|
||||
L
|
||||
T
|
||||
o
|
||||
"}
|
||||
(13,1,1) = {"
|
||||
o
|
||||
o
|
||||
o
|
||||
o
|
||||
T
|
||||
L
|
||||
L
|
||||
L
|
||||
L
|
||||
o
|
||||
T
|
||||
T
|
||||
L
|
||||
T
|
||||
"}
|
||||
(14,1,1) = {"
|
||||
o
|
||||
o
|
||||
o
|
||||
o
|
||||
o
|
||||
o
|
||||
o
|
||||
o
|
||||
o
|
||||
o
|
||||
o
|
||||
o
|
||||
T
|
||||
o
|
||||
"}
|
||||
@@ -0,0 +1,498 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/obj/structure/bed,
|
||||
/obj/item/bedsheet,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/space/has_grav/powered)
|
||||
"c" = (
|
||||
/obj/machinery/door/airlock/silver{
|
||||
name = "Bathroom"
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer,
|
||||
/area/ruin/space/has_grav/powered)
|
||||
"d" = (
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/space)
|
||||
"e" = (
|
||||
/obj/item/reagent_containers/glass/bottle/nutrient/ez,
|
||||
/obj/item/reagent_containers/glass/bottle/nutrient/ez,
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/space)
|
||||
"g" = (
|
||||
/obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/glowcap,
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/space)
|
||||
"i" = (
|
||||
/obj/structure/fireplace{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/space/has_grav/powered)
|
||||
"j" = (
|
||||
/obj/structure/reagent_dispensers/watertank/high,
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/space)
|
||||
"m" = (
|
||||
/obj/structure/mineral_door/woodrustic{
|
||||
name = "Event Hall"
|
||||
},
|
||||
/obj/structure/fans/tiny,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/space/has_grav/powered)
|
||||
"n" = (
|
||||
/obj/machinery/vending/boozeomat{
|
||||
req_access = null
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/space/has_grav/powered)
|
||||
"o" = (
|
||||
/obj/item/reagent_containers/glass/bucket,
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/space)
|
||||
"p" = (
|
||||
/turf/closed/mineral/random/no_caves,
|
||||
/area/ruin/space)
|
||||
"q" = (
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"s" = (
|
||||
/obj/machinery/hydroponics/soil,
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/space)
|
||||
"t" = (
|
||||
/turf/closed/indestructible/wood,
|
||||
/area/ruin/space/has_grav/powered)
|
||||
"v" = (
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/space/has_grav/powered)
|
||||
"w" = (
|
||||
/obj/item/plant_analyzer,
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/space)
|
||||
"y" = (
|
||||
/obj/structure/dresser,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/space/has_grav/powered)
|
||||
"A" = (
|
||||
/obj/item/seeds/glowshroom,
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/space)
|
||||
"C" = (
|
||||
/obj/structure/chair/wood/normal{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/space/has_grav/powered)
|
||||
"E" = (
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
/area/ruin/space/has_grav/powered)
|
||||
"F" = (
|
||||
/obj/item/seeds/grass,
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/space)
|
||||
"J" = (
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
/area/ruin/space/has_grav/powered)
|
||||
"K" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/obj/item/reagent_containers/food/drinks/bottle/wine,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/space/has_grav/powered)
|
||||
"L" = (
|
||||
/obj/structure/mirror{
|
||||
pixel_x = 28
|
||||
},
|
||||
/obj/effect/turf_decal/bot,
|
||||
/obj/machinery/shower{
|
||||
dir = 8;
|
||||
pixel_y = -4
|
||||
},
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
/area/ruin/space/has_grav/powered)
|
||||
"M" = (
|
||||
/obj/structure/toilet{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
/area/ruin/space/has_grav/powered)
|
||||
"N" = (
|
||||
/obj/structure/rack,
|
||||
/obj/item/stack/sheet/mineral/wood,
|
||||
/obj/item/stack/sheet/mineral/wood,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/space/has_grav/powered)
|
||||
"P" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/clothing/head/festive,
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/space/has_grav/powered)
|
||||
"T" = (
|
||||
/obj/item/shovel/spade,
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/space)
|
||||
"W" = (
|
||||
/obj/item/cultivator,
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/space)
|
||||
"Y" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/phone,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/space/has_grav/powered)
|
||||
"Z" = (
|
||||
/obj/item/seeds/tower,
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/space)
|
||||
|
||||
(1,1,1) = {"
|
||||
q
|
||||
q
|
||||
q
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
q
|
||||
q
|
||||
q
|
||||
q
|
||||
d
|
||||
d
|
||||
d
|
||||
q
|
||||
q
|
||||
q
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
q
|
||||
q
|
||||
d
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
p
|
||||
p
|
||||
p
|
||||
d
|
||||
q
|
||||
q
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
q
|
||||
d
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
d
|
||||
q
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
d
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
t
|
||||
t
|
||||
t
|
||||
t
|
||||
p
|
||||
p
|
||||
d
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
d
|
||||
p
|
||||
p
|
||||
d
|
||||
d
|
||||
d
|
||||
e
|
||||
j
|
||||
p
|
||||
p
|
||||
t
|
||||
M
|
||||
J
|
||||
t
|
||||
p
|
||||
p
|
||||
d
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
d
|
||||
p
|
||||
p
|
||||
d
|
||||
d
|
||||
d
|
||||
F
|
||||
o
|
||||
p
|
||||
p
|
||||
t
|
||||
E
|
||||
L
|
||||
t
|
||||
p
|
||||
p
|
||||
d
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
q
|
||||
d
|
||||
d
|
||||
s
|
||||
s
|
||||
s
|
||||
s
|
||||
d
|
||||
t
|
||||
t
|
||||
t
|
||||
c
|
||||
t
|
||||
t
|
||||
t
|
||||
p
|
||||
d
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
q
|
||||
d
|
||||
d
|
||||
d
|
||||
A
|
||||
g
|
||||
W
|
||||
d
|
||||
t
|
||||
Y
|
||||
C
|
||||
v
|
||||
n
|
||||
y
|
||||
t
|
||||
p
|
||||
d
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
q
|
||||
d
|
||||
d
|
||||
s
|
||||
s
|
||||
s
|
||||
s
|
||||
d
|
||||
t
|
||||
P
|
||||
C
|
||||
v
|
||||
v
|
||||
v
|
||||
t
|
||||
p
|
||||
d
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
q
|
||||
d
|
||||
d
|
||||
d
|
||||
T
|
||||
Z
|
||||
d
|
||||
d
|
||||
m
|
||||
v
|
||||
v
|
||||
v
|
||||
v
|
||||
v
|
||||
t
|
||||
p
|
||||
d
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
q
|
||||
d
|
||||
d
|
||||
s
|
||||
s
|
||||
s
|
||||
s
|
||||
d
|
||||
t
|
||||
v
|
||||
v
|
||||
v
|
||||
v
|
||||
v
|
||||
t
|
||||
p
|
||||
d
|
||||
"}
|
||||
(12,1,1) = {"
|
||||
q
|
||||
d
|
||||
d
|
||||
d
|
||||
w
|
||||
A
|
||||
d
|
||||
d
|
||||
t
|
||||
t
|
||||
i
|
||||
N
|
||||
K
|
||||
a
|
||||
t
|
||||
p
|
||||
d
|
||||
"}
|
||||
(13,1,1) = {"
|
||||
q
|
||||
d
|
||||
p
|
||||
s
|
||||
s
|
||||
s
|
||||
s
|
||||
d
|
||||
p
|
||||
t
|
||||
t
|
||||
t
|
||||
t
|
||||
t
|
||||
t
|
||||
p
|
||||
q
|
||||
"}
|
||||
(14,1,1) = {"
|
||||
d
|
||||
p
|
||||
p
|
||||
p
|
||||
d
|
||||
d
|
||||
d
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
d
|
||||
q
|
||||
"}
|
||||
(15,1,1) = {"
|
||||
d
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
d
|
||||
d
|
||||
q
|
||||
q
|
||||
"}
|
||||
(16,1,1) = {"
|
||||
d
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
d
|
||||
q
|
||||
q
|
||||
q
|
||||
"}
|
||||
(17,1,1) = {"
|
||||
q
|
||||
d
|
||||
p
|
||||
p
|
||||
p
|
||||
p
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
q
|
||||
q
|
||||
q
|
||||
q
|
||||
"}
|
||||
(18,1,1) = {"
|
||||
q
|
||||
q
|
||||
d
|
||||
d
|
||||
d
|
||||
d
|
||||
q
|
||||
q
|
||||
q
|
||||
q
|
||||
q
|
||||
q
|
||||
q
|
||||
q
|
||||
q
|
||||
q
|
||||
q
|
||||
"}
|
||||
@@ -0,0 +1,441 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"f" = (
|
||||
/obj/effect/decal/cleanable/blood/gibs/body,
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/ruin/space)
|
||||
"g" = (
|
||||
/obj/structure/lattice,
|
||||
/turf/closed/wall,
|
||||
/area/ruin/space)
|
||||
"l" = (
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/unpowered)
|
||||
"n" = (
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"r" = (
|
||||
/turf/closed/wall,
|
||||
/area/ruin/space)
|
||||
"t" = (
|
||||
/obj/structure/lattice,
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/space)
|
||||
"z" = (
|
||||
/obj/item/pickaxe/silver,
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/ruin/space)
|
||||
"I" = (
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/space)
|
||||
"M" = (
|
||||
/obj/structure/lattice,
|
||||
/turf/template_noop,
|
||||
/area/space/nearstation)
|
||||
"P" = (
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/ruin/space)
|
||||
"R" = (
|
||||
/obj/item/lazarus_injector,
|
||||
/obj/effect/decal/cleanable/blood/gibs/human/lizard/body,
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/ruin/space)
|
||||
"Z" = (
|
||||
/turf/closed/mineral/random/no_caves,
|
||||
/area/ruin/space)
|
||||
|
||||
(1,1,1) = {"
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
I
|
||||
I
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
I
|
||||
I
|
||||
I
|
||||
I
|
||||
I
|
||||
n
|
||||
n
|
||||
I
|
||||
I
|
||||
Z
|
||||
Z
|
||||
I
|
||||
n
|
||||
n
|
||||
n
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
n
|
||||
n
|
||||
n
|
||||
I
|
||||
I
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
I
|
||||
n
|
||||
I
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
I
|
||||
n
|
||||
n
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
n
|
||||
n
|
||||
I
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
t
|
||||
n
|
||||
n
|
||||
I
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
I
|
||||
n
|
||||
n
|
||||
n
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
n
|
||||
I
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
t
|
||||
M
|
||||
n
|
||||
n
|
||||
I
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
l
|
||||
n
|
||||
n
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
n
|
||||
I
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
I
|
||||
I
|
||||
n
|
||||
M
|
||||
n
|
||||
I
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
I
|
||||
n
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
I
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
I
|
||||
n
|
||||
M
|
||||
M
|
||||
g
|
||||
r
|
||||
I
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
I
|
||||
n
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
I
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
I
|
||||
n
|
||||
M
|
||||
z
|
||||
f
|
||||
r
|
||||
I
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
I
|
||||
n
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
I
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
t
|
||||
M
|
||||
M
|
||||
M
|
||||
R
|
||||
P
|
||||
M
|
||||
t
|
||||
t
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
I
|
||||
n
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
I
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
I
|
||||
n
|
||||
n
|
||||
r
|
||||
r
|
||||
M
|
||||
n
|
||||
n
|
||||
n
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
n
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
n
|
||||
I
|
||||
Z
|
||||
I
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
M
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
I
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
I
|
||||
"}
|
||||
(12,1,1) = {"
|
||||
n
|
||||
n
|
||||
I
|
||||
n
|
||||
n
|
||||
n
|
||||
I
|
||||
I
|
||||
I
|
||||
M
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
I
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
"}
|
||||
(13,1,1) = {"
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
I
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
t
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
I
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
"}
|
||||
(14,1,1) = {"
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
I
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
I
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
I
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
"}
|
||||
(15,1,1) = {"
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
I
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
I
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
I
|
||||
Z
|
||||
Z
|
||||
I
|
||||
"}
|
||||
(16,1,1) = {"
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
I
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
I
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
I
|
||||
I
|
||||
n
|
||||
"}
|
||||
(17,1,1) = {"
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
I
|
||||
Z
|
||||
Z
|
||||
I
|
||||
I
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
"}
|
||||
(18,1,1) = {"
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
I
|
||||
I
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
"}
|
||||
@@ -0,0 +1,296 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"b" = (
|
||||
/turf/closed/mineral/random/no_caves,
|
||||
/area/ruin/space)
|
||||
"h" = (
|
||||
/obj/effect/decal/remains/human,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/space)
|
||||
"t" = (
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/space)
|
||||
"G" = (
|
||||
/obj/item/holosign_creator/atmos,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/space)
|
||||
"K" = (
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"P" = (
|
||||
/obj/structure/holosign/barrier/atmos,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/space)
|
||||
"R" = (
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/space)
|
||||
"Y" = (
|
||||
/obj/structure/fluff/fokoff_sign,
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/space)
|
||||
|
||||
(1,1,1) = {"
|
||||
K
|
||||
K
|
||||
K
|
||||
R
|
||||
R
|
||||
R
|
||||
R
|
||||
K
|
||||
K
|
||||
K
|
||||
K
|
||||
R
|
||||
b
|
||||
b
|
||||
R
|
||||
K
|
||||
K
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
K
|
||||
K
|
||||
R
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
R
|
||||
K
|
||||
K
|
||||
R
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
R
|
||||
K
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
K
|
||||
R
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
R
|
||||
Y
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
R
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
R
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
R
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
R
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
R
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
P
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
R
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
K
|
||||
R
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
t
|
||||
G
|
||||
t
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
R
|
||||
K
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
K
|
||||
K
|
||||
R
|
||||
b
|
||||
b
|
||||
b
|
||||
R
|
||||
P
|
||||
t
|
||||
h
|
||||
t
|
||||
t
|
||||
b
|
||||
b
|
||||
b
|
||||
R
|
||||
K
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
K
|
||||
K
|
||||
K
|
||||
R
|
||||
Y
|
||||
R
|
||||
R
|
||||
b
|
||||
b
|
||||
b
|
||||
t
|
||||
t
|
||||
P
|
||||
Y
|
||||
R
|
||||
K
|
||||
K
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
K
|
||||
K
|
||||
K
|
||||
R
|
||||
R
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
R
|
||||
K
|
||||
K
|
||||
K
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
K
|
||||
K
|
||||
K
|
||||
R
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
R
|
||||
K
|
||||
K
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
K
|
||||
K
|
||||
K
|
||||
R
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
R
|
||||
K
|
||||
K
|
||||
K
|
||||
"}
|
||||
(12,1,1) = {"
|
||||
K
|
||||
K
|
||||
K
|
||||
K
|
||||
R
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
R
|
||||
R
|
||||
R
|
||||
R
|
||||
K
|
||||
K
|
||||
K
|
||||
K
|
||||
"}
|
||||
(13,1,1) = {"
|
||||
K
|
||||
K
|
||||
K
|
||||
K
|
||||
K
|
||||
R
|
||||
b
|
||||
b
|
||||
R
|
||||
K
|
||||
K
|
||||
K
|
||||
K
|
||||
K
|
||||
K
|
||||
K
|
||||
K
|
||||
"}
|
||||
(14,1,1) = {"
|
||||
K
|
||||
K
|
||||
K
|
||||
K
|
||||
K
|
||||
K
|
||||
R
|
||||
R
|
||||
K
|
||||
K
|
||||
K
|
||||
K
|
||||
K
|
||||
K
|
||||
K
|
||||
K
|
||||
K
|
||||
"}
|
||||
@@ -0,0 +1,349 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/obj/structure/chair/comfy/shuttle{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/ruin/space/has_grav)
|
||||
"h" = (
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/ruin/space/has_grav)
|
||||
"i" = (
|
||||
/obj/structure/chair/comfy/shuttle{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/spider/stickyweb,
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/ruin/space/has_grav)
|
||||
"k" = (
|
||||
/obj/item/shard{
|
||||
icon_state = "medium"
|
||||
},
|
||||
/obj/item/reagent_containers/food/snacks/meat/slab/spider,
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/ruin/space/has_grav)
|
||||
"q" = (
|
||||
/obj/structure/shuttle/engine/propulsion/burst,
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/ruin/space/has_grav)
|
||||
"r" = (
|
||||
/obj/structure/chair/comfy/shuttle{
|
||||
dir = 4
|
||||
},
|
||||
/obj/item/shard{
|
||||
icon_state = "medium"
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/ruin/space/has_grav)
|
||||
"v" = (
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"x" = (
|
||||
/obj/structure/spider/stickyweb,
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/ruin/space/has_grav)
|
||||
"C" = (
|
||||
/obj/effect/decal/remains/human,
|
||||
/obj/item/twohanded/spear,
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/ruin/space/has_grav)
|
||||
"F" = (
|
||||
/obj/machinery/door/airlock/titanium{
|
||||
name = "Shuttle Airlock"
|
||||
},
|
||||
/obj/structure/fans/tiny,
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/ruin/space/has_grav)
|
||||
"J" = (
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/space)
|
||||
"O" = (
|
||||
/obj/structure/chair/comfy/shuttle{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/spider/stickyweb,
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/ruin/space/has_grav)
|
||||
"P" = (
|
||||
/obj/structure/chair/comfy/shuttle{
|
||||
dir = 8
|
||||
},
|
||||
/obj/item/reagent_containers/food/snacks/meat/slab/spider,
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/ruin/space/has_grav)
|
||||
"R" = (
|
||||
/obj/structure/grille,
|
||||
/obj/structure/window/shuttle,
|
||||
/turf/open/floor/plating,
|
||||
/area/ruin/space/has_grav)
|
||||
"S" = (
|
||||
/obj/item/shard{
|
||||
icon_state = "medium"
|
||||
},
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_state = "platingdmg2"
|
||||
},
|
||||
/area/ruin/space/has_grav)
|
||||
"U" = (
|
||||
/turf/closed/mineral/random/no_caves,
|
||||
/area/ruin/space)
|
||||
"W" = (
|
||||
/obj/structure/spider/stickyweb,
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/space)
|
||||
|
||||
(1,1,1) = {"
|
||||
v
|
||||
v
|
||||
v
|
||||
v
|
||||
v
|
||||
v
|
||||
J
|
||||
J
|
||||
J
|
||||
v
|
||||
v
|
||||
v
|
||||
v
|
||||
v
|
||||
v
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
v
|
||||
v
|
||||
v
|
||||
v
|
||||
J
|
||||
J
|
||||
U
|
||||
U
|
||||
U
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
v
|
||||
v
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
v
|
||||
v
|
||||
J
|
||||
J
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
J
|
||||
v
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
v
|
||||
J
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
J
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
v
|
||||
J
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
v
|
||||
J
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
h
|
||||
R
|
||||
h
|
||||
q
|
||||
W
|
||||
U
|
||||
U
|
||||
J
|
||||
v
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
J
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
r
|
||||
i
|
||||
i
|
||||
q
|
||||
W
|
||||
W
|
||||
J
|
||||
J
|
||||
v
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
J
|
||||
U
|
||||
U
|
||||
U
|
||||
S
|
||||
x
|
||||
C
|
||||
k
|
||||
x
|
||||
F
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
v
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
J
|
||||
U
|
||||
U
|
||||
U
|
||||
h
|
||||
h
|
||||
P
|
||||
O
|
||||
a
|
||||
q
|
||||
W
|
||||
W
|
||||
J
|
||||
J
|
||||
v
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
J
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
h
|
||||
h
|
||||
R
|
||||
h
|
||||
q
|
||||
W
|
||||
U
|
||||
U
|
||||
U
|
||||
v
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
J
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
"}
|
||||
(12,1,1) = {"
|
||||
v
|
||||
J
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
J
|
||||
"}
|
||||
(13,1,1) = {"
|
||||
v
|
||||
J
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
J
|
||||
"}
|
||||
(14,1,1) = {"
|
||||
v
|
||||
v
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
J
|
||||
"}
|
||||
(15,1,1) = {"
|
||||
v
|
||||
v
|
||||
v
|
||||
v
|
||||
v
|
||||
v
|
||||
v
|
||||
v
|
||||
v
|
||||
v
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
v
|
||||
"}
|
||||
@@ -0,0 +1,701 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/obj/item/stack/sheet/metal,
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"b" = (
|
||||
/obj/structure/lattice,
|
||||
/obj/structure/lattice,
|
||||
/obj/item/stack/sheet/metal,
|
||||
/turf/template_noop,
|
||||
/area/space/nearstation)
|
||||
"c" = (
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/space)
|
||||
"d" = (
|
||||
/obj/item/chair,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_state = "platingdmg1"
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
"e" = (
|
||||
/obj/effect/decal/cleanable/blood/gibs/down,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_state = "platingdmg1"
|
||||
},
|
||||
/area/ruin/space)
|
||||
"f" = (
|
||||
/obj/structure/fluff/broken_flooring{
|
||||
dir = 4;
|
||||
icon_state = "singular"
|
||||
},
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"g" = (
|
||||
/obj/structure/girder,
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/space)
|
||||
"h" = (
|
||||
/obj/item/chair/stool/bar,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_state = "platingdmg3"
|
||||
},
|
||||
/area/ruin/space)
|
||||
"i" = (
|
||||
/obj/structure/table/wood,
|
||||
/turf/open/floor/plasteel/airless,
|
||||
/area/ruin/space)
|
||||
"j" = (
|
||||
/obj/item/ammo_casing/shotgun/beanbag,
|
||||
/turf/open/floor/plasteel/airless/cafeteria,
|
||||
/area/ruin/space)
|
||||
"k" = (
|
||||
/turf/closed/wall,
|
||||
/area/ruin/space)
|
||||
"l" = (
|
||||
/obj/structure/chair/stool/bar,
|
||||
/turf/open/floor/plasteel/airless,
|
||||
/area/ruin/space)
|
||||
"m" = (
|
||||
/obj/item/storage/box/drinkingglasses,
|
||||
/obj/structure/table/wood,
|
||||
/obj/machinery/light{
|
||||
dir = 8;
|
||||
icon_state = "tube-broken";
|
||||
status = 2
|
||||
},
|
||||
/turf/open/floor/plasteel/airless/cafeteria,
|
||||
/area/ruin/space)
|
||||
"n" = (
|
||||
/obj/item/stack/sheet/metal,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_state = "platingdmg3"
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
"o" = (
|
||||
/obj/structure/lattice,
|
||||
/turf/template_noop,
|
||||
/area/space/nearstation)
|
||||
"p" = (
|
||||
/obj/structure/fluff/broken_flooring{
|
||||
dir = 4;
|
||||
icon_state = "plating";
|
||||
name = "broken plating"
|
||||
},
|
||||
/turf/template_noop,
|
||||
/area/space/nearstation)
|
||||
"q" = (
|
||||
/obj/machinery/light{
|
||||
dir = 1;
|
||||
icon_state = "tube-broken";
|
||||
status = 2
|
||||
},
|
||||
/turf/open/floor/plasteel/airless/cafeteria,
|
||||
/area/ruin/space)
|
||||
"r" = (
|
||||
/obj/machinery/door/airlock/public/glass,
|
||||
/turf/open/floor/plasteel/airless,
|
||||
/area/ruin/space)
|
||||
"s" = (
|
||||
/obj/structure/table/wood,
|
||||
/turf/open/floor/plasteel/airless/cafeteria,
|
||||
/area/ruin/space)
|
||||
"t" = (
|
||||
/turf/open/floor/plasteel/airless/cafeteria,
|
||||
/area/ruin/space)
|
||||
"u" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/machinery/microwave,
|
||||
/turf/open/floor/plasteel/airless/cafeteria,
|
||||
/area/ruin/space)
|
||||
"w" = (
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_state = "platingdmg1"
|
||||
},
|
||||
/area/ruin/space)
|
||||
"x" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/trash/plate,
|
||||
/turf/open/floor/plasteel/airless,
|
||||
/area/ruin/space)
|
||||
"y" = (
|
||||
/obj/structure/table_frame,
|
||||
/turf/open/floor/plasteel/airless,
|
||||
/area/ruin/space)
|
||||
"z" = (
|
||||
/obj/machinery/light{
|
||||
icon_state = "tube-broken";
|
||||
status = 2
|
||||
},
|
||||
/turf/open/floor/plasteel/airless,
|
||||
/area/ruin/space)
|
||||
"A" = (
|
||||
/obj/item/ammo_casing/c46x30mm,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_state = "platingdmg1"
|
||||
},
|
||||
/area/ruin/space)
|
||||
"B" = (
|
||||
/obj/structure/fluff/broken_flooring{
|
||||
icon_state = "singular"
|
||||
},
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"C" = (
|
||||
/obj/structure/lattice,
|
||||
/obj/structure/fluff/broken_flooring{
|
||||
dir = 1;
|
||||
icon_state = "side"
|
||||
},
|
||||
/turf/template_noop,
|
||||
/area/space/nearstation)
|
||||
"D" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/storage/firstaid/brute,
|
||||
/turf/open/floor/plasteel/airless/cafeteria,
|
||||
/area/ruin/space)
|
||||
"E" = (
|
||||
/obj/structure/girder,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_state = "platingdmg3"
|
||||
},
|
||||
/area/ruin/space)
|
||||
"F" = (
|
||||
/obj/structure/closet/secure_closet/freezer/kitchen,
|
||||
/turf/open/floor/plasteel/airless/cafeteria,
|
||||
/area/ruin/space)
|
||||
"G" = (
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"H" = (
|
||||
/obj/machinery/vending/boozeomat/all_access,
|
||||
/turf/open/floor/plasteel/airless/cafeteria,
|
||||
/area/ruin/space)
|
||||
"I" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/kitchen/fork,
|
||||
/turf/open/floor/plasteel/airless,
|
||||
/area/ruin/space)
|
||||
"K" = (
|
||||
/obj/item/ammo_casing/shotgun/improvised,
|
||||
/turf/open/floor/plasteel/airless/cafeteria,
|
||||
/area/ruin/space)
|
||||
"L" = (
|
||||
/obj/machinery/vending/dinnerware,
|
||||
/turf/open/floor/plasteel/airless/cafeteria,
|
||||
/area/ruin/space)
|
||||
"M" = (
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_state = "platingdmg1"
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
"N" = (
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_state = "platingdmg3"
|
||||
},
|
||||
/area/ruin/space)
|
||||
"O" = (
|
||||
/obj/item/stack/sheet/metal,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_state = "platingdmg3"
|
||||
},
|
||||
/area/ruin/space)
|
||||
"P" = (
|
||||
/obj/item/toy/plush/beeplushie,
|
||||
/obj/vehicle/ridden/lavaboat,
|
||||
/turf/open/floor/plasteel/airless,
|
||||
/area/ruin/space)
|
||||
"Q" = (
|
||||
/obj/effect/decal/remains/human,
|
||||
/obj/effect/decal/cleanable/blood/splatter,
|
||||
/turf/open/floor/plasteel/airless,
|
||||
/area/ruin/space)
|
||||
"R" = (
|
||||
/obj/structure/fluff/broken_flooring{
|
||||
dir = 1;
|
||||
icon_state = "plating";
|
||||
name = "broken plating"
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/space)
|
||||
"S" = (
|
||||
/obj/item/ammo_casing/c46x30mm,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_state = "platingdmg3"
|
||||
},
|
||||
/area/ruin/space)
|
||||
"T" = (
|
||||
/obj/structure/closet/secure_closet/freezer/fridge,
|
||||
/turf/open/floor/plasteel/airless/cafeteria,
|
||||
/area/ruin/space)
|
||||
"U" = (
|
||||
/obj/item/chair/stool/bar,
|
||||
/turf/open/floor/plasteel/airless,
|
||||
/area/ruin/space)
|
||||
"V" = (
|
||||
/obj/structure/lattice,
|
||||
/obj/item/stack/sheet/metal,
|
||||
/turf/template_noop,
|
||||
/area/space/nearstation)
|
||||
"W" = (
|
||||
/obj/structure/lattice,
|
||||
/obj/structure/fluff/broken_flooring{
|
||||
dir = 1;
|
||||
icon_state = "plating";
|
||||
name = "broken plating"
|
||||
},
|
||||
/turf/template_noop,
|
||||
/area/space/nearstation)
|
||||
"X" = (
|
||||
/turf/open/floor/plasteel/airless,
|
||||
/area/ruin/space)
|
||||
"Y" = (
|
||||
/obj/effect/decal/remains/human,
|
||||
/obj/effect/decal/cleanable/blood/old,
|
||||
/obj/item/clothing/head/chefhat,
|
||||
/turf/open/floor/plasteel/airless/cafeteria,
|
||||
/area/ruin/space)
|
||||
"Z" = (
|
||||
/turf/closed/mineral/random/no_caves,
|
||||
/area/ruin/space)
|
||||
|
||||
(1,1,1) = {"
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
c
|
||||
c
|
||||
c
|
||||
G
|
||||
G
|
||||
c
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
c
|
||||
G
|
||||
G
|
||||
G
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
G
|
||||
G
|
||||
G
|
||||
c
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
c
|
||||
c
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
c
|
||||
G
|
||||
G
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
G
|
||||
G
|
||||
c
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
c
|
||||
G
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
G
|
||||
G
|
||||
c
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
c
|
||||
G
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
G
|
||||
G
|
||||
G
|
||||
c
|
||||
Z
|
||||
c
|
||||
R
|
||||
E
|
||||
k
|
||||
k
|
||||
k
|
||||
k
|
||||
k
|
||||
k
|
||||
k
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
c
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
G
|
||||
G
|
||||
f
|
||||
G
|
||||
c
|
||||
o
|
||||
n
|
||||
X
|
||||
X
|
||||
z
|
||||
k
|
||||
H
|
||||
m
|
||||
L
|
||||
k
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
c
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
V
|
||||
C
|
||||
N
|
||||
N
|
||||
l
|
||||
I
|
||||
t
|
||||
j
|
||||
s
|
||||
k
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
c
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
G
|
||||
G
|
||||
c
|
||||
c
|
||||
G
|
||||
o
|
||||
W
|
||||
A
|
||||
S
|
||||
h
|
||||
x
|
||||
j
|
||||
Y
|
||||
D
|
||||
k
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
c
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
G
|
||||
c
|
||||
Z
|
||||
Z
|
||||
c
|
||||
o
|
||||
d
|
||||
e
|
||||
Q
|
||||
U
|
||||
y
|
||||
K
|
||||
t
|
||||
s
|
||||
k
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
c
|
||||
G
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
c
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
c
|
||||
o
|
||||
M
|
||||
A
|
||||
S
|
||||
l
|
||||
i
|
||||
t
|
||||
j
|
||||
u
|
||||
k
|
||||
X
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
c
|
||||
"}
|
||||
(12,1,1) = {"
|
||||
c
|
||||
Z
|
||||
Z
|
||||
c
|
||||
G
|
||||
G
|
||||
p
|
||||
w
|
||||
N
|
||||
N
|
||||
k
|
||||
q
|
||||
t
|
||||
s
|
||||
E
|
||||
X
|
||||
P
|
||||
Z
|
||||
Z
|
||||
c
|
||||
"}
|
||||
(13,1,1) = {"
|
||||
G
|
||||
c
|
||||
c
|
||||
G
|
||||
G
|
||||
o
|
||||
b
|
||||
X
|
||||
O
|
||||
N
|
||||
r
|
||||
t
|
||||
t
|
||||
t
|
||||
E
|
||||
X
|
||||
X
|
||||
Z
|
||||
Z
|
||||
c
|
||||
"}
|
||||
(14,1,1) = {"
|
||||
G
|
||||
G
|
||||
G
|
||||
B
|
||||
G
|
||||
a
|
||||
o
|
||||
X
|
||||
X
|
||||
z
|
||||
k
|
||||
T
|
||||
T
|
||||
F
|
||||
E
|
||||
X
|
||||
X
|
||||
Z
|
||||
Z
|
||||
c
|
||||
"}
|
||||
(15,1,1) = {"
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
c
|
||||
g
|
||||
E
|
||||
k
|
||||
k
|
||||
k
|
||||
k
|
||||
k
|
||||
k
|
||||
k
|
||||
X
|
||||
Z
|
||||
Z
|
||||
c
|
||||
G
|
||||
"}
|
||||
(16,1,1) = {"
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
c
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
c
|
||||
G
|
||||
"}
|
||||
(17,1,1) = {"
|
||||
G
|
||||
G
|
||||
G
|
||||
c
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
c
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
c
|
||||
c
|
||||
G
|
||||
G
|
||||
"}
|
||||
(18,1,1) = {"
|
||||
G
|
||||
G
|
||||
G
|
||||
c
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
c
|
||||
G
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
"}
|
||||
(19,1,1) = {"
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
c
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
Z
|
||||
c
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
"}
|
||||
(20,1,1) = {"
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
G
|
||||
"}
|
||||
@@ -0,0 +1,460 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/obj/structure/flora/ausbushes/palebush,
|
||||
/turf/open/floor/grass,
|
||||
/area/ruin/space)
|
||||
"g" = (
|
||||
/obj/structure/flora/ausbushes/ywflowers,
|
||||
/turf/open/floor/grass,
|
||||
/area/ruin/space)
|
||||
"m" = (
|
||||
/obj/structure/flora/ausbushes/fernybush,
|
||||
/turf/open/floor/grass,
|
||||
/area/ruin/space)
|
||||
"p" = (
|
||||
/obj/structure/flora/ausbushes/brflowers,
|
||||
/turf/open/floor/grass,
|
||||
/area/ruin/space)
|
||||
"q" = (
|
||||
/turf/open/floor/grass,
|
||||
/area/ruin/space)
|
||||
"C" = (
|
||||
/mob/living/simple_animal/butterfly,
|
||||
/turf/open/floor/grass,
|
||||
/area/ruin/space)
|
||||
"D" = (
|
||||
/obj/structure/toilet/secret{
|
||||
dir = 4;
|
||||
secret_type = /obj/item/gun/magic/wand/arcane
|
||||
},
|
||||
/turf/open/floor/grass,
|
||||
/area/ruin/space)
|
||||
"J" = (
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"L" = (
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/space)
|
||||
"O" = (
|
||||
/obj/item/clothing/head/wizard,
|
||||
/obj/item/clothing/suit/wizrobe,
|
||||
/obj/effect/decal/remains/human,
|
||||
/obj/effect/light_emitter/red_energy_sword,
|
||||
/turf/open/floor/grass,
|
||||
/area/ruin/space)
|
||||
"S" = (
|
||||
/turf/closed/mineral/random/no_caves,
|
||||
/area/ruin/space)
|
||||
"V" = (
|
||||
/obj/item/bong/coconut,
|
||||
/turf/open/floor/grass,
|
||||
/area/ruin/space)
|
||||
"Y" = (
|
||||
/obj/structure/flora/ausbushes/grassybush,
|
||||
/turf/open/floor/grass,
|
||||
/area/ruin/space)
|
||||
"Z" = (
|
||||
/obj/structure/flora/ausbushes/stalkybush,
|
||||
/turf/open/floor/grass,
|
||||
/area/ruin/space)
|
||||
|
||||
(1,1,1) = {"
|
||||
J
|
||||
J
|
||||
L
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
J
|
||||
L
|
||||
S
|
||||
L
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
L
|
||||
L
|
||||
L
|
||||
J
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
L
|
||||
S
|
||||
S
|
||||
S
|
||||
L
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
L
|
||||
L
|
||||
S
|
||||
S
|
||||
S
|
||||
L
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
L
|
||||
S
|
||||
S
|
||||
S
|
||||
L
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
L
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
L
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
J
|
||||
L
|
||||
S
|
||||
S
|
||||
L
|
||||
J
|
||||
J
|
||||
L
|
||||
L
|
||||
L
|
||||
L
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
L
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
J
|
||||
J
|
||||
L
|
||||
L
|
||||
J
|
||||
J
|
||||
L
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
L
|
||||
J
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
L
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
D
|
||||
m
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
L
|
||||
J
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
L
|
||||
S
|
||||
S
|
||||
S
|
||||
q
|
||||
q
|
||||
q
|
||||
q
|
||||
S
|
||||
S
|
||||
S
|
||||
L
|
||||
J
|
||||
J
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
L
|
||||
S
|
||||
S
|
||||
a
|
||||
C
|
||||
q
|
||||
p
|
||||
C
|
||||
S
|
||||
S
|
||||
S
|
||||
L
|
||||
J
|
||||
J
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
L
|
||||
S
|
||||
S
|
||||
q
|
||||
V
|
||||
O
|
||||
q
|
||||
q
|
||||
Z
|
||||
S
|
||||
S
|
||||
L
|
||||
J
|
||||
J
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
J
|
||||
J
|
||||
J
|
||||
L
|
||||
S
|
||||
S
|
||||
S
|
||||
q
|
||||
g
|
||||
q
|
||||
C
|
||||
q
|
||||
q
|
||||
S
|
||||
S
|
||||
L
|
||||
J
|
||||
J
|
||||
"}
|
||||
(12,1,1) = {"
|
||||
J
|
||||
J
|
||||
J
|
||||
L
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
q
|
||||
q
|
||||
Y
|
||||
q
|
||||
S
|
||||
S
|
||||
S
|
||||
L
|
||||
J
|
||||
J
|
||||
"}
|
||||
(13,1,1) = {"
|
||||
J
|
||||
J
|
||||
J
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
L
|
||||
L
|
||||
J
|
||||
J
|
||||
"}
|
||||
(14,1,1) = {"
|
||||
J
|
||||
J
|
||||
L
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
L
|
||||
L
|
||||
S
|
||||
L
|
||||
J
|
||||
"}
|
||||
(15,1,1) = {"
|
||||
J
|
||||
L
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
L
|
||||
L
|
||||
L
|
||||
L
|
||||
L
|
||||
L
|
||||
S
|
||||
S
|
||||
S
|
||||
L
|
||||
"}
|
||||
(16,1,1) = {"
|
||||
L
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
L
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
L
|
||||
S
|
||||
S
|
||||
S
|
||||
L
|
||||
"}
|
||||
(17,1,1) = {"
|
||||
J
|
||||
L
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
L
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
L
|
||||
S
|
||||
S
|
||||
S
|
||||
L
|
||||
J
|
||||
"}
|
||||
(18,1,1) = {"
|
||||
J
|
||||
L
|
||||
S
|
||||
S
|
||||
S
|
||||
S
|
||||
L
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
L
|
||||
S
|
||||
S
|
||||
S
|
||||
L
|
||||
J
|
||||
J
|
||||
"}
|
||||
(19,1,1) = {"
|
||||
J
|
||||
J
|
||||
L
|
||||
S
|
||||
S
|
||||
S
|
||||
L
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
L
|
||||
S
|
||||
S
|
||||
L
|
||||
J
|
||||
J
|
||||
J
|
||||
"}
|
||||
(20,1,1) = {"
|
||||
J
|
||||
J
|
||||
J
|
||||
L
|
||||
L
|
||||
L
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
L
|
||||
L
|
||||
J
|
||||
J
|
||||
J
|
||||
J
|
||||
"}
|
||||
@@ -0,0 +1,646 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/turf/closed/wall/mineral/iron,
|
||||
/area/ruin/space/has_grav)
|
||||
"d" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/flashlight/lamp,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/space/has_grav)
|
||||
"e" = (
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"f" = (
|
||||
/obj/structure/bed,
|
||||
/obj/item/bedsheet,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/space/has_grav)
|
||||
"g" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/machinery/door/airlock/highsecurity,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav)
|
||||
"h" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/space/has_grav)
|
||||
"k" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav)
|
||||
"l" = (
|
||||
/obj/structure/dresser,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/space/has_grav)
|
||||
"m" = (
|
||||
/obj/structure/table/wood,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/space/has_grav)
|
||||
"n" = (
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/space/has_grav)
|
||||
"o" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/reagent_containers/food/snacks/beans,
|
||||
/obj/item/reagent_containers/food/snacks/beans,
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/space/has_grav)
|
||||
"p" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
|
||||
dir = 10
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav)
|
||||
"q" = (
|
||||
/obj/machinery/atmospherics/components/unary/tank/air{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav)
|
||||
"r" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 5
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav)
|
||||
"u" = (
|
||||
/obj/structure/chair/comfy/black{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav)
|
||||
"v" = (
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/space)
|
||||
"w" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav)
|
||||
"x" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav)
|
||||
"y" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/space/has_grav)
|
||||
"z" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/door/airlock/highsecurity,
|
||||
/obj/structure/fans/tiny,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav)
|
||||
"A" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/export/bottle/wine,
|
||||
/obj/item/reagent_containers/food/drinks/drinkingglass,
|
||||
/obj/item/reagent_containers/food/drinks/drinkingglass,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/space/has_grav)
|
||||
"B" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/storage/box/donkpockets,
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/space/has_grav)
|
||||
"C" = (
|
||||
/turf/closed/mineral/random/no_caves,
|
||||
/area/ruin/space)
|
||||
"D" = (
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer1{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/space)
|
||||
"E" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav)
|
||||
"F" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/storage/firstaid/regular,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav)
|
||||
"G" = (
|
||||
/obj/machinery/computer/security,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav)
|
||||
"J" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
|
||||
dir = 9
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/space/has_grav)
|
||||
"N" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/storage/toolbox/mechanical,
|
||||
/obj/item/clothing/gloves/color/yellow,
|
||||
/obj/item/multitool,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav)
|
||||
"O" = (
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav)
|
||||
"P" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav)
|
||||
"Q" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/table/wood,
|
||||
/obj/machinery/microwave,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/space/has_grav)
|
||||
"T" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
|
||||
dir = 6
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/space/has_grav)
|
||||
"U" = (
|
||||
/obj/machinery/sleeper,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav)
|
||||
"V" = (
|
||||
/obj/machinery/computer/crew,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav)
|
||||
"W" = (
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer1,
|
||||
/obj/machinery/airalarm{
|
||||
dir = 1;
|
||||
pixel_y = -22
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav)
|
||||
"Y" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
|
||||
dir = 6
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/space)
|
||||
|
||||
(1,1,1) = {"
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
v
|
||||
v
|
||||
v
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
v
|
||||
v
|
||||
e
|
||||
e
|
||||
e
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
v
|
||||
C
|
||||
C
|
||||
C
|
||||
v
|
||||
e
|
||||
e
|
||||
e
|
||||
v
|
||||
v
|
||||
C
|
||||
C
|
||||
v
|
||||
e
|
||||
e
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
v
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
v
|
||||
v
|
||||
e
|
||||
e
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
v
|
||||
e
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
e
|
||||
e
|
||||
e
|
||||
v
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
v
|
||||
v
|
||||
v
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
v
|
||||
e
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
e
|
||||
e
|
||||
v
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
v
|
||||
v
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
v
|
||||
e
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
e
|
||||
v
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
v
|
||||
v
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
v
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
e
|
||||
v
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
v
|
||||
v
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
v
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
e
|
||||
v
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
v
|
||||
v
|
||||
v
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
v
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
e
|
||||
v
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
v
|
||||
v
|
||||
v
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
v
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
e
|
||||
v
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
Y
|
||||
D
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
v
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
v
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
z
|
||||
a
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
v
|
||||
"}
|
||||
(12,1,1) = {"
|
||||
v
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
a
|
||||
V
|
||||
O
|
||||
x
|
||||
k
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
C
|
||||
C
|
||||
v
|
||||
e
|
||||
"}
|
||||
(13,1,1) = {"
|
||||
v
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
a
|
||||
G
|
||||
u
|
||||
O
|
||||
k
|
||||
a
|
||||
l
|
||||
f
|
||||
f
|
||||
a
|
||||
C
|
||||
C
|
||||
v
|
||||
e
|
||||
"}
|
||||
(14,1,1) = {"
|
||||
v
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
a
|
||||
F
|
||||
O
|
||||
P
|
||||
W
|
||||
a
|
||||
d
|
||||
n
|
||||
h
|
||||
a
|
||||
C
|
||||
C
|
||||
v
|
||||
e
|
||||
"}
|
||||
(15,1,1) = {"
|
||||
v
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
a
|
||||
a
|
||||
N
|
||||
w
|
||||
r
|
||||
a
|
||||
n
|
||||
T
|
||||
Q
|
||||
a
|
||||
C
|
||||
C
|
||||
v
|
||||
e
|
||||
"}
|
||||
(16,1,1) = {"
|
||||
v
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
a
|
||||
U
|
||||
E
|
||||
p
|
||||
g
|
||||
y
|
||||
J
|
||||
B
|
||||
a
|
||||
C
|
||||
C
|
||||
v
|
||||
e
|
||||
"}
|
||||
(17,1,1) = {"
|
||||
e
|
||||
e
|
||||
v
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
a
|
||||
a
|
||||
a
|
||||
q
|
||||
a
|
||||
m
|
||||
o
|
||||
A
|
||||
a
|
||||
C
|
||||
v
|
||||
v
|
||||
e
|
||||
"}
|
||||
(18,1,1) = {"
|
||||
e
|
||||
e
|
||||
e
|
||||
v
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
C
|
||||
v
|
||||
e
|
||||
e
|
||||
"}
|
||||
(19,1,1) = {"
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
v
|
||||
v
|
||||
v
|
||||
v
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
v
|
||||
e
|
||||
e
|
||||
"}
|
||||
(20,1,1) = {"
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
v
|
||||
v
|
||||
v
|
||||
v
|
||||
v
|
||||
v
|
||||
v
|
||||
v
|
||||
v
|
||||
e
|
||||
e
|
||||
e
|
||||
"}
|
||||
+34598
-34592
File diff suppressed because it is too large
Load Diff
+34234
-34227
File diff suppressed because it is too large
Load Diff
@@ -2522,7 +2522,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/ai_monitored/turret_protected/aisat/foyer)
|
||||
"aey" = (
|
||||
/turf/closed/wall/rust,
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/security/main)
|
||||
"aez" = (
|
||||
/turf/closed/wall,
|
||||
@@ -4032,7 +4032,7 @@
|
||||
/area/engine/break_room)
|
||||
"agO" = (
|
||||
/obj/structure/sign/warning/electricshock,
|
||||
/turf/closed/wall/rust,
|
||||
/turf/closed/wall/r_wall/rust,
|
||||
/area/crew_quarters/heads/hos)
|
||||
"agP" = (
|
||||
/obj/effect/spawner/structure/window/reinforced,
|
||||
@@ -12647,7 +12647,7 @@
|
||||
/area/maintenance/starboard)
|
||||
"auw" = (
|
||||
/obj/structure/sign/warning/securearea,
|
||||
/turf/closed/wall,
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/bridge)
|
||||
"aux" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
@@ -16376,6 +16376,7 @@
|
||||
pixel_y = -24
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/landmark/start/paramedic,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/medical/morgue)
|
||||
"aAs" = (
|
||||
@@ -16989,7 +16990,6 @@
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
/area/medical/cryo)
|
||||
"aBr" = (
|
||||
/obj/machinery/rnd/production/circuit_imprinter/department/science,
|
||||
/obj/effect/turf_decal/bot,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 8
|
||||
@@ -17001,6 +17001,7 @@
|
||||
/obj/machinery/status_display/evac{
|
||||
pixel_x = 32
|
||||
},
|
||||
/obj/machinery/rnd/production/circuit_imprinter,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/science/robotics/lab)
|
||||
"aBs" = (
|
||||
@@ -26734,6 +26735,9 @@
|
||||
"aRe" = (
|
||||
/obj/effect/turf_decal/tile/blue,
|
||||
/obj/effect/turf_decal/tile/blue,
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
/area/medical/medbay/central)
|
||||
"aRf" = (
|
||||
@@ -27485,9 +27489,6 @@
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/hallway/primary/fore)
|
||||
"aRZ" = (
|
||||
/obj/item/twohanded/required/kirbyplants{
|
||||
icon_state = "plant-18"
|
||||
},
|
||||
/obj/effect/turf_decal/tile/blue,
|
||||
/obj/effect/turf_decal/tile/blue{
|
||||
dir = 4
|
||||
@@ -27496,6 +27497,15 @@
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/turf_decal/tile/blue,
|
||||
/obj/structure/table,
|
||||
/obj/item/folder/white,
|
||||
/obj/item/reagent_containers/dropper,
|
||||
/obj/item/reagent_containers/dropper,
|
||||
/obj/item/reagent_containers/glass/beaker,
|
||||
/obj/item/reagent_containers/glass/beaker,
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 10
|
||||
},
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
/area/medical/medbay/central)
|
||||
"aSa" = (
|
||||
@@ -27533,16 +27543,12 @@
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
/area/medical/medbay/central)
|
||||
"aSc" = (
|
||||
/obj/machinery/disposal/bin,
|
||||
/obj/effect/turf_decal/bot,
|
||||
/obj/effect/turf_decal/tile/yellow,
|
||||
/obj/effect/turf_decal/tile/yellow{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/turf_decal/tile/yellow,
|
||||
/obj/structure/disposalpipe/trunk{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
/area/medical/medbay/central)
|
||||
"aSd" = (
|
||||
@@ -28123,7 +28129,6 @@
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
/area/medical/storage)
|
||||
"aSR" = (
|
||||
/obj/structure/table,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 1
|
||||
},
|
||||
@@ -28133,15 +28138,14 @@
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 4
|
||||
},
|
||||
/obj/item/folder/white,
|
||||
/obj/item/reagent_containers/glass/beaker,
|
||||
/obj/item/reagent_containers/glass/beaker,
|
||||
/obj/item/reagent_containers/dropper,
|
||||
/obj/item/reagent_containers/dropper,
|
||||
/obj/machinery/airalarm{
|
||||
dir = 8;
|
||||
pixel_x = 24
|
||||
},
|
||||
/obj/machinery/disposal/bin,
|
||||
/obj/structure/disposalpipe/trunk{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/medical/medbay/central)
|
||||
"aSS" = (
|
||||
@@ -29776,9 +29780,6 @@
|
||||
/obj/effect/decal/cleanable/blood/old,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-4"
|
||||
},
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
@@ -31385,6 +31386,9 @@
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-4"
|
||||
},
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/turf/open/floor/engine,
|
||||
/area/ai_monitored/turret_protected/ai_upload)
|
||||
"aXE" = (
|
||||
@@ -31799,6 +31803,7 @@
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 9
|
||||
},
|
||||
/obj/effect/landmark/start/paramedic,
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
/area/medical/storage)
|
||||
"aYp" = (
|
||||
@@ -32001,7 +32006,7 @@
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 10
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
/area/medical/medbay/central)
|
||||
@@ -32239,6 +32244,13 @@
|
||||
"aZb" = (
|
||||
/obj/machinery/holopad,
|
||||
/obj/effect/turf_decal/bot,
|
||||
/obj/machinery/power/apc/highcap/five_k{
|
||||
areastring = "/area/ai_monitored/turret_protected/ai_upload";
|
||||
dir = 1;
|
||||
name = "Upload APC";
|
||||
pixel_y = -24
|
||||
},
|
||||
/obj/structure/cable,
|
||||
/turf/open/floor/engine,
|
||||
/area/ai_monitored/turret_protected/ai_upload)
|
||||
"aZc" = (
|
||||
@@ -33389,6 +33401,7 @@
|
||||
dir = 1
|
||||
},
|
||||
/obj/item/bedsheet/medical,
|
||||
/obj/effect/landmark/start/paramedic,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/medical/surgery)
|
||||
"baP" = (
|
||||
@@ -33516,7 +33529,7 @@
|
||||
/turf/closed/wall,
|
||||
/area/science/storage)
|
||||
"bbb" = (
|
||||
/turf/closed/wall,
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/security/checkpoint/science/research)
|
||||
"bbc" = (
|
||||
/turf/closed/wall/r_wall,
|
||||
@@ -34233,21 +34246,10 @@
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/science/lab)
|
||||
"bci" = (
|
||||
/obj/structure/table,
|
||||
/obj/effect/turf_decal/tile/neutral,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 8
|
||||
},
|
||||
/obj/item/clothing/gloves/color/latex{
|
||||
pixel_x = 4;
|
||||
pixel_y = 4
|
||||
},
|
||||
/obj/item/clothing/gloves/color/latex,
|
||||
/obj/item/clothing/glasses/science{
|
||||
pixel_x = 4;
|
||||
pixel_y = 4
|
||||
},
|
||||
/obj/item/clothing/glasses/science,
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
@@ -34259,6 +34261,7 @@
|
||||
/obj/structure/extinguisher_cabinet{
|
||||
pixel_y = 28
|
||||
},
|
||||
/obj/machinery/suit_storage_unit/rd,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/science/mixing)
|
||||
"bcj" = (
|
||||
@@ -34497,7 +34500,7 @@
|
||||
},
|
||||
/area/maintenance/port)
|
||||
"bcD" = (
|
||||
/turf/closed/wall/rust,
|
||||
/turf/closed/wall/r_wall/rust,
|
||||
/area/science/mixing)
|
||||
"bcE" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
@@ -49023,15 +49026,6 @@
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/security/brig)
|
||||
"byB" = (
|
||||
/obj/machinery/power/apc/highcap/five_k{
|
||||
areastring = "/area/ai_monitored/turret_protected/ai_upload";
|
||||
dir = 1;
|
||||
name = "Upload APC";
|
||||
pixel_y = 26
|
||||
},
|
||||
/obj/structure/cable{
|
||||
icon_state = "0-8"
|
||||
},
|
||||
/turf/open/floor/circuit/green{
|
||||
luminosity = 2
|
||||
},
|
||||
@@ -49295,15 +49289,7 @@
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/crew_quarters/fitness/recreation)
|
||||
"byT" = (
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/recharge_station,
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/turf/closed/wall,
|
||||
/area/ai_monitored/turret_protected/ai_upload)
|
||||
"byU" = (
|
||||
/obj/effect/turf_decal/tile/blue{
|
||||
@@ -49516,7 +49502,6 @@
|
||||
},
|
||||
/area/ai_monitored/turret_protected/ai_upload)
|
||||
"bzk" = (
|
||||
/obj/item/twohanded/required/kirbyplants/photosynthetic,
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-8"
|
||||
},
|
||||
@@ -57112,9 +57097,6 @@
|
||||
/area/crew_quarters/toilet/restrooms)
|
||||
"bKV" = (
|
||||
/obj/effect/turf_decal/box,
|
||||
/obj/structure/toilet{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/mirror{
|
||||
pixel_x = -28
|
||||
},
|
||||
@@ -57140,6 +57122,10 @@
|
||||
pixel_x = 24;
|
||||
pixel_y = -8
|
||||
},
|
||||
/obj/structure/toilet{
|
||||
contents = newlist(/obj/item/toy/snappop/phoenix);
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
/area/crew_quarters/toilet/restrooms)
|
||||
"bKW" = (
|
||||
@@ -69274,8 +69260,9 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/primary/aft)
|
||||
"cdc" = (
|
||||
/turf/closed/wall,
|
||||
/area/ai_monitored/turret_protected/ai_upload)
|
||||
/obj/structure/sign/poster/contraband/random,
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/maintenance/starboard)
|
||||
"cdd" = (
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 4
|
||||
@@ -69772,11 +69759,11 @@
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
/area/security/brig)
|
||||
"cdY" = (
|
||||
/turf/closed/wall,
|
||||
/area/ai_monitored/turret_protected/ai)
|
||||
/turf/closed/wall/r_wall/rust,
|
||||
/area/maintenance/central)
|
||||
"cdZ" = (
|
||||
/turf/closed/wall/rust,
|
||||
/area/ai_monitored/turret_protected/ai)
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/maintenance/central)
|
||||
"cea" = (
|
||||
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
|
||||
dir = 1
|
||||
@@ -75304,7 +75291,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/engine/engineering)
|
||||
"cmP" = (
|
||||
/turf/closed/wall,
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/crew_quarters/heads/hos)
|
||||
"cmQ" = (
|
||||
/obj/machinery/door/poddoor/preopen{
|
||||
@@ -81648,7 +81635,6 @@
|
||||
pixel_x = 4;
|
||||
pixel_y = 4
|
||||
},
|
||||
/obj/item/grenade/flashbang,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/maintenance/port)
|
||||
@@ -82297,7 +82283,6 @@
|
||||
dir = 4
|
||||
},
|
||||
/obj/item/clothing/shoes/jackboots,
|
||||
/obj/item/clothing/suit/armor/vest,
|
||||
/obj/item/clothing/neck/stethoscope,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
@@ -83015,7 +83000,6 @@
|
||||
/area/maintenance/fore)
|
||||
"cCF" = (
|
||||
/obj/structure/reagent_dispensers/watertank,
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/obj/item/reagent_containers/glass/bucket,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
@@ -83052,7 +83036,6 @@
|
||||
/area/maintenance/fore)
|
||||
"cCM" = (
|
||||
/obj/structure/janitorialcart,
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
@@ -83085,7 +83068,6 @@
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/maintenance/starboard/fore)
|
||||
"cCR" = (
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/obj/machinery/portable_atmospherics/canister/oxygen,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 8
|
||||
@@ -87369,8 +87351,8 @@
|
||||
/area/bridge)
|
||||
"dww" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/plating,
|
||||
/area/engine/engineering)
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/space/nearstation)
|
||||
"dxq" = (
|
||||
/obj/effect/turf_decal/bot,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
@@ -87404,12 +87386,8 @@
|
||||
/area/science/research)
|
||||
"dQe" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/light{
|
||||
dir = 8;
|
||||
light_color = "#e8eaff"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/engine/engineering)
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/space/nearstation)
|
||||
"dYu" = (
|
||||
/obj/effect/spawner/lootdrop/grille_or_trash,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
@@ -87530,19 +87508,11 @@
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/decal/cleanable/cobweb/cobweb2,
|
||||
/turf/open/floor/plating,
|
||||
/area/engine/engineering)
|
||||
/turf/closed/mineral/random/labormineral,
|
||||
/area/space/nearstation)
|
||||
"fAH" = (
|
||||
/obj/machinery/door/airlock/engineering/glass{
|
||||
name = "Laser Room";
|
||||
req_access_txt = "10"
|
||||
},
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/effect/decal/cleanable/oil/slippery,
|
||||
/turf/open/floor/plating,
|
||||
/area/engine/engineering)
|
||||
/turf/closed/wall/r_wall/rust,
|
||||
/area/security/main)
|
||||
"fXq" = (
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 8
|
||||
@@ -87584,8 +87554,8 @@
|
||||
/area/maintenance/port/fore)
|
||||
"gvR" = (
|
||||
/obj/structure/sign/warning,
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/engine/engineering)
|
||||
/turf/closed/mineral/random/labormineral,
|
||||
/area/space/nearstation)
|
||||
"gwD" = (
|
||||
/obj/effect/turf_decal/tile/neutral,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
@@ -87616,8 +87586,9 @@
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/crew_quarters/locker)
|
||||
"gIE" = (
|
||||
/turf/open/floor/plating,
|
||||
/area/engine/engineering)
|
||||
/obj/effect/spawner/structure/window/plasma/reinforced,
|
||||
/turf/closed/mineral/random/labormineral,
|
||||
/area/space/nearstation)
|
||||
"gJq" = (
|
||||
/obj/structure/sign/departments/evac,
|
||||
/turf/closed/wall/rust,
|
||||
@@ -87851,8 +87822,20 @@
|
||||
/area/ai_monitored/turret_protected/ai_upload)
|
||||
"jPE" = (
|
||||
/obj/structure/cable,
|
||||
/turf/open/floor/plating,
|
||||
/area/engine/engineering)
|
||||
/turf/closed/mineral/random/labormineral,
|
||||
/area/space/nearstation)
|
||||
"jQY" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/item/clothing/under/maid,
|
||||
/turf/open/floor/plating{
|
||||
icon_state = "panelscorched"
|
||||
},
|
||||
/area/maintenance/starboard/aft)
|
||||
"jRw" = (
|
||||
/obj/structure/sign/poster/official/high_class_martini,
|
||||
/turf/closed/wall/r_wall,
|
||||
@@ -88066,14 +88049,9 @@
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/science/research)
|
||||
"mLN" = (
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Laser Room Starboard";
|
||||
dir = 1;
|
||||
name = "laser room camera";
|
||||
network = list("ss13","engine")
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/engine/engineering)
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/closed/mineral/random/labormineral,
|
||||
/area/space/nearstation)
|
||||
"mPm" = (
|
||||
/turf/closed/wall/rust,
|
||||
/area/security/checkpoint/supply)
|
||||
@@ -88137,8 +88115,8 @@
|
||||
/area/hallway/secondary/entry)
|
||||
"pCe" = (
|
||||
/obj/effect/decal/cleanable/glass,
|
||||
/turf/open/floor/plating,
|
||||
/area/engine/engineering)
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/space/nearstation)
|
||||
"pFw" = (
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
@@ -88330,6 +88308,16 @@
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/port/fore)
|
||||
"ukP" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/mob/living/simple_animal/bot/cleanbot{
|
||||
name = "Madam Sweepsky";
|
||||
on = 0
|
||||
},
|
||||
/turf/open/floor/plating{
|
||||
icon_state = "platingdmg3"
|
||||
},
|
||||
/area/maintenance/starboard/aft)
|
||||
"umD" = (
|
||||
/obj/effect/turf_decal/tile/neutral,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
@@ -88361,10 +88349,17 @@
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/primary/fore)
|
||||
"uqy" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/item/clothing/under/janimaid,
|
||||
/turf/open/floor/plating{
|
||||
icon_state = "platingdmg1"
|
||||
},
|
||||
/area/maintenance/starboard/aft)
|
||||
"uxQ" = (
|
||||
/obj/effect/decal/cleanable/ash,
|
||||
/turf/open/floor/plating,
|
||||
/area/engine/engineering)
|
||||
/turf/closed/mineral/random/labormineral,
|
||||
/area/space/nearstation)
|
||||
"uzR" = (
|
||||
/turf/closed/wall/rust,
|
||||
/area/storage/primary)
|
||||
@@ -88446,9 +88441,6 @@
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/engine/engineering)
|
||||
"xTw" = (
|
||||
@@ -105353,16 +105345,16 @@ bSO
|
||||
bSW
|
||||
bUd
|
||||
bVO
|
||||
agS
|
||||
agS
|
||||
agS
|
||||
aey
|
||||
agS
|
||||
fAH
|
||||
fAH
|
||||
aey
|
||||
aey
|
||||
byu
|
||||
agS
|
||||
agS
|
||||
agS
|
||||
agS
|
||||
aey
|
||||
fAH
|
||||
aey
|
||||
aey
|
||||
clr
|
||||
cid
|
||||
akj
|
||||
@@ -105565,13 +105557,13 @@ aCI
|
||||
aET
|
||||
aHY
|
||||
aIc
|
||||
aPc
|
||||
aPc
|
||||
aPc
|
||||
aOZ
|
||||
aOZ
|
||||
aOZ
|
||||
aSo
|
||||
aPc
|
||||
aPc
|
||||
aPc
|
||||
aOZ
|
||||
aOZ
|
||||
aOZ
|
||||
aOZ
|
||||
aOZ
|
||||
bMV
|
||||
@@ -105610,7 +105602,7 @@ ajd
|
||||
aWI
|
||||
bsD
|
||||
aWI
|
||||
agS
|
||||
aey
|
||||
ahe
|
||||
bYJ
|
||||
ahY
|
||||
@@ -105619,7 +105611,7 @@ cbT
|
||||
ccM
|
||||
cDr
|
||||
ajR
|
||||
agS
|
||||
aey
|
||||
cgQ
|
||||
bBG
|
||||
crD
|
||||
@@ -105867,7 +105859,7 @@ agX
|
||||
bSX
|
||||
bUe
|
||||
bVP
|
||||
agS
|
||||
aey
|
||||
aMK
|
||||
bYK
|
||||
ahZ
|
||||
@@ -106124,7 +106116,7 @@ agX
|
||||
agX
|
||||
agX
|
||||
agX
|
||||
agS
|
||||
aey
|
||||
aog
|
||||
bYL
|
||||
aia
|
||||
@@ -106133,12 +106125,12 @@ aiG
|
||||
cyK
|
||||
cDB
|
||||
cfb
|
||||
agS
|
||||
aey
|
||||
ajx
|
||||
ajx
|
||||
ajd
|
||||
ajd
|
||||
ajd
|
||||
ajx
|
||||
ajx
|
||||
ajx
|
||||
ajx
|
||||
anZ
|
||||
cmt
|
||||
cko
|
||||
@@ -106903,7 +106895,7 @@ ajc
|
||||
aiJ
|
||||
amS
|
||||
cKm
|
||||
agS
|
||||
aey
|
||||
cmP
|
||||
aUe
|
||||
cmP
|
||||
@@ -107160,7 +107152,7 @@ aiy
|
||||
aiK
|
||||
ajf
|
||||
cKn
|
||||
agS
|
||||
aey
|
||||
cgp
|
||||
cgX
|
||||
cij
|
||||
@@ -107674,7 +107666,7 @@ cHA
|
||||
cbV
|
||||
ccN
|
||||
cdT
|
||||
agS
|
||||
aey
|
||||
cgs
|
||||
akS
|
||||
ckx
|
||||
@@ -107931,7 +107923,7 @@ agS
|
||||
agS
|
||||
cIa
|
||||
btJ
|
||||
agS
|
||||
aey
|
||||
cmP
|
||||
alo
|
||||
anl
|
||||
@@ -109949,7 +109941,7 @@ bbe
|
||||
bAN
|
||||
aTD
|
||||
aVD
|
||||
bAN
|
||||
afe
|
||||
agR
|
||||
cuH
|
||||
aUD
|
||||
@@ -110206,7 +110198,7 @@ bbf
|
||||
bAN
|
||||
bAN
|
||||
aoQ
|
||||
bAN
|
||||
afe
|
||||
ajm
|
||||
blX
|
||||
afe
|
||||
@@ -116825,10 +116817,10 @@ asZ
|
||||
aak
|
||||
aan
|
||||
aaH
|
||||
cdY
|
||||
cdZ
|
||||
asZ
|
||||
aAg
|
||||
cdW
|
||||
cdY
|
||||
asZ
|
||||
cei
|
||||
abS
|
||||
acb
|
||||
@@ -117082,7 +117074,7 @@ asZ
|
||||
aLJ
|
||||
aas
|
||||
aaP
|
||||
cdY
|
||||
asZ
|
||||
ced
|
||||
aby
|
||||
ceq
|
||||
@@ -117339,10 +117331,10 @@ aAg
|
||||
aal
|
||||
aaw
|
||||
aaU
|
||||
cdZ
|
||||
cdY
|
||||
aAg
|
||||
asZ
|
||||
cfK
|
||||
cdY
|
||||
asZ
|
||||
ces
|
||||
abW
|
||||
abs
|
||||
@@ -118165,7 +118157,7 @@ cdg
|
||||
aQh
|
||||
bwp
|
||||
ciX
|
||||
cdc
|
||||
gMU
|
||||
byq
|
||||
aXz
|
||||
aYZ
|
||||
@@ -118679,7 +118671,7 @@ avo
|
||||
aQj
|
||||
byj
|
||||
cje
|
||||
cdc
|
||||
arl
|
||||
byB
|
||||
aXG
|
||||
aZc
|
||||
@@ -119977,7 +119969,7 @@ biA
|
||||
bjT
|
||||
atT
|
||||
atT
|
||||
atT
|
||||
atj
|
||||
beM
|
||||
asx
|
||||
bxx
|
||||
@@ -120747,7 +120739,7 @@ apX
|
||||
cCk
|
||||
bka
|
||||
blW
|
||||
atj
|
||||
atT
|
||||
alj
|
||||
bqB
|
||||
asx
|
||||
@@ -121004,8 +120996,8 @@ aox
|
||||
apX
|
||||
aox
|
||||
aox
|
||||
apX
|
||||
aox
|
||||
cdY
|
||||
cdZ
|
||||
ahy
|
||||
asx
|
||||
aqt
|
||||
@@ -122604,10 +122596,10 @@ axW
|
||||
axa
|
||||
axa
|
||||
axa
|
||||
axW
|
||||
axW
|
||||
axa
|
||||
axa
|
||||
gIE
|
||||
gIE
|
||||
aeu
|
||||
aeu
|
||||
gvR
|
||||
aeu
|
||||
aeU
|
||||
@@ -122860,14 +122852,14 @@ cvr
|
||||
ckw
|
||||
cmw
|
||||
xON
|
||||
fAH
|
||||
jPE
|
||||
gIE
|
||||
gIE
|
||||
dQe
|
||||
axa
|
||||
jPE
|
||||
aeu
|
||||
aeU
|
||||
dQe
|
||||
aeU
|
||||
aeU
|
||||
aeU
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
@@ -123118,12 +123110,12 @@ ckH
|
||||
cmA
|
||||
czf
|
||||
axW
|
||||
dww
|
||||
gIE
|
||||
gIE
|
||||
gIE
|
||||
axa
|
||||
aeu
|
||||
dQe
|
||||
aeU
|
||||
aeU
|
||||
aeU
|
||||
aeU
|
||||
aUz
|
||||
aeU
|
||||
aeU
|
||||
aaa
|
||||
@@ -123376,12 +123368,12 @@ aAM
|
||||
aAM
|
||||
axW
|
||||
pCe
|
||||
gIE
|
||||
gIE
|
||||
gIE
|
||||
axa
|
||||
aeu
|
||||
aeu
|
||||
aeU
|
||||
aeU
|
||||
aeU
|
||||
aeU
|
||||
aeU
|
||||
aeU
|
||||
aeU
|
||||
aeU
|
||||
aaa
|
||||
@@ -123632,11 +123624,11 @@ aAM
|
||||
aAM
|
||||
iBL
|
||||
axa
|
||||
gIE
|
||||
gIE
|
||||
dww
|
||||
mLN
|
||||
axa
|
||||
aeu
|
||||
aeU
|
||||
dQe
|
||||
aeU
|
||||
aeU
|
||||
aeu
|
||||
aeu
|
||||
aeu
|
||||
@@ -123889,11 +123881,11 @@ aAM
|
||||
aAM
|
||||
aMW
|
||||
axa
|
||||
gIE
|
||||
gIE
|
||||
gIE
|
||||
gIE
|
||||
axa
|
||||
aeu
|
||||
aeu
|
||||
aeU
|
||||
coy
|
||||
aeu
|
||||
aeu
|
||||
aeu
|
||||
aeU
|
||||
@@ -124147,10 +124139,10 @@ chH
|
||||
aLN
|
||||
axa
|
||||
fyr
|
||||
dww
|
||||
gIE
|
||||
mLN
|
||||
aeu
|
||||
uxQ
|
||||
axa
|
||||
aeu
|
||||
aeu
|
||||
aeU
|
||||
aeU
|
||||
@@ -124403,10 +124395,10 @@ aAM
|
||||
aAM
|
||||
aNf
|
||||
axa
|
||||
axa
|
||||
axa
|
||||
axa
|
||||
axa
|
||||
aeu
|
||||
aeu
|
||||
aeu
|
||||
aeu
|
||||
gvR
|
||||
aeu
|
||||
aeu
|
||||
@@ -125687,7 +125679,7 @@ cki
|
||||
axW
|
||||
axa
|
||||
axa
|
||||
cok
|
||||
axa
|
||||
aeu
|
||||
aeu
|
||||
aeu
|
||||
@@ -125916,8 +125908,8 @@ bEg
|
||||
bOl
|
||||
bSJ
|
||||
bSI
|
||||
bGH
|
||||
bGr
|
||||
ukP
|
||||
uqy
|
||||
bEg
|
||||
bAT
|
||||
bOC
|
||||
@@ -126174,7 +126166,7 @@ bWh
|
||||
bTy
|
||||
cxB
|
||||
ceN
|
||||
chZ
|
||||
jQY
|
||||
cxB
|
||||
cjE
|
||||
bXb
|
||||
@@ -129732,7 +129724,7 @@ bba
|
||||
bba
|
||||
biY
|
||||
bba
|
||||
bbc
|
||||
bba
|
||||
bbc
|
||||
bbc
|
||||
bdX
|
||||
@@ -129990,7 +129982,7 @@ aSK
|
||||
aUl
|
||||
aVS
|
||||
aYn
|
||||
bbN
|
||||
awi
|
||||
ccs
|
||||
bdY
|
||||
bhH
|
||||
@@ -130504,7 +130496,7 @@ aSS
|
||||
aUo
|
||||
baC
|
||||
aYr
|
||||
bbN
|
||||
awi
|
||||
ccu
|
||||
avA
|
||||
acm
|
||||
@@ -130761,7 +130753,7 @@ bcb
|
||||
bcQ
|
||||
bbN
|
||||
cbf
|
||||
bbN
|
||||
awi
|
||||
cfi
|
||||
avA
|
||||
acm
|
||||
@@ -131013,12 +131005,12 @@ bbi
|
||||
cxQ
|
||||
bbi
|
||||
awi
|
||||
bbN
|
||||
awi
|
||||
baC
|
||||
baC
|
||||
bcD
|
||||
aYs
|
||||
cbk
|
||||
cdc
|
||||
cna
|
||||
bkd
|
||||
bUG
|
||||
|
||||
+41081
-41074
File diff suppressed because it is too large
Load Diff
@@ -655,7 +655,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/mine/laborcamp)
|
||||
"ia" = (
|
||||
/obj/item/reagent_containers/glass/bucket,
|
||||
/obj/item/reagent_containers/glass/bucket/wood,
|
||||
/obj/structure/stone_tile/block/cracked{
|
||||
dir = 4
|
||||
},
|
||||
@@ -750,8 +750,23 @@
|
||||
/obj/item/stack/sheet/mineral/wood,
|
||||
/obj/item/stack/sheet/mineral/wood,
|
||||
/obj/item/stack/sheet/mineral/wood,
|
||||
/obj/item/seeds/tower,
|
||||
/obj/item/seeds/tower,
|
||||
/obj/item/seeds/ambrosia/deus{
|
||||
yield = 5
|
||||
potency = 50
|
||||
},
|
||||
/obj/item/seeds/ambrosia/deus{
|
||||
yield = 5
|
||||
potency = 50
|
||||
},
|
||||
/obj/item/seeds/tower{
|
||||
yield = 5
|
||||
potency = 50
|
||||
},
|
||||
/obj/item/seeds/tower{
|
||||
yield = 5
|
||||
potency = 50
|
||||
},
|
||||
/mob/living/simple_animal/hostile/asteroid/gutlunch/guthen,
|
||||
/turf/open/indestructible/boss,
|
||||
/area/ruin/unpowered/ash_walkers)
|
||||
"iJ" = (
|
||||
@@ -2179,8 +2194,15 @@
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/ruin/unpowered/ash_walkers)
|
||||
"wm" = (
|
||||
/obj/item/seeds/glowshroom,
|
||||
/obj/item/seeds/glowshroom,
|
||||
/obj/item/seeds/glowshroom{
|
||||
yield = 5
|
||||
potency = 50
|
||||
},
|
||||
/obj/item/seeds/glowshroom{
|
||||
yield = 5
|
||||
potency = 50
|
||||
},
|
||||
/mob/living/simple_animal/hostile/asteroid/gutlunch/gubbuck,
|
||||
/obj/structure/stone_tile/block{
|
||||
dir = 4
|
||||
},
|
||||
@@ -3327,8 +3349,15 @@
|
||||
dir = 4
|
||||
},
|
||||
/obj/item/storage/bag/plants/portaseeder,
|
||||
/obj/item/seeds/cotton,
|
||||
/obj/item/seeds/cotton,
|
||||
/obj/item/storage/bag/plants,
|
||||
/obj/item/seeds/cotton{
|
||||
yield = 5
|
||||
potency = 50
|
||||
},
|
||||
/obj/item/seeds/cotton{
|
||||
yield = 5
|
||||
potency = 50
|
||||
},
|
||||
/turf/open/indestructible/boss,
|
||||
/area/ruin/unpowered/ash_walkers)
|
||||
"Vj" = (
|
||||
@@ -3355,10 +3384,9 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/mine/laborcamp)
|
||||
"VI" = (
|
||||
/obj/structure/stone_tile{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/reagent_dispensers/watertank,
|
||||
/obj/structure/well_foundation,
|
||||
/obj/item/reagent_containers/glass/bucket/wood,
|
||||
/obj/item/reagent_containers/glass/bucket/wood,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/ruin/unpowered/ash_walkers)
|
||||
"VP" = (
|
||||
|
||||
+53634
-54007
File diff suppressed because it is too large
Load Diff
+41194
-41187
File diff suppressed because it is too large
Load Diff
@@ -34,6 +34,21 @@
|
||||
#define HIJACK_HIJACKER 1 //Needs to be present for shuttle to be hijacked
|
||||
#define HIJACK_PREVENT 2 //Prevents hijacking same way as non-antags
|
||||
|
||||
//Syndicate Contracts
|
||||
#define CONTRACT_STATUS_INACTIVE 1
|
||||
#define CONTRACT_STATUS_ACTIVE 2
|
||||
#define CONTRACT_STATUS_BOUNTY_CONSOLE_ACTIVE 3
|
||||
#define CONTRACT_STATUS_EXTRACTING 4
|
||||
#define CONTRACT_STATUS_COMPLETE 5
|
||||
#define CONTRACT_STATUS_ABORTED 6
|
||||
|
||||
#define CONTRACT_PAYOUT_LARGE 1
|
||||
#define CONTRACT_PAYOUT_MEDIUM 2
|
||||
#define CONTRACT_PAYOUT_SMALL 3
|
||||
|
||||
#define CONTRACT_UPLINK_PAGE_CONTRACTS "CONTRACTS"
|
||||
#define CONTRACT_UPLINK_PAGE_HUB "HUB"
|
||||
|
||||
//Overthrow time to update heads obj
|
||||
#define OBJECTIVE_UPDATING_TIME 300
|
||||
|
||||
|
||||
@@ -39,9 +39,9 @@
|
||||
#define COCK_SIZE_MIN 1
|
||||
#define COCK_SIZE_MAX 20
|
||||
|
||||
#define COCK_GIRTH_RATIO_MAX 1.25
|
||||
#define COCK_GIRTH_RATIO_DEF 0.75
|
||||
#define COCK_GIRTH_RATIO_MIN 0.5
|
||||
#define COCK_DIAMETER_RATIO_MAX 0.42
|
||||
#define COCK_DIAMETER_RATIO_DEF 0.25
|
||||
#define COCK_DIAMETER_RATIO_MIN 0.15
|
||||
|
||||
#define KNOT_GIRTH_RATIO_MAX 3
|
||||
#define KNOT_GIRTH_RATIO_DEF 2.1
|
||||
|
||||
@@ -47,6 +47,10 @@
|
||||
#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)
|
||||
|
||||
// /atom signals
|
||||
#define COMSIG_PARENT_ATTACKBY "atom_attackby" //from base of atom/attackby(): (/obj/item, /mob/living, params)
|
||||
#define COMPONENT_NO_AFTERATTACK 1 //Return this in response if you don't want afterattack to be called
|
||||
@@ -208,6 +212,16 @@
|
||||
#define COMSIG_MOB_CLIENT_LOGIN "comsig_mob_client_login" //sent when a mob/login() finishes: (client)
|
||||
#define COMSIG_LIVING_GUN_PROCESS_FIRE "living_gun_process_fire" //from base of /obj/item/gun/proc/process_fire(): (atom/target, params, zone_override)
|
||||
|
||||
//ALL OF THESE DO NOT TAKE INTO ACCOUNT WHETHER AMOUNT IS 0 OR LOWER AND ARE SENT REGARDLESS!
|
||||
#define COMSIG_LIVING_STATUS_STUN "living_stun" //from base of mob/living/Stun() (amount, update, ignore)
|
||||
#define COMSIG_LIVING_STATUS_KNOCKDOWN "living_knockdown" //from base of mob/living/Knockdown() (amount, update, ignore)
|
||||
#define COMSIG_LIVING_STATUS_PARALYZE "living_paralyze" //from base of mob/living/Paralyze() (amount, update, ignore)
|
||||
#define COMSIG_LIVING_STATUS_IMMOBILIZE "living_immobilize" //from base of mob/living/Immobilize() (amount, update, ignore)
|
||||
#define COMSIG_LIVING_STATUS_UNCONSCIOUS "living_unconscious" //from base of mob/living/Unconscious() (amount, update, ignore)
|
||||
#define COMSIG_LIVING_STATUS_SLEEP "living_sleeping" //from base of mob/living/Sleeping() (amount, update, ignore)
|
||||
#define COMSIG_LIVING_STATUS_DAZE "living_daze" //from base of mob/living/Daze() (amount, update, ignore)
|
||||
#define COMPONENT_NO_STUN 1 //For all of them
|
||||
|
||||
// /mob/living/carbon signals
|
||||
#define COMSIG_CARBON_SOUNDBANG "carbon_soundbang" //from base of mob/living/carbon/soundbang_act(): (list(intensity))
|
||||
|
||||
@@ -233,6 +247,7 @@
|
||||
#define COMSIG_ITEM_PRE_ATTACK "item_pre_attack" //from base of obj/item/pre_attack(): (atom/target, mob/user, params)
|
||||
#define COMPONENT_NO_ATTACK 1
|
||||
#define COMSIG_ITEM_AFTERATTACK "item_afterattack" //from base of obj/item/afterattack(): (atom/target, mob/user, params)
|
||||
#define COMSIG_ITEM_ALT_AFTERATTACK "item_alt_afterattack" //from base of obj/item/altafterattack(): (atom/target, mob/user, proximity, params)
|
||||
#define COMSIG_ITEM_EQUIPPED "item_equip" //from base of obj/item/equipped(): (/mob/equipper, slot)
|
||||
#define COMSIG_ITEM_DROPPED "item_drop" //from base of obj/item/dropped(): (mob/user)
|
||||
#define COMSIG_ITEM_PICKUP "item_pickup" //from base of obj/item/pickup(): (/mob/taker)
|
||||
|
||||
@@ -92,3 +92,30 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204
|
||||
// radiation
|
||||
#define RAD_PROTECT_CONTENTS (1<<0)
|
||||
#define RAD_NO_CONTAMINATE (1<<1)
|
||||
|
||||
//Mob mobility var flags
|
||||
/// any flag
|
||||
#define CHECK_MOBILITY(target, flags) CHECK_BITFIELD(target.mobility_flags, flags)
|
||||
#define CHECK_ALL_MOBILITY(target, flags) CHECK_MULTIPLE_BITFIELDS(target.mobility_flags, flags)
|
||||
|
||||
/// can move
|
||||
#define MOBILITY_MOVE (1<<0)
|
||||
/// can, and is, standing up.
|
||||
#define MOBILITY_STAND (1<<1)
|
||||
/// can pickup items
|
||||
#define MOBILITY_PICKUP (1<<2)
|
||||
/// can use items and interact with world objects like opening closets/etc
|
||||
#define MOBILITY_USE (1<<3)
|
||||
/// can use interfaces like consoles
|
||||
#define MOBILITY_UI (1<<4)
|
||||
/// can use storage item
|
||||
#define MOBILITY_STORAGE (1<<5)
|
||||
/// can pull things
|
||||
#define MOBILITY_PULL (1<<6)
|
||||
/// can hold non-nodropped items voluntarily
|
||||
#define MOBILITY_HOLD (1<<7)
|
||||
/// Can resist out of buckling, grabs, cuffs, etc, in the usual order (buckle --> cuffs --> grab)
|
||||
#define MOBILITY_RESIST (1<<8)
|
||||
|
||||
#define MOBILITY_FLAGS_DEFAULT (MOBILITY_MOVE | MOBILITY_STAND | MOBILITY_PICKUP | MOBILITY_USE | MOBILITY_UI | MOBILITY_STORAGE | MOBILITY_PULL | MOBILITY_RESIST)
|
||||
#define MOBILITY_FLAGS_ANY_INTERACTION (MOBILITY_USE | MOBILITY_PICKUP | MOBILITY_UI | MOBILITY_STORAGE)
|
||||
|
||||
@@ -4,11 +4,8 @@
|
||||
/// 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)
|
||||
#define MATERIAL_AFFECT_STATISTICS (1<<3)
|
||||
@@ -37,10 +37,17 @@
|
||||
/////////////
|
||||
// DEBUFFS //
|
||||
/////////////
|
||||
/// The affected is unable to move, or to use, hold, or pickup items.
|
||||
#define STATUS_EFFECT_STUN /datum/status_effect/incapacitating/stun
|
||||
|
||||
#define STATUS_EFFECT_STUN /datum/status_effect/incapacitating/stun //the affected is stunned
|
||||
#define STATUS_EFFECT_KNOCKDOWN /datum/status_effect/incapacitating/knockdown //the affected is unable to stand up
|
||||
|
||||
#define STATUS_EFFECT_KNOCKDOWN /datum/status_effect/incapacitating/knockdown //the affected is knocked down
|
||||
#define STATUS_EFFECT_IMMOBILIZED /datum/status_effect/incapacitating/immobilized //the affected is unable to move
|
||||
|
||||
#define STATUS_EFFECT_PARALYZED /datum/status_effect/incapacitating/paralyzed //the affected is unable to move, use items, or stand up.
|
||||
|
||||
/// The affected is unable to use or pickup items
|
||||
#define STATUS_EFFECT_DAZED /datum/status_effect/incapacitating/dazed
|
||||
|
||||
#define STATUS_EFFECT_UNCONSCIOUS /datum/status_effect/incapacitating/unconscious //the affected is unconscious
|
||||
|
||||
|
||||
@@ -56,7 +56,6 @@
|
||||
#define INIT_ORDER_SERVER_MAINT 93
|
||||
#define INIT_ORDER_INPUT 85
|
||||
#define INIT_ORDER_VIS 80
|
||||
#define INIT_ORDER_MATERIALS 76
|
||||
#define INIT_ORDER_RESEARCH 75
|
||||
#define INIT_ORDER_EVENTS 70
|
||||
#define INIT_ORDER_JOBS 65
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
#define SIGNAL_TRAIT(trait_ref) "trait [trait_ref]"
|
||||
|
||||
// trait accessor defines
|
||||
#define ADD_TRAIT(target, trait, source) \
|
||||
do { \
|
||||
@@ -6,12 +8,14 @@
|
||||
target.status_traits = list(); \
|
||||
_L = target.status_traits; \
|
||||
_L[trait] = list(source); \
|
||||
SEND_SIGNAL(target, SIGNAL_TRAIT(trait), COMPONENT_ADD_TRAIT); \
|
||||
} else { \
|
||||
_L = target.status_traits; \
|
||||
if (_L[trait]) { \
|
||||
_L[trait] |= list(source); \
|
||||
} else { \
|
||||
_L[trait] = list(source); \
|
||||
SEND_SIGNAL(target, SIGNAL_TRAIT(trait), COMPONENT_ADD_TRAIT); \
|
||||
} \
|
||||
} \
|
||||
} while (0)
|
||||
@@ -31,7 +35,8 @@
|
||||
} \
|
||||
};\
|
||||
if (!length(_L[trait])) { \
|
||||
_L -= trait \
|
||||
_L -= trait; \
|
||||
SEND_SIGNAL(target, SIGNAL_TRAIT(trait), COMPONENT_REMOVE_TRAIT); \
|
||||
}; \
|
||||
if (!length(_L)) { \
|
||||
target.status_traits = null \
|
||||
@@ -46,7 +51,8 @@
|
||||
for (var/_T in _L) { \
|
||||
_L[_T] &= _S;\
|
||||
if (!length(_L[_T])) { \
|
||||
_L -= _T } \
|
||||
_L -= _T ; \
|
||||
SEND_SIGNAL(target, SIGNAL_TRAIT(_T), COMPONENT_REMOVE_TRAIT); } \
|
||||
};\
|
||||
if (!length(_L)) { \
|
||||
target.status_traits = null\
|
||||
@@ -137,6 +143,19 @@
|
||||
#define TRAIT_NOMARROW "nomarrow" // You don't make blood, with chemicals or nanites.
|
||||
#define TRAIT_NOPULSE "nopulse" // Your heart doesn't beat.
|
||||
#define TRAIT_EXEMPT_HEALTH_EVENTS "exempt-health-events"
|
||||
|
||||
// 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)
|
||||
// BUT FOR NOW, THESE ARE HOOKED TO DO update_mobility() VIA COMSIG IN living_mobility.dm
|
||||
// SO IF YOU ADD MORE, BESURE TO UPDATE IT THERE.
|
||||
|
||||
/// Disallow movement
|
||||
#define TRAIT_MOBILITY_NOMOVE "mobility_nomove"
|
||||
/// Disallow pickup
|
||||
#define TRAIT_MOBILITY_NOPICKUP "mobility_nopickup"
|
||||
/// Disallow item use
|
||||
#define TRAIT_MOBILITY_NOUSE "mobility_nouse"
|
||||
|
||||
#define TRAIT_SWIMMING "swimming" //only applied by /datum/element/swimming, for checking
|
||||
|
||||
//non-mob traits
|
||||
|
||||
@@ -174,6 +174,15 @@
|
||||
L[T] = TRUE
|
||||
return L
|
||||
|
||||
/proc/typecacheof_assoc_list(list/pathlist, ignore_root_path = FALSE)
|
||||
. = list()
|
||||
if(!istype(pathlist))
|
||||
return
|
||||
for(var/P in pathlist)
|
||||
var/value = pathlist[P]
|
||||
for(var/T in (ignore_root_path ? subtypesof(P) : typesof(P)))
|
||||
.[T] = value
|
||||
|
||||
//Empties the list by setting the length to 0. Hopefully the elements get garbage collected
|
||||
/proc/clearlist(list/list)
|
||||
if(istype(list))
|
||||
@@ -579,4 +588,4 @@
|
||||
var/list/ret = list()
|
||||
for(var/key in input)
|
||||
ret += key
|
||||
return ret
|
||||
return ret
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
#define BP_MAX_ROOM_SIZE 300
|
||||
|
||||
GLOBAL_LIST_INIT(typecache_powerfailure_safe_areas, typecacheof(/area/engine/engineering, \
|
||||
/area/engine/supermatter, \
|
||||
/area/engine/atmospherics_engine, \
|
||||
/area/ai_monitored/turret_protected/ai))
|
||||
|
||||
//Repopulates sortedAreas list
|
||||
/proc/repopulate_sorted_areas()
|
||||
GLOB.sortedAreas = list()
|
||||
|
||||
@@ -549,3 +549,36 @@
|
||||
var/pressure = environment.return_pressure()
|
||||
if(pressure <= LAVALAND_EQUIPMENT_EFFECT_PRESSURE)
|
||||
. = TRUE
|
||||
|
||||
/proc/ispipewire(item)
|
||||
var/static/list/pipe_wire = list(
|
||||
/obj/machinery/atmospherics,
|
||||
/obj/structure/disposalpipe,
|
||||
/obj/structure/cable
|
||||
)
|
||||
return (is_type_in_list(item, pipe_wire))
|
||||
|
||||
// Find a obstruction free turf that's within the range of the center. Can also condition on if it is of a certain area type.
|
||||
/proc/find_obstruction_free_location(var/range, var/atom/center, var/area/specific_area)
|
||||
var/list/turfs = RANGE_TURFS(range, center)
|
||||
var/list/possible_loc = list()
|
||||
for(var/turf/found_turf in turfs)
|
||||
var/area/turf_area = get_area(found_turf)
|
||||
if (specific_area) // We check if both the turf is a floor, and that it's actually in the area. // We also want a location that's clear of any obstructions.
|
||||
if(!istype(turf_area, specific_area))
|
||||
continue
|
||||
if(!isspaceturf(found_turf))
|
||||
if(!is_blocked_turf(found_turf))
|
||||
possible_loc.Add(found_turf)
|
||||
if (possible_loc.len < 1) // Need at least one free location.
|
||||
return FALSE
|
||||
return pick(possible_loc)
|
||||
|
||||
/proc/power_fail(duration_min, duration_max)
|
||||
for(var/P in GLOB.apcs_list)
|
||||
var/obj/machinery/power/apc/C = P
|
||||
if(C.cell && SSmapping.level_trait(C.z, ZTRAIT_STATION))
|
||||
var/area/A = C.area
|
||||
if(GLOB.typecache_powerfailure_safe_areas[A.type])
|
||||
continue
|
||||
C.energy_fail(rand(duration_min,duration_max))
|
||||
@@ -165,7 +165,7 @@
|
||||
"has_cock" = FALSE,
|
||||
"cock_shape" = pick(GLOB.cock_shapes_list),
|
||||
"cock_length" = 6,
|
||||
"cock_girth_ratio" = COCK_GIRTH_RATIO_DEF,
|
||||
"cock_diameter_ratio" = COCK_DIAMETER_RATIO_DEF,
|
||||
"cock_color" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"),
|
||||
"has_sheath" = FALSE,
|
||||
"sheath_color" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"),
|
||||
@@ -356,7 +356,7 @@ GLOBAL_LIST_EMPTY(species_list)
|
||||
checked_health["health"] = health
|
||||
return ..()
|
||||
|
||||
/proc/do_after(mob/user, var/delay, needhand = 1, atom/target = null, progress = 1, datum/callback/extra_checks = null)
|
||||
/proc/do_after(mob/user, var/delay, needhand = 1, atom/target = null, progress = 1, datum/callback/extra_checks = null, required_mobility_flags = (MOBILITY_USE|MOBILITY_MOVE))
|
||||
if(!user)
|
||||
return 0
|
||||
var/atom/Tloc = null
|
||||
@@ -384,6 +384,7 @@ GLOBAL_LIST_EMPTY(species_list)
|
||||
var/endtime = world.time + delay
|
||||
var/starttime = world.time
|
||||
. = 1
|
||||
var/mob/living/L = isliving(user) && user //evals to last thing eval'd
|
||||
while (world.time < endtime)
|
||||
stoplag(1)
|
||||
if (progress)
|
||||
@@ -393,15 +394,13 @@ GLOBAL_LIST_EMPTY(species_list)
|
||||
drifting = 0
|
||||
Uloc = user.loc
|
||||
|
||||
if(QDELETED(user) || user.stat || user.IsKnockdown() || user.IsStun() || (!drifting && user.loc != Uloc) || (extra_checks && !extra_checks.Invoke()))
|
||||
if(L && !CHECK_ALL_MOBILITY(L, required_mobility_flags))
|
||||
. = 0
|
||||
break
|
||||
|
||||
if(isliving(user))
|
||||
var/mob/living/L = user
|
||||
if(L.recoveringstam)
|
||||
. = 0
|
||||
break
|
||||
if(QDELETED(user) || user.stat || (!drifting && user.loc != Uloc) || (extra_checks && !extra_checks.Invoke()))
|
||||
. = 0
|
||||
break
|
||||
|
||||
if(!QDELETED(Tloc) && (QDELETED(target) || Tloc != target.loc))
|
||||
if((Uloc != Tloc || Tloc != user) && !drifting)
|
||||
|
||||
@@ -354,6 +354,7 @@
|
||||
roundend_report.set_content(content)
|
||||
roundend_report.stylesheets = list()
|
||||
roundend_report.add_stylesheet("roundend", 'html/browser/roundend.css')
|
||||
roundend_report.add_stylesheet("font-awesome", 'html/font-awesome/css/all.min.css')
|
||||
roundend_report.open(0)
|
||||
|
||||
/datum/controller/subsystem/ticker/proc/personal_report(client/C, popcount)
|
||||
|
||||
+15
-1
@@ -49,7 +49,7 @@
|
||||
alert("Invalid name.")
|
||||
return ""
|
||||
return sanitize(t)
|
||||
|
||||
|
||||
/proc/sanitize_filename(t)
|
||||
return sanitize_simple(t, list("\n"="", "\t"="", "/"="", "\\"="", "?"="", "%"="", "*"="", ":"="", "|"="", "\""="", "<"="", ">"=""))
|
||||
|
||||
@@ -798,3 +798,17 @@ GLOBAL_LIST_INIT(binary, list("0","1"))
|
||||
out += prob(replaceprob)? pick(replacementchars) : char
|
||||
return out.Join("")
|
||||
|
||||
/proc/readable_corrupted_text(text)
|
||||
var/list/corruption_options = list("..", "£%", "~~\"", "!!", "*", "^", "$!", "-", "}", "?")
|
||||
var/corrupted_text = ""
|
||||
for(var/letter_index = 1; letter_index <= length(text); letter_index++) // Have every letter have a chance of creating corruption on either side
|
||||
var/letter = text[letter_index] // Small chance of letters being removed in place of corruption - still overall readable
|
||||
if(prob(15))
|
||||
corrupted_text += pick(corruption_options)
|
||||
if(prob(95))
|
||||
corrupted_text += letter
|
||||
else
|
||||
corrupted_text += pick(corruption_options)
|
||||
if(prob(15))
|
||||
corrupted_text += pick(corruption_options)
|
||||
return corrupted_text
|
||||
@@ -214,7 +214,7 @@ GLOBAL_LIST_INIT(bitfields, list(
|
||||
"CAN_MASTURBATE_WITH" = CAN_MASTURBATE_WITH,
|
||||
"MASTURBATE_LINKED_ORGAN" = MASTURBATE_LINKED_ORGAN,
|
||||
"CAN_CLIMAX_WITH" = CAN_CLIMAX_WITH
|
||||
|
||||
|
||||
),
|
||||
"mob_biotypes" = list (
|
||||
"MOB_ORGANIC" = MOB_ORGANIC,
|
||||
@@ -227,5 +227,16 @@ GLOBAL_LIST_INIT(bitfields, list(
|
||||
"MOB_EPIC" = MOB_EPIC,
|
||||
"MOB_REPTILE" = MOB_REPTILE,
|
||||
"MOB_SPIRIT" = MOB_SPIRIT
|
||||
),
|
||||
"mobility_flags" = list(
|
||||
"MOBILITY_MOVE" = MOBILITY_MOVE,
|
||||
"MOBILITY_STAND" = MOBILITY_STAND,
|
||||
"MOBILITY_PICKUP" = MOBILITY_PICKUP,
|
||||
"MOBILITY_USE" = MOBILITY_USE,
|
||||
"MOBILITY_UI" = MOBILITY_UI,
|
||||
"MOBILITY_STORAGE" = MOBILITY_STORAGE,
|
||||
"MOBILITY_PULL" = MOBILITY_PULL,
|
||||
"MOBILITY_HOLD" = MOBILITY_HOLD,
|
||||
"MOBILITY_RESIST" = MOBILITY_RESIST
|
||||
)
|
||||
))
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
#define POLL_IGNORE_DEMON "demon"
|
||||
#define POLL_IGNORE_WIZARD "wizard"
|
||||
#define POLL_IGNORE_CLONE "clone"
|
||||
#define POLL_IGNORE_CONTRACTOR_SUPPORT "contractor_support"
|
||||
|
||||
GLOBAL_LIST_INIT(poll_ignore_desc, list(
|
||||
POLL_IGNORE_SENTIENCE_POTION = "Sentience potion",
|
||||
@@ -37,7 +38,8 @@ GLOBAL_LIST_INIT(poll_ignore_desc, list(
|
||||
POLL_IGNORE_SPLITPERSONALITY = "Split Personality",
|
||||
POLL_IGNORE_DEMON = "Demons",
|
||||
POLL_IGNORE_WIZARD = "Wizards",
|
||||
POLL_IGNORE_CLONE = "Defective/SDGF clones"
|
||||
POLL_IGNORE_CLONE = "Defective/SDGF clones",
|
||||
POLL_IGNORE_CONTRACTOR_SUPPORT = "Contractor Support Unit"
|
||||
))
|
||||
GLOBAL_LIST_INIT(poll_ignore, init_poll_ignore())
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
if(check_click_intercept(params,A))
|
||||
return
|
||||
|
||||
if(stat || lockcharge || IsKnockdown() || IsStun() || IsUnconscious())
|
||||
if(stat || locked_down || IsParalyzed() || IsStun() || IsUnconscious())
|
||||
return
|
||||
|
||||
var/list/modifiers = params2list(params)
|
||||
@@ -66,7 +66,7 @@
|
||||
if(C.user_unbuckle_mob(C.buckled_mobs[1],src))
|
||||
return
|
||||
|
||||
if(!W && get_dist(src,A) <= interaction_range)
|
||||
if(!W && (get_dist(src,A) <= interaction_range))
|
||||
A.attack_robot(src)
|
||||
return
|
||||
|
||||
|
||||
@@ -273,7 +273,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
|
||||
if(!istype(L) || !L.can_resist())
|
||||
return
|
||||
L.changeNext_move(CLICK_CD_RESIST)
|
||||
if(L.canmove)
|
||||
if(CHECK_MOBILITY(L, MOBILITY_MOVE))
|
||||
return L.resist_fire() //I just want to start a flame in your hearrrrrrtttttt.
|
||||
|
||||
|
||||
@@ -601,7 +601,7 @@ so as to remain in compliance with the most up-to-date laws."
|
||||
if(!istype(L) || !L.can_resist())
|
||||
return
|
||||
L.changeNext_move(CLICK_CD_RESIST)
|
||||
if((L.canmove) && (L.last_special <= world.time))
|
||||
if(CHECK_MOBILITY(L, MOBILITY_MOVE) && (L.last_special <= world.time))
|
||||
return L.resist_restraints()
|
||||
|
||||
/obj/screen/alert/restrained/buckled/Click()
|
||||
|
||||
@@ -113,7 +113,7 @@
|
||||
var/mob/living/carbon/tempcarb = user
|
||||
if(!tempcarb.combatmode)
|
||||
totitemdamage *= 0.5
|
||||
if(user.resting)
|
||||
if(!CHECK_MOBILITY(user, MOBILITY_STAND))
|
||||
totitemdamage *= 0.5
|
||||
//CIT CHANGES END HERE
|
||||
if(user != src && check_shields(I, totitemdamage, "the [I.name]", MELEE_ATTACK, I.armour_penetration))
|
||||
|
||||
@@ -335,6 +335,10 @@
|
||||
config_entry_value = 16
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/station_space_budget
|
||||
config_entry_value = 10
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/flag/allow_random_events // Enables random events mid-round when set
|
||||
|
||||
/datum/config_entry/number/events_min_time_mul // Multipliers for random events minimal starting time and minimal players amounts
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
//Sleeping in here prevents future fires until returned.
|
||||
/datum/controller/subsystem/proc/fire(resumed = 0)
|
||||
flags |= SS_NO_FIRE
|
||||
throw EXCEPTION("Subsystem [src]([type]) does not fire() but did not set the SS_NO_FIRE flag. Please add the SS_NO_FIRE flag to any subsystem that doesn't fire so it doesn't get added to the processing list and waste cpu.")
|
||||
CRASH("Subsystem [src]([type]) does not fire() but did not set the SS_NO_FIRE flag. Please add the SS_NO_FIRE flag to any subsystem that doesn't fire so it doesn't get added to the processing list and waste cpu.")
|
||||
|
||||
/datum/controller/subsystem/Destroy()
|
||||
dequeue()
|
||||
|
||||
@@ -83,15 +83,15 @@ SUBSYSTEM_DEF(jukeboxes)
|
||||
return
|
||||
for(var/list/jukeinfo in activejukeboxes)
|
||||
if(!jukeinfo.len)
|
||||
EXCEPTION("Active jukebox without any associated metadata.")
|
||||
stack_trace("Active jukebox without any associated metadata.")
|
||||
continue
|
||||
var/datum/track/juketrack = jukeinfo[1]
|
||||
if(!istype(juketrack))
|
||||
EXCEPTION("Invalid jukebox track datum.")
|
||||
stack_trace("Invalid jukebox track datum.")
|
||||
continue
|
||||
var/obj/jukebox = jukeinfo[3]
|
||||
if(!istype(jukebox))
|
||||
EXCEPTION("Nonexistant or invalid object associated with jukebox.")
|
||||
stack_trace("Nonexistant or invalid object associated with jukebox.")
|
||||
continue
|
||||
var/sound/song_played = sound(juketrack.song_path)
|
||||
var/area/currentarea = get_area(jukebox)
|
||||
|
||||
@@ -14,6 +14,7 @@ SUBSYSTEM_DEF(mapping)
|
||||
var/list/ruins_templates = list()
|
||||
var/list/space_ruins_templates = list()
|
||||
var/list/lava_ruins_templates = list()
|
||||
var/list/station_ruins_templates = list()
|
||||
var/datum/space_level/isolated_ruins_z //Created on demand during ruin loading.
|
||||
|
||||
var/list/shuttle_templates = list()
|
||||
@@ -94,6 +95,11 @@ SUBSYSTEM_DEF(mapping)
|
||||
var/list/space_ruins = levels_by_trait(ZTRAIT_SPACE_RUINS)
|
||||
if (space_ruins.len)
|
||||
seedRuins(space_ruins, CONFIG_GET(number/space_budget), /area/space, space_ruins_templates)
|
||||
|
||||
// Generate station space ruins
|
||||
var/list/station_ruins = levels_by_trait(ZTRAIT_STATION)
|
||||
if (station_ruins.len)
|
||||
seedRuins(station_ruins, CONFIG_GET(number/station_space_budget), /area/space/station_ruins, station_ruins_templates)
|
||||
SSmapping.seedStation()
|
||||
loading_ruins = FALSE
|
||||
#endif
|
||||
@@ -161,6 +167,7 @@ SUBSYSTEM_DEF(mapping)
|
||||
ruins_templates = SSmapping.ruins_templates
|
||||
space_ruins_templates = SSmapping.space_ruins_templates
|
||||
lava_ruins_templates = SSmapping.lava_ruins_templates
|
||||
station_ruins_templates = SSmapping.station_ruins_templates
|
||||
shuttle_templates = SSmapping.shuttle_templates
|
||||
shelter_templates = SSmapping.shelter_templates
|
||||
unused_turfs = SSmapping.unused_turfs
|
||||
@@ -352,6 +359,7 @@ GLOBAL_LIST_EMPTY(the_station_areas)
|
||||
// Still supporting bans by filename
|
||||
var/list/banned = generateMapList("[global.config.directory]/lavaruinblacklist.txt")
|
||||
banned += generateMapList("[global.config.directory]/spaceruinblacklist.txt")
|
||||
banned += generateMapList("[global.config.directory]/stationruinblacklist.txt")
|
||||
|
||||
for(var/item in sortList(subtypesof(/datum/map_template/ruin), /proc/cmp_ruincost_priority))
|
||||
var/datum/map_template/ruin/ruin_type = item
|
||||
@@ -372,6 +380,8 @@ GLOBAL_LIST_EMPTY(the_station_areas)
|
||||
space_ruins_templates[R.name] = R
|
||||
else if(istype(R, /datum/map_template/ruin/station))
|
||||
station_room_templates[R.name] = R
|
||||
else if(istype(R, /datum/map_template/ruin/spacenearstation))
|
||||
station_ruins_templates[R.name] = R
|
||||
|
||||
/datum/controller/subsystem/mapping/proc/preloadShuttleTemplates()
|
||||
var/list/unbuyable = generateMapList("[global.config.directory]/unbuyableshuttles.txt")
|
||||
|
||||
@@ -5,23 +5,25 @@ These materials call on_applied() on whatever item they are applied to, common e
|
||||
|
||||
SUBSYSTEM_DEF(materials)
|
||||
name = "Materials"
|
||||
flags = SS_NO_FIRE
|
||||
init_order = INIT_ORDER_MATERIALS
|
||||
flags = SS_NO_FIRE | SS_NO_INIT
|
||||
///Dictionary of material.type || material ref
|
||||
var/list/materials = list()
|
||||
var/list/materials
|
||||
///Dictionary of category || list of material refs
|
||||
var/list/materials_by_category = list()
|
||||
var/list/materials_by_category
|
||||
///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)
|
||||
/datum/controller/subsystem/materials/proc/InitializeMaterials()
|
||||
materials = list()
|
||||
materials_by_category = list()
|
||||
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)
|
||||
|
||||
/datum/controller/subsystem/materials/proc/GetMaterialRef(datum/material/fakemat)
|
||||
if(!materials)
|
||||
InitializeMaterials()
|
||||
return materials[fakemat] || fakemat
|
||||
@@ -113,11 +113,8 @@ SUBSYSTEM_DEF(shuttle)
|
||||
qdel(T, force=TRUE)
|
||||
CheckAutoEvac()
|
||||
|
||||
//Cargo stuff start
|
||||
var/fire_time_diff = max(0, world.time - last_fire) //Don't want this to be below 0, seriously.
|
||||
var/point_gain = (fire_time_diff / 600) * passive_supply_points_per_minute
|
||||
points += point_gain
|
||||
//Cargo stuff end
|
||||
if(!(times_fired % CEILING(600/wait, 1)))
|
||||
points += passive_supply_points_per_minute
|
||||
|
||||
var/esETA = emergency?.getModeStr()
|
||||
emergency_shuttle_stat_text = "[esETA? "[esETA] [emergency.getTimerStr()]" : ""]"
|
||||
@@ -185,14 +182,13 @@ SUBSYSTEM_DEF(shuttle)
|
||||
WARNING("requestEvac(): There is no emergency shuttle, but the \
|
||||
shuttle was called. Using the backup shuttle instead.")
|
||||
if(!backup_shuttle)
|
||||
throw EXCEPTION("requestEvac(): There is no emergency shuttle, \
|
||||
CRASH("requestEvac(): There is no emergency shuttle, \
|
||||
or backup shuttle! The game will be unresolvable. This is \
|
||||
possibly a mapping error, more likely a bug with the shuttle \
|
||||
manipulation system, or badminry. It is possible to manually \
|
||||
resolve this problem by loading an emergency shuttle template \
|
||||
manually, and then calling register() on the mobile docking port. \
|
||||
Good luck.")
|
||||
return
|
||||
emergency = backup_shuttle
|
||||
var/srd = CONFIG_GET(number/shuttle_refuel_delay)
|
||||
if(world.time - SSticker.round_start_time < srd)
|
||||
@@ -420,7 +416,7 @@ SUBSYSTEM_DEF(shuttle)
|
||||
|
||||
/datum/controller/subsystem/shuttle/proc/request_transit_dock(obj/docking_port/mobile/M)
|
||||
if(!istype(M))
|
||||
throw EXCEPTION("[M] is not a mobile docking port")
|
||||
CRASH("[M] is not a mobile docking port")
|
||||
|
||||
if(M.assigned_transit)
|
||||
return
|
||||
|
||||
+14
-9
@@ -8,6 +8,7 @@
|
||||
var/desc = null
|
||||
var/obj/target = null
|
||||
var/check_flags = 0
|
||||
var/required_mobility_flags = MOBILITY_USE
|
||||
var/processing = FALSE
|
||||
var/obj/screen/movable/action_button/button = null
|
||||
var/buttontooltipstyle = ""
|
||||
@@ -96,20 +97,23 @@
|
||||
|
||||
/datum/action/proc/IsAvailable()
|
||||
if(!owner)
|
||||
return 0
|
||||
return FALSE
|
||||
var/mob/living/L = owner
|
||||
if(istype(L) && !CHECK_ALL_MOBILITY(L, required_mobility_flags))
|
||||
return FALSE
|
||||
if(check_flags & AB_CHECK_RESTRAINED)
|
||||
if(owner.restrained())
|
||||
return 0
|
||||
return FALSE
|
||||
if(check_flags & AB_CHECK_STUN)
|
||||
if(owner.IsKnockdown() || owner.IsStun())
|
||||
return 0
|
||||
if(istype(L) && !CHECK_MOBILITY(L, MOBILITY_USE))
|
||||
return FALSE
|
||||
if(check_flags & AB_CHECK_LYING)
|
||||
if(owner.lying)
|
||||
return 0
|
||||
if(istype(L) && !CHECK_MOBILITY(L, MOBILITY_STAND))
|
||||
return FALSE
|
||||
if(check_flags & AB_CHECK_CONSCIOUS)
|
||||
if(owner.stat)
|
||||
return 0
|
||||
return 1
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/action/proc/UpdateButtonIcon(status_only = FALSE, force = FALSE)
|
||||
if(button)
|
||||
@@ -430,7 +434,8 @@
|
||||
name = "Shift Nerves"
|
||||
|
||||
/datum/action/item_action/explosive_implant
|
||||
check_flags = 0
|
||||
check_flags = NONE
|
||||
required_mobility_flags = NONE
|
||||
name = "Activate Explosive Implant"
|
||||
|
||||
/datum/action/item_action/toggle_research_scanner
|
||||
|
||||
@@ -136,7 +136,7 @@
|
||||
fall_chance += 2
|
||||
if(prob(fall_chance) && !owner.lying && !owner.buckled)
|
||||
to_chat(owner, "<span class='warning'>Your leg gives out!</span>")
|
||||
owner.Knockdown(35)
|
||||
owner.DefaultCombatKnockdown(35)
|
||||
|
||||
else if(owner.get_active_held_item())
|
||||
var/drop_chance = 1
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
/datum/brain_trauma/special/godwoken/on_life()
|
||||
..()
|
||||
if(prob(4))
|
||||
if(prob(33) && (owner.IsStun() || owner.IsKnockdown() || owner.IsUnconscious()))
|
||||
if(prob(33) && owner.HighestImmobilityAmount())
|
||||
speak("unstun", TRUE)
|
||||
else if(prob(60) && owner.health <= owner.crit_threshold)
|
||||
speak("heal", TRUE)
|
||||
|
||||
@@ -39,12 +39,18 @@
|
||||
//title_image = ntitle_image
|
||||
|
||||
/datum/browser/proc/add_stylesheet(name, file)
|
||||
if(istype(name, /datum/asset/spritesheet))
|
||||
if (istype(name, /datum/asset/spritesheet))
|
||||
var/datum/asset/spritesheet/sheet = name
|
||||
stylesheets["spritesheet_[sheet.name].css"] = "data/spritesheets/[sheet.name]"
|
||||
else
|
||||
stylesheets["[ckey(name)].css"] = file
|
||||
register_asset("[ckey(name)].css", file)
|
||||
var/asset_name = "[name].css"
|
||||
stylesheets[asset_name] = file
|
||||
if(!SSassets.cache[asset_name])
|
||||
register_asset(asset_name, file)
|
||||
|
||||
/datum/browser/proc/add_script(name, file)
|
||||
scripts["[ckey(name)].js"] = file
|
||||
register_asset("[ckey(name)].js", file)
|
||||
|
||||
/datum/browser/proc/set_content(ncontent)
|
||||
content = ncontent
|
||||
|
||||
@@ -59,4 +59,4 @@
|
||||
"<span class='userdanger'>You slide on [A]!</span>")
|
||||
|
||||
cooldown = world.time
|
||||
H.Knockdown(60)
|
||||
H.DefaultCombatKnockdown(60)
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
AM.forceMove(T)
|
||||
if(isliving(AM))
|
||||
var/mob/living/L = AM
|
||||
L.Knockdown(100)
|
||||
L.DefaultCombatKnockdown(100)
|
||||
L.adjustBruteLoss(30)
|
||||
falling_atoms -= AM
|
||||
|
||||
@@ -110,8 +110,7 @@
|
||||
if (isliving(AM))
|
||||
var/mob/living/L = AM
|
||||
L.notransform = TRUE
|
||||
L.Stun(200)
|
||||
L.resting = TRUE
|
||||
L.Paralyze(200)
|
||||
|
||||
var/oldtransform = AM.transform
|
||||
var/oldcolor = AM.color
|
||||
|
||||
@@ -119,18 +119,6 @@
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_WEAPON
|
||||
|
||||
/datum/crafting_recipe/switchblade_ms
|
||||
name = "Switchblade"
|
||||
result = /obj/item/switchblade/crafted
|
||||
reqs = list(/obj/item/weaponcrafting/stock = 1,
|
||||
/obj/item/weaponcrafting/receiver = 1,
|
||||
/obj/item/kitchen/knife = 1,
|
||||
/obj/item/stack/cable_coil = 2)
|
||||
tools = list(TOOL_WELDER)
|
||||
time = 45
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_WEAPON
|
||||
|
||||
//////////////////
|
||||
///BOMB CRAFTING//
|
||||
//////////////////
|
||||
@@ -310,19 +298,15 @@
|
||||
subcategory = CAT_AMMO
|
||||
|
||||
/datum/crafting_recipe/ashen_arrow
|
||||
name = "Bonfire-Hardened Arrow"
|
||||
name = "Fire Hardened Arrow"
|
||||
result = /obj/item/ammo_casing/caseless/arrow/ashen
|
||||
tools = list(/obj/structure/bonfire)
|
||||
tools = list(TOOL_WELDER)
|
||||
time = 30
|
||||
always_availible = FALSE
|
||||
reqs = list(/obj/item/ammo_casing/caseless/arrow = 1)
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_AMMO
|
||||
|
||||
/datum/crafting_recipe/ashen_arrow/welder
|
||||
name = "Welder-Hardened Arrow"
|
||||
tools = list(TOOL_WELDER)
|
||||
|
||||
/datum/crafting_recipe/smartdart
|
||||
name = "Medical smartdart"
|
||||
result = /obj/item/reagent_containers/syringe/dart
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
var/mob/living/LM = parent
|
||||
var/v = volume
|
||||
var/e = e_range
|
||||
if(!T.footstep || LM.buckled || LM.lying || !LM.canmove || LM.resting || LM.buckled || LM.throwing || LM.movement_type & (VENTCRAWLING | FLYING))
|
||||
if(!T.footstep || LM.buckled || !CHECK_MOBILITY(LM, MOBILITY_STAND) || LM.buckled || LM.throwing || (LM.movement_type & (VENTCRAWLING | FLYING)))
|
||||
if (LM.lying && !LM.buckled && !(!T.footstep || LM.movement_type & (VENTCRAWLING | FLYING))) //play crawling sound if we're lying
|
||||
playsound(T, 'sound/effects/footstep/crawl1.ogg', 15 * v)
|
||||
return
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
msg += " and knocks [target] [target_buckled? "off of [target.buckled]" : "down"]"
|
||||
if(target_buckled)
|
||||
target.buckled.unbuckle_mob(target)
|
||||
target.Knockdown(knockdown_time)
|
||||
target.DefaultCombatKnockdown(knockdown_time)
|
||||
if(length(msg))
|
||||
user.visible_message("<span class='danger'>[msg]!</span>")
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/OnExamine)
|
||||
|
||||
for(var/mat in mat_list) //Make the assoc list ref | amount
|
||||
var/datum/material/M = getmaterialref(mat) || mat
|
||||
var/datum/material/M = SSmaterials.GetMaterialRef(mat)
|
||||
materials[M] = 0
|
||||
|
||||
/datum/component/material_container/proc/OnExamine(datum/source, mob/user, list/examine_list)
|
||||
@@ -130,7 +130,7 @@
|
||||
/// For inserting an amount of material
|
||||
/datum/component/material_container/proc/insert_amount_mat(amt, var/datum/material/mat)
|
||||
if(!istype(mat))
|
||||
mat = getmaterialref(mat)
|
||||
mat = SSmaterials.GetMaterialRef(mat)
|
||||
if(amt > 0 && has_space(amt))
|
||||
var/total_amount_saved = total_amount
|
||||
if(mat)
|
||||
@@ -145,7 +145,7 @@
|
||||
/// Uses an amount of a specific material, effectively removing it.
|
||||
/datum/component/material_container/proc/use_amount_mat(amt, var/datum/material/mat)
|
||||
if(!istype(mat))
|
||||
mat = getmaterialref(mat)
|
||||
mat = SSmaterials.GetMaterialRef(mat)
|
||||
var/amount = materials[mat]
|
||||
if(mat)
|
||||
if(amount >= amt)
|
||||
@@ -157,7 +157,7 @@
|
||||
/// Proc for transfering materials to another container.
|
||||
/datum/component/material_container/proc/transer_amt_to(var/datum/component/material_container/T, amt, var/datum/material/mat)
|
||||
if(!istype(mat))
|
||||
mat = getmaterialref(mat)
|
||||
mat = SSmaterials.GetMaterialRef(mat)
|
||||
if((amt==0)||(!T)||(!mat))
|
||||
return FALSE
|
||||
if(amt<0)
|
||||
@@ -190,7 +190,7 @@
|
||||
for(var/x in mats) //Loop through all required materials
|
||||
var/datum/material/req_mat = x
|
||||
if(!istype(req_mat))
|
||||
req_mat = getmaterialref(req_mat) //Get the ref if necesary
|
||||
req_mat = SSmaterials.GetMaterialRef(req_mat) //Get the ref if necesary
|
||||
if(!materials[req_mat]) //Do we have the resource?
|
||||
return FALSE //Can't afford it
|
||||
var/amount_required = mats[x] * multiplier
|
||||
@@ -251,7 +251,7 @@
|
||||
var/datum/material/req_mat = x
|
||||
if(!istype(req_mat))
|
||||
if(ispath(req_mat)) //Is this an actual material, or is it a category?
|
||||
req_mat = getmaterialref(req_mat) //Get the ref
|
||||
req_mat = SSmaterials.GetMaterialRef(req_mat) //Get the ref
|
||||
|
||||
else // Its a category. (For example MAT_CATEGORY_RIGID)
|
||||
if(!has_enough_of_category(req_mat, mats[req_mat], multiplier)) //Do we have enough of this category?
|
||||
@@ -316,5 +316,5 @@
|
||||
/// Returns the amount of a specific material in this container.
|
||||
/datum/component/material_container/proc/get_material_amount(var/datum/material/mat)
|
||||
if(!istype(mat))
|
||||
mat = getmaterialref(mat)
|
||||
mat = SSmaterials.GetMaterialRef(mat)
|
||||
return(materials[mat])
|
||||
|
||||
@@ -240,7 +240,7 @@
|
||||
/datum/component/riding/human/force_dismount(mob/living/user)
|
||||
var/atom/movable/AM = parent
|
||||
AM.unbuckle_mob(user)
|
||||
user.Knockdown(60)
|
||||
user.DefaultCombatKnockdown(60)
|
||||
user.visible_message("<span class='warning'>[AM] pushes [user] off of [AM.p_them()]!</span>")
|
||||
|
||||
/datum/component/riding/cyborg
|
||||
@@ -298,7 +298,7 @@
|
||||
M.Move(targetm)
|
||||
M.visible_message("<span class='warning'>[M] is thrown clear of [AM]!</span>")
|
||||
M.throw_at(target, 14, 5, AM)
|
||||
M.Knockdown(60)
|
||||
M.DefaultCombatKnockdown(60)
|
||||
|
||||
/datum/component/riding/proc/equip_buckle_inhands(mob/living/carbon/human/user, amount_required = 1, mob/living/riding_target_override)
|
||||
var/list/equipped
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
return //undeads are unaffected by the spook-pocalypse.
|
||||
if(istype(H.dna.species, /datum/species/zombie))
|
||||
H.adjustStaminaLoss(25)
|
||||
H.Knockdown(15) //zombies can't resist the doot
|
||||
H.DefaultCombatKnockdown(15) //zombies can't resist the doot
|
||||
C.Jitter(35)
|
||||
C.stuttering = 20
|
||||
if((!istype(H.dna.species, /datum/species/skeleton)) && (!istype(H.dna.species, /datum/species/golem)) && (!istype(H.dna.species, /datum/species/android)) && (!istype(H.dna.species, /datum/species/jelly)))
|
||||
@@ -36,7 +36,7 @@
|
||||
|
||||
/datum/component/spooky/proc/spectral_change(mob/living/carbon/human/H, mob/user)
|
||||
if((H.getStaminaLoss() > 95) && (!istype(H.dna.species, /datum/species/skeleton)) && (!istype(H.dna.species, /datum/species/golem)) && (!istype(H.dna.species, /datum/species/android)) && (!istype(H.dna.species, /datum/species/jelly)))
|
||||
H.Knockdown(20)
|
||||
H.DefaultCombatKnockdown(20)
|
||||
H.set_species(/datum/species/skeleton)
|
||||
H.visible_message("<span class='warning'>[H] has given up on life as a mortal.</span>")
|
||||
var/T = get_turf(H)
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
var/turf/loccheck = get_turf(A)
|
||||
if(is_reebe(loccheck.z))
|
||||
user.visible_message("<span class='warning'>An unseen force knocks [user] to the ground!</span>", "<span class='big_brass'>\"I think not!\"</span>")
|
||||
user.Knockdown(60)
|
||||
user.DefaultCombatKnockdown(60)
|
||||
return
|
||||
if(istype(loccheck.loc, /area/fabric_of_reality))
|
||||
to_chat(user, "<span class='danger'>You can't do that here!</span>")
|
||||
@@ -25,7 +25,7 @@
|
||||
for(var/mob/living/M in T)
|
||||
if(M.movement_type & FLYING)
|
||||
M.visible_message("<span class='danger'>The bluespace collapse crushes the air towards it, pulling [M] towards the ground...</span>")
|
||||
M.Knockdown(5, TRUE, TRUE) //Overrides stun absorbs.
|
||||
M.DefaultCombatKnockdown(5, TRUE, TRUE) //Overrides stun absorbs.
|
||||
T.TerraformTurf(/turf/open/chasm/magic, /turf/open/chasm/magic)
|
||||
for (var/obj/structure/ladder/unbreakable/binary/ladder in GLOB.ladders)
|
||||
ladder.ActivateAlmonds()
|
||||
|
||||
@@ -409,7 +409,7 @@
|
||||
|
||||
/datum/component/storage/proc/check_views()
|
||||
for(var/mob/M in can_see_contents())
|
||||
if(!isobserver(M) && !M.CanReach(src, view_only = TRUE))
|
||||
if(!isobserver(M) && !M.CanReach(parent, view_only = TRUE))
|
||||
close(M)
|
||||
|
||||
/datum/component/storage/proc/emp_act(datum/source, severity)
|
||||
|
||||
@@ -279,7 +279,7 @@
|
||||
M.emote("deathgasp")
|
||||
M.fakedeath("regenerative_coma")
|
||||
M.update_stat()
|
||||
M.update_canmove()
|
||||
M.update_mobility()
|
||||
addtimer(CALLBACK(src, .proc/uncoma, M), 300)
|
||||
|
||||
/datum/symptom/heal/coma/proc/uncoma(mob/living/M)
|
||||
@@ -288,7 +288,7 @@
|
||||
active_coma = FALSE
|
||||
M.cure_fakedeath("regenerative_coma")
|
||||
M.update_stat()
|
||||
M.update_canmove()
|
||||
M.update_mobility()
|
||||
|
||||
/datum/symptom/heal/coma/Heal(mob/living/carbon/M, datum/disease/advance/A, actual_power)
|
||||
var/heal_amt = 4 * actual_power
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
if(prob(25))
|
||||
affected_mob.vomit(95)
|
||||
H.emote("cough")
|
||||
H.Knockdown(40)
|
||||
H.DefaultCombatKnockdown(40)
|
||||
H.losebreath += 4
|
||||
if(prob(3))
|
||||
to_chat(H, "<span class='danger'>You feel very weak and dizzy...</span>")
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
/datum/element/sword_point
|
||||
element_flags = ELEMENT_DETACH
|
||||
|
||||
/datum/element/sword_point/Attach(datum/target)
|
||||
. = ..()
|
||||
if(. == ELEMENT_INCOMPATIBLE)
|
||||
return
|
||||
if(!istype(target))
|
||||
return ELEMENT_INCOMPATIBLE
|
||||
RegisterSignal(target, COMSIG_ITEM_ALT_AFTERATTACK, .proc/point)
|
||||
|
||||
/datum/element/sword_point/Detach(datum/source)
|
||||
. = ..()
|
||||
UnregisterSignal(source, COMSIG_ITEM_ALT_AFTERATTACK)
|
||||
|
||||
/datum/element/sword_point/proc/point(datum/source, atom/target, mob/user, proximity_flag, params)
|
||||
if(!proximity_flag && ismob(target))
|
||||
user.visible_message("<span class='notice'>[user] points the tip of [src] at [target].</span>", "<span class='notice'>You point the tip of [src] at [target].</span>")
|
||||
@@ -118,7 +118,8 @@
|
||||
if(DEAD)
|
||||
to_chat(user, "<span class='notice'>You cannot [key] while dead.</span>")
|
||||
return FALSE
|
||||
if(restraint_check && (user.IsStun() || user.IsKnockdown()))
|
||||
var/mob/living/L = user
|
||||
if(restraint_check && (istype(L) && !CHECK_MOBILITY(L, MOBILITY_USE)))
|
||||
if(!intentional)
|
||||
return FALSE
|
||||
to_chat(user, "<span class='notice'>You cannot [key] while stunned.</span>")
|
||||
|
||||
@@ -42,19 +42,19 @@
|
||||
/datum/martial_art/cqc/proc/Slam(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
if(!can_use(A))
|
||||
return FALSE
|
||||
if(!D.stat || !D.IsKnockdown())
|
||||
if(CHECK_MOBILITY(D, MOBILITY_STAND))
|
||||
D.visible_message("<span class='warning'>[A] slams [D] into the ground!</span>", \
|
||||
"<span class='userdanger'>[A] slams you into the ground!</span>")
|
||||
playsound(get_turf(A), 'sound/weapons/slam.ogg', 50, 1, -1)
|
||||
D.apply_damage(10, BRUTE)
|
||||
D.Knockdown(120)
|
||||
D.DefaultCombatKnockdown(120)
|
||||
log_combat(A, D, "slammed (CQC)")
|
||||
return TRUE
|
||||
|
||||
/datum/martial_art/cqc/proc/Kick(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
if(!can_use(A))
|
||||
return FALSE
|
||||
if(!D.stat || !D.IsKnockdown())
|
||||
if(CHECK_MOBILITY(D, MOBILITY_STAND))
|
||||
D.visible_message("<span class='warning'>[A] kicks [D] back!</span>", \
|
||||
"<span class='userdanger'>[A] kicks you back!</span>")
|
||||
playsound(get_turf(A), 'sound/weapons/cqchit1.ogg', 50, 1, -1)
|
||||
@@ -62,7 +62,7 @@
|
||||
D.throw_at(throw_target, 1, 14, A)
|
||||
D.apply_damage(10, BRUTE)
|
||||
log_combat(A, D, "kicked (CQC)")
|
||||
if(D.IsKnockdown() && !D.stat)
|
||||
if(!CHECK_MOBILITY(D, MOBILITY_STAND) && CHECK_MOBILITY(D, MOBILITY_USE))
|
||||
log_combat(A, D, "knocked out (Head kick)(CQC)")
|
||||
D.visible_message("<span class='warning'>[A] kicks [D]'s head, knocking [D.p_them()] out!</span>", \
|
||||
"<span class='userdanger'>[A] kicks your head, knocking you out!</span>")
|
||||
@@ -136,7 +136,7 @@
|
||||
A.do_attack_animation(D)
|
||||
var/picked_hit_type = pick("CQC'd", "Big Bossed")
|
||||
var/bonus_damage = 13
|
||||
if(D.IsKnockdown() || D.resting || D.lying)
|
||||
if(!CHECK_MOBILITY(D, MOBILITY_STAND))
|
||||
bonus_damage += 5
|
||||
picked_hit_type = "stomps on"
|
||||
D.apply_damage(bonus_damage, BRUTE)
|
||||
@@ -147,12 +147,12 @@
|
||||
D.visible_message("<span class='danger'>[A] [picked_hit_type] [D]!</span>", \
|
||||
"<span class='userdanger'>[A] [picked_hit_type] you!</span>")
|
||||
log_combat(A, D, "[picked_hit_type] (CQC)")
|
||||
if(A.resting && !D.stat && !D.IsKnockdown())
|
||||
if(!CHECK_MOBILITY(A, MOBILITY_STAND) && !D.stat && CHECK_MOBILITY(D, MOBILITY_STAND))
|
||||
D.visible_message("<span class='warning'>[A] leg sweeps [D]!", \
|
||||
"<span class='userdanger'>[A] leg sweeps you!</span>")
|
||||
playsound(get_turf(A), 'sound/effects/hit_kick.ogg', 50, 1, -1)
|
||||
D.apply_damage(10, BRUTE)
|
||||
D.Knockdown(60)
|
||||
D.DefaultCombatKnockdown(60)
|
||||
log_combat(A, D, "sweeped (CQC)")
|
||||
return TRUE
|
||||
|
||||
@@ -164,7 +164,7 @@
|
||||
if(check_streak(A,D))
|
||||
return TRUE
|
||||
if(prob(65))
|
||||
if(!D.stat || !D.IsKnockdown() || !restraining)
|
||||
if(CHECK_MOBILITY(D, MOBILITY_MOVE) || !restraining)
|
||||
I = D.get_active_held_item()
|
||||
D.visible_message("<span class='warning'>[A] strikes [D]'s jaw with their hand!</span>", \
|
||||
"<span class='userdanger'>[A] strikes your jaw, disorienting you!</span>")
|
||||
|
||||
@@ -96,13 +96,13 @@
|
||||
return 0
|
||||
|
||||
/datum/martial_art/krav_maga/proc/leg_sweep(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
if(D.lying || D.IsKnockdown())
|
||||
if(!CHECK_MOBILITY(D, MOBILITY_STAND))
|
||||
return 0
|
||||
D.visible_message("<span class='warning'>[A] leg sweeps [D]!</span>", \
|
||||
"<span class='userdanger'>[A] leg sweeps you!</span>")
|
||||
playsound(get_turf(A), 'sound/effects/hit_kick.ogg', 50, 1, -1)
|
||||
D.apply_damage(5, BRUTE)
|
||||
D.Knockdown(40, override_hardstun = 0.01, override_stamdmg = 25)
|
||||
D.DefaultCombatKnockdown(40, override_hardstun = 0.01, override_stamdmg = 25)
|
||||
log_combat(A, D, "leg sweeped")
|
||||
return 1
|
||||
|
||||
@@ -138,7 +138,7 @@
|
||||
log_combat(A, D, "punched")
|
||||
var/picked_hit_type = pick("punches", "kicks")
|
||||
var/bonus_damage = 10
|
||||
if(D.IsKnockdown() || D.resting || D.lying)
|
||||
if(CHECK_MOBILITY(D, MOBILITY_STAND))
|
||||
bonus_damage += 5
|
||||
picked_hit_type = "stomps on"
|
||||
D.apply_damage(bonus_damage, BRUTE)
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
playsound(D, 'sound/effects/meteorimpact.ogg', 25, 1, -1)
|
||||
var/throwtarget = get_edge_target_turf(A, get_dir(A, get_step_away(D, A)))
|
||||
D.throw_at(throwtarget, 4, 2, A)//So stuff gets tossed around at the same time.
|
||||
D.Knockdown(20)
|
||||
D.DefaultCombatKnockdown(20)
|
||||
if(atk_verb)
|
||||
log_combat(A, D, "[atk_verb] (Mushroom Punch)")
|
||||
return TRUE
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
if(!istype(D.head,/obj/item/clothing/head/helmet/) && !istype(D.head,/obj/item/clothing/head/hardhat))
|
||||
D.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5)
|
||||
A.Stun(rand(10,45))
|
||||
D.Knockdown(rand(5,30))//CIT CHANGE - makes stuns from martial arts always use Knockdown instead of Stun for the sake of consistency
|
||||
D.DefaultCombatKnockdown(rand(5,30))//CIT CHANGE - makes stuns from martial arts always use Knockdown instead of Stun for the sake of consistency
|
||||
if(5,6)
|
||||
A.do_attack_animation(D, ATTACK_EFFECT_PUNCH)
|
||||
atk_verb = pick("punches", "kicks", "hits", "slams into")
|
||||
@@ -59,7 +59,7 @@
|
||||
playsound(get_turf(D), 'sound/effects/meteorimpact.ogg', 25, 1, -1)
|
||||
var/throwtarget = get_edge_target_turf(A, get_dir(A, get_step_away(D, A)))
|
||||
D.throw_at(throwtarget, 4, 2, A)//So stuff gets tossed around at the same time.
|
||||
D.Knockdown(60)
|
||||
D.DefaultCombatKnockdown(60)
|
||||
if(7,8)
|
||||
basic_hit(A,D)
|
||||
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
return TRUE
|
||||
|
||||
/datum/martial_art/the_rising_bass/proc/sideKick(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
if(!D.IsKnockdown() || D.lying == 0)
|
||||
if(CHECK_MOBILITY(D, MOBILITY_STAND))
|
||||
var/dir = A.dir & (NORTH | SOUTH) ? pick(EAST, WEST) : pick(NORTH, SOUTH)
|
||||
var/oppdir = dir == NORTH ? SOUTH : dir == SOUTH ? NORTH : dir == EAST ? WEST : EAST
|
||||
var/turf/H = get_step(D, dir)
|
||||
@@ -89,7 +89,7 @@
|
||||
"<span class='userdanger'>[A] kicks you in the side, forcing you to step away!</span>")
|
||||
playsound(get_turf(A), 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
|
||||
D.apply_damage(5, BRUTE, BODY_ZONE_CHEST)
|
||||
D.Knockdown(60)
|
||||
D.DefaultCombatKnockdown(60)
|
||||
var/L = !checkfordensity(H,D) ? (!checkfordensity(K,D) ? D.loc : K) : H
|
||||
D.forceMove(L)
|
||||
log_combat(A, D, "side kicked (Rising Bass)")
|
||||
@@ -97,7 +97,7 @@
|
||||
return basic_hit(A,D)
|
||||
|
||||
/datum/martial_art/the_rising_bass/proc/shoulderFlip(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
if(!D.IsKnockdown() || !D.lying)
|
||||
if(CHECK_MOBILITY(D, MOBILITY_STAND))
|
||||
var/turf/H = get_step(A, get_dir(D,A))
|
||||
var/L = checkfordensity(H,D) ? H : A.loc
|
||||
A.do_attack_animation(D, ATTACK_EFFECT_PUNCH)
|
||||
@@ -108,14 +108,14 @@
|
||||
D.apply_damage(10, BRUTE, BODY_ZONE_CHEST)
|
||||
D.apply_damage(30, BRUTE, BODY_ZONE_HEAD)
|
||||
D.Sleeping(60)
|
||||
D.Knockdown(300)
|
||||
D.DefaultCombatKnockdown(300)
|
||||
D.forceMove(L)
|
||||
log_combat(A, D, "shoulder flipped (Rising Bass)")
|
||||
return TRUE
|
||||
return basic_hit(A,D)
|
||||
|
||||
/datum/martial_art/the_rising_bass/proc/repulsePunch(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
if((!D.IsKnockdown() || !D.lying) && repulsecool > world.time)
|
||||
if(CHECK_MOBILITY(D, MOBILITY_STAND) && repulsecool < world.time)
|
||||
A.do_attack_animation(D, ATTACK_EFFECT_PUNCH)
|
||||
D.visible_message("<span class='warning'>[A] smashes [D] in the chest, throwing them away!</span>", \
|
||||
"<span class='userdanger'>[A] smashes you in the chest, repelling you away!</span>")
|
||||
@@ -123,14 +123,14 @@
|
||||
var/atom/F = get_edge_target_turf(D, get_dir(A, get_step_away(D, A)))
|
||||
D.throw_at(F, 10, 1)
|
||||
D.apply_damage(10, BRUTE, BODY_ZONE_CHEST)
|
||||
D.Knockdown(90)
|
||||
D.DefaultCombatKnockdown(90)
|
||||
log_combat(A, D, "repulse punched (Rising Bass)")
|
||||
repulsecool = world.time + 3 SECONDS
|
||||
return TRUE
|
||||
return basic_hit(A,D)
|
||||
|
||||
/datum/martial_art/the_rising_bass/proc/footSmash(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
if(!D.IsKnockdown() || !D.lying)
|
||||
if(CHECK_MOBILITY(D, MOBILITY_STAND))
|
||||
A.do_attack_animation(D, ATTACK_EFFECT_KICK)
|
||||
D.visible_message("<span class='warning'>[A] smashes their foot down on [D]'s foot!</span>", \
|
||||
"<span class='userdanger'>[A] smashes your foot!</span>")
|
||||
@@ -142,7 +142,7 @@
|
||||
return basic_hit(A,D)
|
||||
|
||||
/datum/martial_art/the_rising_bass/proc/deftSwitch(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
if(!D.IsKnockdown() || !D.lying)
|
||||
if(CHECK_MOBILITY(D, MOBILITY_STAND))
|
||||
if (D.get_active_held_item())
|
||||
var/obj/item/G = D.get_active_held_item()
|
||||
if (G && !(G.item_flags & (ABSTRACT|DROPDEL)) && D.temporarilyRemoveItemFromInventory(G))
|
||||
@@ -205,4 +205,4 @@
|
||||
deftswitch.Remove(H)
|
||||
sidekick.Remove(H)
|
||||
REMOVE_TRAIT(H, TRAIT_NOGUNS, RISING_BASS_TRAIT)
|
||||
REMOVE_TRAIT(H, TRAIT_AUTO_CATCH_ITEM, RISING_BASS_TRAIT)
|
||||
REMOVE_TRAIT(H, TRAIT_AUTO_CATCH_ITEM, RISING_BASS_TRAIT)
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
return FALSE
|
||||
|
||||
/datum/martial_art/the_sleeping_carp/proc/wristWrench(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
if(!D.stat && !D.IsStun() && !D.IsKnockdown())
|
||||
if(CHECK_MOBILITY(D, MOBILITY_USE))
|
||||
log_combat(A, D, "wrist wrenched (Sleeping Carp)")
|
||||
A.do_attack_animation(D, ATTACK_EFFECT_PUNCH)
|
||||
D.visible_message("<span class='warning'>[A] grabs [D]'s wrist and wrenches it sideways!</span>", \
|
||||
@@ -46,19 +46,19 @@
|
||||
D.emote("scream")
|
||||
D.dropItemToGround(D.get_active_held_item())
|
||||
D.apply_damage(5, BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM))
|
||||
D.Knockdown(60)//CIT CHANGE - makes sleepingcarp use knockdown() for its stuns instead of stun()
|
||||
D.DefaultCombatKnockdown(60)//CIT CHANGE - makes sleepingcarp use knockdown() for its stuns instead of stun()
|
||||
return TRUE
|
||||
return basic_hit(A,D)
|
||||
|
||||
/datum/martial_art/the_sleeping_carp/proc/backKick(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
if(!D.stat && !D.IsKnockdown())
|
||||
if(CHECK_MOBILITY(D, MOBILITY_STAND))
|
||||
if(A.dir == D.dir)
|
||||
log_combat(A, D, "back-kicked (Sleeping Carp)")
|
||||
A.do_attack_animation(D, ATTACK_EFFECT_PUNCH)
|
||||
D.visible_message("<span class='warning'>[A] kicks [D] in the back!</span>", \
|
||||
"<span class='userdanger'>[A] kicks you in the back, making you stumble and fall!</span>")
|
||||
step_to(D,get_step(D,D.dir),1)
|
||||
D.Knockdown(80)
|
||||
D.DefaultCombatKnockdown(80)
|
||||
playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1)
|
||||
return TRUE
|
||||
else
|
||||
@@ -68,20 +68,20 @@
|
||||
return basic_hit(A,D)
|
||||
|
||||
/datum/martial_art/the_sleeping_carp/proc/kneeStomach(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
if(!D.stat && !D.IsKnockdown())
|
||||
if(CHECK_MOBILITY(D, MOBILITY_STAND))
|
||||
log_combat(A, D, "stomach kneed (Sleeping Carp)")
|
||||
A.do_attack_animation(D, ATTACK_EFFECT_KICK)
|
||||
D.visible_message("<span class='warning'>[A] knees [D] in the stomach!</span>", \
|
||||
"<span class='userdanger'>[A] winds you with a knee in the stomach!</span>")
|
||||
D.audible_message("<b>[D]</b> gags!")
|
||||
D.losebreath += 3
|
||||
D.Knockdown(40)//CIT CHANGE - makes sleepingcarp use knockdown() for its stuns instead of stun()
|
||||
D.DefaultCombatKnockdown(40)//CIT CHANGE - makes sleepingcarp use knockdown() for its stuns instead of stun()
|
||||
playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1)
|
||||
return TRUE
|
||||
return basic_hit(A,D)
|
||||
|
||||
/datum/martial_art/the_sleeping_carp/proc/headKick(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
if(!D.stat && !D.IsKnockdown())
|
||||
if(CHECK_MOBILITY(D, MOBILITY_STAND))
|
||||
log_combat(A, D, "head kicked (Sleeping Carp)")
|
||||
A.do_attack_animation(D, ATTACK_EFFECT_KICK)
|
||||
D.visible_message("<span class='warning'>[A] kicks [D] in the head!</span>", \
|
||||
@@ -89,12 +89,12 @@
|
||||
D.apply_damage(20, BRUTE, BODY_ZONE_HEAD)
|
||||
D.drop_all_held_items()
|
||||
playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1)
|
||||
D.Knockdown(80)//CIT CHANGE - makes sleepingcarp use knockdown() for its stuns instead of stun()
|
||||
D.DefaultCombatKnockdown(80)//CIT CHANGE - makes sleepingcarp use knockdown() for its stuns instead of stun()
|
||||
return TRUE
|
||||
return basic_hit(A,D)
|
||||
|
||||
/datum/martial_art/the_sleeping_carp/proc/elbowDrop(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
if(D.IsKnockdown() || D.resting || D.stat)
|
||||
if(!CHECK_MOBILITY(D, MOBILITY_STAND))
|
||||
log_combat(A, D, "elbow dropped (Sleeping Carp)")
|
||||
A.do_attack_animation(D, ATTACK_EFFECT_PUNCH)
|
||||
D.visible_message("<span class='warning'>[A] elbow drops [D]!</span>", \
|
||||
@@ -134,7 +134,7 @@
|
||||
playsound(get_turf(D), 'sound/weapons/punch1.ogg', 25, 1, -1)
|
||||
if(prob(D.getBruteLoss()) && !D.lying)
|
||||
D.visible_message("<span class='warning'>[D] stumbles and falls!</span>", "<span class='userdanger'>The blow sends you to the ground!</span>")
|
||||
D.Knockdown(80)
|
||||
D.DefaultCombatKnockdown(80)
|
||||
log_combat(A, D, "[atk_verb] (Sleeping Carp)")
|
||||
return TRUE
|
||||
|
||||
@@ -192,7 +192,7 @@
|
||||
add_fingerprint(user)
|
||||
if((HAS_TRAIT(user, TRAIT_CLUMSY)) && prob(50))
|
||||
to_chat(user, "<span class ='warning'>You club yourself over the head with [src].</span>")
|
||||
user.Knockdown(60)
|
||||
user.DefaultCombatKnockdown(60)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
H.apply_damage(2*force, BRUTE, BODY_ZONE_HEAD)
|
||||
@@ -226,7 +226,7 @@
|
||||
if(prob(10))
|
||||
H.visible_message("<span class='warning'>[H] collapses!</span>", \
|
||||
"<span class='userdanger'>Your legs give out!</span>")
|
||||
H.Knockdown(80)
|
||||
H.DefaultCombatKnockdown(80)
|
||||
if(H.staminaloss && !H.IsSleeping())
|
||||
var/total_health = (H.health - H.staminaloss)
|
||||
if(total_health <= HEALTH_THRESHOLD_CRIT && !H.stat)
|
||||
|
||||
@@ -207,7 +207,7 @@
|
||||
if (T && isturf(T))
|
||||
if (!D.stat)
|
||||
D.emote("scream")
|
||||
D.throw_at(T, 10, 4, A, TRUE, TRUE, callback = CALLBACK(D, /mob/living/carbon/human.proc/Knockdown, 20))
|
||||
D.throw_at(T, 10, 4, A, TRUE, TRUE, callback = CALLBACK(D, /mob/living/carbon/human.proc/DefaultCombatKnockdown, 20))
|
||||
log_combat(A, D, "has thrown with wrestling")
|
||||
return 0
|
||||
|
||||
@@ -303,7 +303,7 @@
|
||||
playsound(A.loc, "swing_hit", 50, 1)
|
||||
if (!D.stat)
|
||||
D.emote("scream")
|
||||
D.Knockdown(40)
|
||||
D.DefaultCombatKnockdown(40)
|
||||
|
||||
switch(rand(1,3))
|
||||
if (2)
|
||||
@@ -361,7 +361,7 @@
|
||||
|
||||
var/turf/T = get_edge_target_turf(A, get_dir(A, get_step_away(D, A)))
|
||||
if (T && isturf(T))
|
||||
D.Knockdown(20)
|
||||
D.DefaultCombatKnockdown(20)
|
||||
D.throw_at(T, 3, 2)
|
||||
log_combat(A, D, "roundhouse-kicked")
|
||||
|
||||
@@ -400,7 +400,7 @@
|
||||
if (falling == 1)
|
||||
A.visible_message("<span class = 'danger'><B>...and dives head-first into the ground, ouch!</b></span>")
|
||||
A.adjustBruteLoss(rand(10,20))
|
||||
A.Knockdown(60)
|
||||
A.DefaultCombatKnockdown(60)
|
||||
to_chat(A, "[D] is too far away!")
|
||||
return 0
|
||||
|
||||
@@ -429,7 +429,7 @@
|
||||
else
|
||||
D.adjustBruteLoss(rand(20,30))
|
||||
|
||||
D.Knockdown(40)
|
||||
D.DefaultCombatKnockdown(40)
|
||||
|
||||
A.pixel_y = 0
|
||||
|
||||
|
||||
@@ -41,20 +41,21 @@ Simple datum which is instanced once per type and is used for every object of sa
|
||||
|
||||
///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
|
||||
if(material_flags & MATERIAL_AFFECT_STATISTICS)
|
||||
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!
|
||||
var/list/temp_armor_list = list() //Time to add armor modifiers!
|
||||
|
||||
if(!istype(o.armor))
|
||||
return
|
||||
var/list/current_armor = o.armor?.getList()
|
||||
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))
|
||||
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)
|
||||
@@ -71,7 +72,8 @@ Simple datum which is instanced once per type and is used for every object of sa
|
||||
|
||||
///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)
|
||||
if(material_flags & MATERIAL_AFFECT_STATISTICS)
|
||||
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)
|
||||
|
||||
@@ -617,6 +617,10 @@
|
||||
if(!(has_antag_datum(/datum/antagonist/traitor)))
|
||||
add_antag_datum(/datum/antagonist/traitor)
|
||||
|
||||
/datum/mind/proc/make_Contractor_Support()
|
||||
if(!(has_antag_datum(/datum/antagonist/traitor/contractor_support)))
|
||||
add_antag_datum(/datum/antagonist/traitor/contractor_support)
|
||||
|
||||
/datum/mind/proc/make_Changeling()
|
||||
var/datum/antagonist/changeling/C = has_antag_datum(/datum/antagonist/changeling)
|
||||
if(!C)
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
/datum/progressbar/New(mob/User, goal_number, atom/target)
|
||||
. = ..()
|
||||
if (!istype(target))
|
||||
EXCEPTION("Invalid target given")
|
||||
CRASH("Invalid target given")
|
||||
if (goal_number)
|
||||
goal = goal_number
|
||||
bar = image('icons/effects/progessbar.dmi', target, "prog_bar_0", HUD_LAYER)
|
||||
|
||||
@@ -322,3 +322,70 @@
|
||||
suffix = "advancedlab.dmm"
|
||||
name = "Abductor Replication Lab"
|
||||
description = "Some scientists tried and almost succeeded to recreate abductor tools. Somewhat slower and a bit less modern than their originals, these tools are the best you can get if you aren't an alien."
|
||||
|
||||
//Space ruins for the station z
|
||||
/datum/map_template/ruin/spacenearstation
|
||||
prefix = "_maps/RandomRuins/SpaceRuinsStation/"
|
||||
cost = 1
|
||||
allow_duplicates = FALSE
|
||||
|
||||
/datum/map_template/ruin/spacenearstation/roid1
|
||||
id = "roid1"
|
||||
suffix = "roid1.dmm"
|
||||
name = "Mineable Asteroid 1"
|
||||
description = "Mineral asteroid 1."
|
||||
allow_duplicates = TRUE
|
||||
|
||||
/datum/map_template/ruin/spacenearstation/roid2
|
||||
id = "roid2"
|
||||
suffix = "roid2.dmm"
|
||||
name = "Crab Roid"
|
||||
description = "Mineral asteroid. Ft. Crabs."
|
||||
|
||||
/datum/map_template/ruin/spacenearstation/roid3
|
||||
id = "roid3"
|
||||
suffix = "roid3.dmm"
|
||||
name = "Dorm Roid"
|
||||
description = "Mineral asteroid. Ft. Dorm."
|
||||
|
||||
/datum/map_template/ruin/spacenearstation/roid4
|
||||
id = "roid4"
|
||||
suffix = "roid4.dmm"
|
||||
name = "Mineable Asteroid 2"
|
||||
description = "Mineral asteroid 2."
|
||||
|
||||
/datum/map_template/ruin/spacenearstation/roid5
|
||||
id = "roid5"
|
||||
suffix = "roid5.dmm"
|
||||
name = "Mineable Asteroid 3"
|
||||
description = "Mineral asteroid. Ft. Holofans."
|
||||
|
||||
/datum/map_template/ruin/spacenearstation/roid6
|
||||
id = "roid6"
|
||||
suffix = "roid6.dmm"
|
||||
name = "Mineable Asteroid 4"
|
||||
description = "Mineral asteroid. Ft. Crashed escape pod."
|
||||
|
||||
/datum/map_template/ruin/spacenearstation/roid7
|
||||
id = "roid7"
|
||||
suffix = "roid7.dmm"
|
||||
name = "Mineable Asteroid 5"
|
||||
description = "Mineral asteroid. Ft. Derelict space bar."
|
||||
|
||||
/datum/map_template/ruin/spacenearstation/roid8
|
||||
id = "roid8"
|
||||
suffix = "roid8.dmm"
|
||||
name = "Dead wizard Roid"
|
||||
description = "Mineral asteroid. Ft. Dead wizard and toilet paradox bag."
|
||||
|
||||
/datum/map_template/ruin/spacenearstation/roid9
|
||||
id = "roid9"
|
||||
suffix = "roid9.dmm"
|
||||
name = "Monitoring Roid"
|
||||
description = "Mineral asteroid. Ft. Station monitoring, syndie toolbox and erp."
|
||||
|
||||
/datum/map_template/ruin/spacenearstation/roid10
|
||||
id = "roid10"
|
||||
suffix = "roid10.dmm"
|
||||
name = "Maze Roid"
|
||||
description = "Mineral asteroid. Ft. Brief maze."
|
||||
|
||||
@@ -73,8 +73,7 @@
|
||||
owner.log_message("gained Vanguard stun immunity", LOG_ATTACK)
|
||||
owner.add_stun_absorption("vanguard", INFINITY, 1, "'s yellow aura momentarily intensifies!", "Your ward absorbs the stun!", " radiating with a soft yellow light!")
|
||||
owner.visible_message("<span class='warning'>[owner] begins to faintly glow!</span>", "<span class='brass'>You will absorb all stuns for the next twenty seconds.</span>")
|
||||
owner.SetStun(0, FALSE)
|
||||
owner.SetKnockdown(0)
|
||||
owner.SetAllImmobility(0, FALSE)
|
||||
owner.setStaminaLoss(0, FALSE)
|
||||
progbar = new(owner, duration, owner)
|
||||
progbar.bar.color = list("#FAE48C", "#FAE48C", "#FAE48C", rgb(0,0,0))
|
||||
@@ -97,7 +96,7 @@
|
||||
if(owner.stun_absorption[i]["end_time"] > world.time && owner.stun_absorption[i]["priority"] > vanguard["priority"])
|
||||
otheractiveabsorptions = TRUE
|
||||
if(!GLOB.ratvar_awakens && stuns_blocked && !otheractiveabsorptions)
|
||||
owner.Knockdown(stuns_blocked)
|
||||
owner.DefaultCombatKnockdown(stuns_blocked)
|
||||
message_to_owner = "<span class='boldwarning'>The weight of the Vanguard's protection crashes down upon you!</span>"
|
||||
if(stuns_blocked >= 300)
|
||||
message_to_owner += "\n<span class='userdanger'>You faint from the exertion!</span>"
|
||||
@@ -226,9 +225,8 @@
|
||||
return ..()
|
||||
|
||||
/datum/status_effect/wish_granters_gift/on_remove()
|
||||
owner.revive(full_heal = 1, admin_revive = 1)
|
||||
owner.revive(full_heal = TRUE, admin_revive = TRUE)
|
||||
owner.visible_message("<span class='warning'>[owner] appears to wake from the dead, having healed all wounds!</span>", "<span class='notice'>You have regenerated.</span>")
|
||||
owner.update_canmove()
|
||||
|
||||
/obj/screen/alert/status_effect/wish_granters_gift
|
||||
name = "Wish Granter's Immortality"
|
||||
|
||||
@@ -12,12 +12,12 @@
|
||||
. = ..()
|
||||
if(.)
|
||||
if(updating_canmove)
|
||||
owner.update_canmove()
|
||||
owner.update_mobility()
|
||||
if(needs_update_stat || issilicon(owner))
|
||||
owner.update_stat()
|
||||
|
||||
/datum/status_effect/incapacitating/on_remove()
|
||||
owner.update_canmove()
|
||||
owner.update_mobility()
|
||||
if(needs_update_stat || issilicon(owner)) //silicons need stat updates in addition to normal canmove updates
|
||||
owner.update_stat()
|
||||
|
||||
@@ -29,10 +29,22 @@
|
||||
/datum/status_effect/incapacitating/knockdown
|
||||
id = "knockdown"
|
||||
|
||||
/datum/status_effect/incapacitating/knockdown/tick()
|
||||
//IMMOBILIZED
|
||||
/datum/status_effect/incapacitating/immobilized
|
||||
id = "immobilized"
|
||||
|
||||
//PARALYZED
|
||||
/datum/status_effect/incapacitating/paralyzed
|
||||
id = "paralyzed"
|
||||
|
||||
/datum/status_effect/incapacitating/paralyzed/tick()
|
||||
if(owner.getStaminaLoss())
|
||||
owner.adjustStaminaLoss(-0.3) //reduce stamina loss by 0.3 per tick, 6 per 2 seconds
|
||||
|
||||
//DAZED
|
||||
/datum/status_effect/incapacitating/dazed
|
||||
id = "dazed"
|
||||
|
||||
//UNCONSCIOUS
|
||||
/datum/status_effect/incapacitating/unconscious
|
||||
id = "unconscious"
|
||||
@@ -211,7 +223,7 @@
|
||||
if(iscarbon(owner) && !is_servant_of_ratvar(owner) && !owner.anti_magic_check(chargecost = 0) && number_legs)
|
||||
if(force_damage || owner.m_intent != MOVE_INTENT_WALK)
|
||||
if(GLOB.ratvar_awakens)
|
||||
owner.Knockdown(20)
|
||||
owner.DefaultCombatKnockdown(20)
|
||||
if(iscultist(owner))
|
||||
owner.apply_damage(cultist_damage_on_toggle * 0.5, BURN, BODY_ZONE_L_LEG)
|
||||
owner.apply_damage(cultist_damage_on_toggle * 0.5, BURN, BODY_ZONE_R_LEG)
|
||||
@@ -558,7 +570,7 @@
|
||||
var/old_oxyloss
|
||||
|
||||
/datum/status_effect/kindle/tick()
|
||||
owner.Knockdown(15, TRUE, FALSE, 15)
|
||||
owner.DefaultCombatKnockdown(15, TRUE, FALSE, 15)
|
||||
if(iscarbon(owner))
|
||||
var/mob/living/carbon/C = owner
|
||||
C.silent = max(2, C.silent)
|
||||
|
||||
@@ -17,11 +17,11 @@
|
||||
to_chat(owner, "<span class='userdanger'>You become frozen in a cube!</span>")
|
||||
cube = icon('icons/effects/freeze.dmi', "ice_cube")
|
||||
owner.add_overlay(cube)
|
||||
owner.update_canmove()
|
||||
owner.update_mobility()
|
||||
return ..()
|
||||
|
||||
/datum/status_effect/freon/tick()
|
||||
owner.update_canmove()
|
||||
owner.update_mobility()
|
||||
if(can_melt && owner.bodytemperature >= BODYTEMP_NORMAL)
|
||||
qdel(src)
|
||||
|
||||
@@ -31,14 +31,14 @@
|
||||
if(!QDELETED(src))
|
||||
to_chat(owner, "You break out of the ice cube!")
|
||||
owner.remove_status_effect(/datum/status_effect/freon)
|
||||
owner.update_canmove()
|
||||
owner.update_mobility()
|
||||
|
||||
/datum/status_effect/freon/on_remove()
|
||||
if(!owner.stat)
|
||||
to_chat(owner, "The cube melts!")
|
||||
owner.cut_overlay(cube)
|
||||
owner.adjust_bodytemperature(100)
|
||||
owner.update_canmove()
|
||||
owner.update_mobility()
|
||||
UnregisterSignal(owner, COMSIG_LIVING_RESIST)
|
||||
|
||||
/datum/status_effect/freon/watcher
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
area_type = /area
|
||||
protected_areas = list(/area/maintenance, /area/ai_monitored/turret_protected/ai_upload, /area/ai_monitored/turret_protected/ai_upload_foyer,
|
||||
/area/ai_monitored/turret_protected/ai, /area/storage/emergency/starboard, /area/storage/emergency/port, /area/shuttle, /area/security/prison)
|
||||
/area/ai_monitored/turret_protected/ai, /area/storage/emergency/starboard, /area/storage/emergency/port, /area/shuttle, /area/security/prison, /area/ruin, /area/space/nearstation)
|
||||
target_trait = ZTRAIT_STATION
|
||||
|
||||
immunity_type = "rad"
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
status += "The law sync module is [R.lawupdate ? "on" : "off"]."
|
||||
status += "The intelligence link display shows [R.connected_ai ? R.connected_ai.name : "NULL"]."
|
||||
status += "The camera light is [!isnull(R.builtInCamera) && R.builtInCamera.status ? "on" : "off"]."
|
||||
status += "The lockdown indicator is [R.lockcharge ? "on" : "off"]."
|
||||
status += "The lockdown indicator is [R.locked_down ? "on" : "off"]."
|
||||
status += "The reset module hardware light is [R.has_module() ? "on" : "off"]."
|
||||
return status
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
R.lawsync()
|
||||
R.show_laws()
|
||||
if(WIRE_LOCKDOWN)
|
||||
R.SetLockdown(!R.lockcharge) // Toggle
|
||||
R.SetLockdown(!R.locked_down) // Toggle
|
||||
if(WIRE_RESET_MODULE)
|
||||
if(R.has_module())
|
||||
R.visible_message("[R]'s module servos twitch.", "Your module display flickers.")
|
||||
|
||||
@@ -172,7 +172,7 @@
|
||||
.["security_level"] = get_security_level()
|
||||
.["round_duration"] = SSticker ? round((world.time-SSticker.round_start_time)/10) : 0
|
||||
// Amount of world's ticks in seconds, useful for calculating round duration
|
||||
|
||||
|
||||
//Time dilation stats.
|
||||
.["time_dilation_current"] = SStime_track.time_dilation_current
|
||||
.["time_dilation_avg"] = SStime_track.time_dilation_avg
|
||||
@@ -187,3 +187,4 @@
|
||||
|
||||
if(!key_valid)
|
||||
GLOB.topic_status_cache = .
|
||||
|
||||
|
||||
@@ -48,6 +48,8 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
icon_state = "space_near"
|
||||
dynamic_lighting = DYNAMIC_LIGHTING_IFSTARLIGHT
|
||||
|
||||
/area/space/station_ruins //Paint this area where you want station ruins to be allowed to spawn
|
||||
|
||||
/area/start
|
||||
name = "start area"
|
||||
icon_state = "start"
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
/area/ruin/space
|
||||
has_gravity = FALSE
|
||||
blob_allowed = FALSE //Nope, no winning in space as a blob. Gotta eat the station.
|
||||
outdoors = TRUE
|
||||
ambientsounds = SPACE
|
||||
|
||||
/area/ruin/space/has_grav
|
||||
has_gravity = STANDARD_GRAVITY
|
||||
|
||||
+8
-8
@@ -28,7 +28,6 @@
|
||||
var/list/managed_overlays
|
||||
|
||||
var/datum/proximity_monitor/proximity_monitor
|
||||
var/buckle_message_cooldown = 0
|
||||
var/fingerprintslast
|
||||
|
||||
var/list/filter_data //For handling persistent filters
|
||||
@@ -98,7 +97,7 @@
|
||||
|
||||
var/temp_list = list()
|
||||
for(var/i in custom_materials)
|
||||
temp_list[getmaterialref(i)] = custom_materials[i] //Get the proper instanced version
|
||||
temp_list[SSmaterials.GetMaterialRef(i)] = custom_materials[i] //Get the proper instanced version
|
||||
custom_materials = null //Null the list to prepare for applying the materials properly
|
||||
set_custom_materials(temp_list)
|
||||
|
||||
@@ -361,11 +360,12 @@
|
||||
. = list()
|
||||
SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_OVERLAYS, .)
|
||||
|
||||
/atom/proc/relaymove(mob/user)
|
||||
if(buckle_message_cooldown <= world.time)
|
||||
buckle_message_cooldown = world.time + 50
|
||||
/atom/proc/relaymove(mob/living/user)
|
||||
if(!istype(user))
|
||||
return //why are you buckling nonliving mobs to atoms?
|
||||
if(user.buckle_message_cooldown <= world.time)
|
||||
user.buckle_message_cooldown = world.time + 50
|
||||
to_chat(user, "<span class='warning'>You can't move while buckled to [src]!</span>")
|
||||
return
|
||||
|
||||
/atom/proc/contents_explosion(severity, target)
|
||||
return //For handling the effects of explosions on contents that would not normally be effected
|
||||
@@ -904,7 +904,7 @@ Proc for attack log creation, because really why not
|
||||
|
||||
if(custom_materials) //Only runs if custom materials existed at first. Should usually be the case but check anyways
|
||||
for(var/i in custom_materials)
|
||||
var/datum/material/custom_material = getmaterialref(i)
|
||||
var/datum/material/custom_material = SSmaterials.GetMaterialRef(i)
|
||||
custom_material.on_removed(src, material_flags) //Remove the current materials
|
||||
|
||||
if(!length(materials))
|
||||
@@ -913,7 +913,7 @@ Proc for attack log creation, because really why not
|
||||
custom_materials = list() //Reset the list
|
||||
|
||||
for(var/x in materials)
|
||||
var/datum/material/custom_material = getmaterialref(x)
|
||||
var/datum/material/custom_material = SSmaterials.GetMaterialRef(x)
|
||||
|
||||
if(!(material_flags & MATERIAL_NO_EFFECTS))
|
||||
custom_material.on_applied(src, materials[custom_material] * multiplier * material_modifier, material_flags)
|
||||
|
||||
+2
-304
@@ -158,7 +158,7 @@
|
||||
grab_state = 0
|
||||
if(isliving(ex_pulled))
|
||||
var/mob/living/L = ex_pulled
|
||||
L.update_canmove()// mob gets up if it was lyng down in a chokehold
|
||||
L.update_mobility()// mob gets up if it was lyng down in a chokehold
|
||||
|
||||
/atom/movable/proc/Move_Pulled(atom/A)
|
||||
if(!pulling)
|
||||
@@ -194,160 +194,6 @@
|
||||
stop_pulling()
|
||||
return
|
||||
|
||||
////////////////////////////////////////
|
||||
// Here's where we rewrite how byond handles movement except slightly different
|
||||
// To be removed on step_ conversion
|
||||
// All this work to prevent a second bump
|
||||
/atom/movable/Move(atom/newloc, direct=0)
|
||||
. = FALSE
|
||||
if(!newloc || newloc == loc)
|
||||
return
|
||||
|
||||
if(!direct)
|
||||
direct = get_dir(src, newloc)
|
||||
setDir(direct)
|
||||
|
||||
if(!loc.Exit(src, newloc))
|
||||
return
|
||||
|
||||
if(!newloc.Enter(src, src.loc))
|
||||
return
|
||||
|
||||
// Past this is the point of no return
|
||||
var/atom/oldloc = loc
|
||||
var/area/oldarea = get_area(oldloc)
|
||||
var/area/newarea = get_area(newloc)
|
||||
loc = newloc
|
||||
. = TRUE
|
||||
oldloc.Exited(src, newloc)
|
||||
if(oldarea != newarea)
|
||||
oldarea.Exited(src, newloc)
|
||||
|
||||
for(var/i in oldloc)
|
||||
if(i == src) // Multi tile objects
|
||||
continue
|
||||
var/atom/movable/thing = i
|
||||
thing.Uncrossed(src)
|
||||
|
||||
newloc.Entered(src, oldloc)
|
||||
if(oldarea != newarea)
|
||||
newarea.Entered(src, oldloc)
|
||||
|
||||
for(var/i in loc)
|
||||
if(i == src) // Multi tile objects
|
||||
continue
|
||||
var/atom/movable/thing = i
|
||||
thing.Crossed(src)
|
||||
//
|
||||
////////////////////////////////////////
|
||||
|
||||
/atom/movable/Move(atom/newloc, direct)
|
||||
var/atom/movable/pullee = pulling
|
||||
var/turf/T = loc
|
||||
if(pulling)
|
||||
if(pullee && get_dist(src, pullee) > 1)
|
||||
stop_pulling()
|
||||
|
||||
if(pullee && pullee.loc != loc && !isturf(pullee.loc) ) //to be removed once all code that changes an object's loc uses forceMove().
|
||||
log_game("DEBUG:[src]'s pull on [pullee] wasn't broken despite [pullee] being in [pullee.loc]. Pull stopped manually.")
|
||||
stop_pulling()
|
||||
if(!loc || !newloc)
|
||||
return FALSE
|
||||
var/atom/oldloc = loc
|
||||
|
||||
if(loc != newloc)
|
||||
if (!(direct & (direct - 1))) //Cardinal move
|
||||
. = ..()
|
||||
else //Diagonal move, split it into cardinal moves
|
||||
moving_diagonally = FIRST_DIAG_STEP
|
||||
var/first_step_dir
|
||||
// The `&& moving_diagonally` checks are so that a forceMove taking
|
||||
// place due to a Crossed, Bumped, etc. call will interrupt
|
||||
// the second half of the diagonal movement, or the second attempt
|
||||
// at a first half if step() fails because we hit something.
|
||||
if (direct & NORTH)
|
||||
if (direct & EAST)
|
||||
if (step(src, NORTH) && moving_diagonally)
|
||||
first_step_dir = NORTH
|
||||
moving_diagonally = SECOND_DIAG_STEP
|
||||
. = step(src, EAST)
|
||||
else if (moving_diagonally && step(src, EAST))
|
||||
first_step_dir = EAST
|
||||
moving_diagonally = SECOND_DIAG_STEP
|
||||
. = step(src, NORTH)
|
||||
else if (direct & WEST)
|
||||
if (step(src, NORTH) && moving_diagonally)
|
||||
first_step_dir = NORTH
|
||||
moving_diagonally = SECOND_DIAG_STEP
|
||||
. = step(src, WEST)
|
||||
else if (moving_diagonally && step(src, WEST))
|
||||
first_step_dir = WEST
|
||||
moving_diagonally = SECOND_DIAG_STEP
|
||||
. = step(src, NORTH)
|
||||
else if (direct & SOUTH)
|
||||
if (direct & EAST)
|
||||
if (step(src, SOUTH) && moving_diagonally)
|
||||
first_step_dir = SOUTH
|
||||
moving_diagonally = SECOND_DIAG_STEP
|
||||
. = step(src, EAST)
|
||||
else if (moving_diagonally && step(src, EAST))
|
||||
first_step_dir = EAST
|
||||
moving_diagonally = SECOND_DIAG_STEP
|
||||
. = step(src, SOUTH)
|
||||
else if (direct & WEST)
|
||||
if (step(src, SOUTH) && moving_diagonally)
|
||||
first_step_dir = SOUTH
|
||||
moving_diagonally = SECOND_DIAG_STEP
|
||||
. = step(src, WEST)
|
||||
else if (moving_diagonally && step(src, WEST))
|
||||
first_step_dir = WEST
|
||||
moving_diagonally = SECOND_DIAG_STEP
|
||||
. = step(src, SOUTH)
|
||||
if(moving_diagonally == SECOND_DIAG_STEP)
|
||||
if(!.)
|
||||
setDir(first_step_dir)
|
||||
else if (!inertia_moving)
|
||||
inertia_next_move = world.time + inertia_move_delay
|
||||
newtonian_move(direct)
|
||||
moving_diagonally = 0
|
||||
return
|
||||
|
||||
if(!loc || (loc == oldloc && oldloc != newloc))
|
||||
last_move = 0
|
||||
return
|
||||
|
||||
if(.)
|
||||
Moved(oldloc, direct)
|
||||
if(. && pulling && pulling == pullee) //we were pulling a thing and didn't lose it during our move.
|
||||
if(pulling.anchored)
|
||||
stop_pulling()
|
||||
else
|
||||
var/pull_dir = get_dir(src, pulling)
|
||||
//puller and pullee more than one tile away or in diagonal position
|
||||
if(get_dist(src, pulling) > 1 || (moving_diagonally != SECOND_DIAG_STEP && ((pull_dir - 1) & pull_dir)))
|
||||
pulling.Move(T, get_dir(pulling, T)) //the pullee tries to reach our previous position
|
||||
if(pulling && get_dist(src, pulling) > 1) //the pullee couldn't keep up
|
||||
stop_pulling()
|
||||
if(pulledby && moving_diagonally != FIRST_DIAG_STEP && get_dist(src, pulledby) > 1)//separated from our puller and not in the middle of a diagonal move.
|
||||
pulledby.stop_pulling()
|
||||
|
||||
|
||||
last_move = direct
|
||||
setDir(direct)
|
||||
if(. && has_buckled_mobs() && !handle_buckled_mob_movement(loc,direct)) //movement failed due to buckled mob(s)
|
||||
return FALSE
|
||||
|
||||
//Called after a successful Move(). By this point, we've already moved
|
||||
/atom/movable/proc/Moved(atom/OldLoc, Dir, Forced = FALSE)
|
||||
SEND_SIGNAL(src, COMSIG_MOVABLE_MOVED, OldLoc, Dir, Forced)
|
||||
if (!inertia_moving)
|
||||
inertia_next_move = world.time + inertia_move_delay
|
||||
newtonian_move(Dir)
|
||||
if (length(client_mobs_in_contents))
|
||||
update_parallax_contents()
|
||||
|
||||
return TRUE
|
||||
|
||||
/atom/movable/Destroy(force)
|
||||
QDEL_NULL(proximity_monitor)
|
||||
QDEL_NULL(language_holder)
|
||||
@@ -372,143 +218,6 @@
|
||||
orbiting.end_orbit(src)
|
||||
orbiting = null
|
||||
|
||||
// Make sure you know what you're doing if you call this, this is intended to only be called by byond directly.
|
||||
// You probably want CanPass()
|
||||
/atom/movable/Cross(atom/movable/AM)
|
||||
. = TRUE
|
||||
SEND_SIGNAL(src, COMSIG_MOVABLE_CROSS, AM)
|
||||
return CanPass(AM, AM.loc, TRUE)
|
||||
|
||||
//oldloc = old location on atom, inserted when forceMove is called and ONLY when forceMove is called!
|
||||
/atom/movable/Crossed(atom/movable/AM, oldloc)
|
||||
SEND_SIGNAL(src, COMSIG_MOVABLE_CROSSED, AM)
|
||||
|
||||
/atom/movable/Uncross(atom/movable/AM, atom/newloc)
|
||||
. = ..()
|
||||
if(SEND_SIGNAL(src, COMSIG_MOVABLE_UNCROSS, AM) & COMPONENT_MOVABLE_BLOCK_UNCROSS)
|
||||
return FALSE
|
||||
if(isturf(newloc) && !CheckExit(AM, newloc))
|
||||
return FALSE
|
||||
|
||||
/atom/movable/Uncrossed(atom/movable/AM)
|
||||
SEND_SIGNAL(src, COMSIG_MOVABLE_UNCROSSED, AM)
|
||||
|
||||
/atom/movable/Bump(atom/A)
|
||||
if(!A)
|
||||
CRASH("Bump was called with no argument.")
|
||||
SEND_SIGNAL(src, COMSIG_MOVABLE_BUMP, A)
|
||||
. = ..()
|
||||
if(!QDELETED(throwing))
|
||||
throwing.hit_atom(A)
|
||||
. = TRUE
|
||||
if(QDELETED(A))
|
||||
return
|
||||
A.Bumped(src)
|
||||
|
||||
/atom/movable/proc/forceMove(atom/destination)
|
||||
. = FALSE
|
||||
if(destination)
|
||||
. = doMove(destination)
|
||||
else
|
||||
CRASH("No valid destination passed into forceMove")
|
||||
|
||||
/atom/movable/proc/moveToNullspace()
|
||||
return doMove(null)
|
||||
|
||||
/atom/movable/proc/doMove(atom/destination)
|
||||
. = FALSE
|
||||
if(destination)
|
||||
if(pulledby)
|
||||
pulledby.stop_pulling()
|
||||
var/atom/oldloc = loc
|
||||
var/same_loc = oldloc == destination
|
||||
var/area/old_area = get_area(oldloc)
|
||||
var/area/destarea = get_area(destination)
|
||||
|
||||
loc = destination
|
||||
moving_diagonally = 0
|
||||
|
||||
if(!same_loc)
|
||||
if(oldloc)
|
||||
oldloc.Exited(src, destination)
|
||||
if(old_area && old_area != destarea)
|
||||
old_area.Exited(src, destination)
|
||||
for(var/atom/movable/AM in oldloc)
|
||||
AM.Uncrossed(src)
|
||||
var/turf/oldturf = get_turf(oldloc)
|
||||
var/turf/destturf = get_turf(destination)
|
||||
var/old_z = (oldturf ? oldturf.z : null)
|
||||
var/dest_z = (destturf ? destturf.z : null)
|
||||
if (old_z != dest_z)
|
||||
onTransitZ(old_z, dest_z)
|
||||
destination.Entered(src, oldloc)
|
||||
if(destarea && old_area != destarea)
|
||||
destarea.Entered(src, oldloc)
|
||||
|
||||
for(var/atom/movable/AM in destination)
|
||||
if(AM == src)
|
||||
continue
|
||||
AM.Crossed(src, oldloc)
|
||||
|
||||
Moved(oldloc, NONE, TRUE)
|
||||
. = TRUE
|
||||
|
||||
//If no destination, move the atom into nullspace (don't do this unless you know what you're doing)
|
||||
else
|
||||
. = TRUE
|
||||
if (loc)
|
||||
var/atom/oldloc = loc
|
||||
var/area/old_area = get_area(oldloc)
|
||||
oldloc.Exited(src, null)
|
||||
if(old_area)
|
||||
old_area.Exited(src, null)
|
||||
loc = null
|
||||
|
||||
/atom/movable/proc/onTransitZ(old_z,new_z)
|
||||
SEND_SIGNAL(src, COMSIG_MOVABLE_Z_CHANGED, old_z, new_z)
|
||||
for (var/item in src) // Notify contents of Z-transition. This can be overridden IF we know the items contents do not care.
|
||||
var/atom/movable/AM = item
|
||||
AM.onTransitZ(old_z,new_z)
|
||||
|
||||
/atom/movable/proc/setMovetype(newval)
|
||||
movement_type = newval
|
||||
|
||||
//Called whenever an object moves and by mobs when they attempt to move themselves through space
|
||||
//And when an object or action applies a force on src, see newtonian_move() below
|
||||
//Return 0 to have src start/keep drifting in a no-grav area and 1 to stop/not start drifting
|
||||
//Mobs should return 1 if they should be able to move of their own volition, see client/Move() in mob_movement.dm
|
||||
//movement_dir == 0 when stopping or any dir when trying to move
|
||||
/atom/movable/proc/Process_Spacemove(movement_dir = 0)
|
||||
if(has_gravity(src))
|
||||
return 1
|
||||
|
||||
if(pulledby)
|
||||
return 1
|
||||
|
||||
if(throwing)
|
||||
return 1
|
||||
|
||||
if(!isturf(loc))
|
||||
return 1
|
||||
|
||||
if(locate(/obj/structure/lattice) in range(1, get_turf(src))) //Not realistic but makes pushing things in space easier
|
||||
return 1
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
/atom/movable/proc/newtonian_move(direction) //Only moves the object if it's under no gravity
|
||||
if(!loc || Process_Spacemove(0))
|
||||
inertia_dir = 0
|
||||
return 0
|
||||
|
||||
inertia_dir = direction
|
||||
if(!direction)
|
||||
return 1
|
||||
inertia_last_loc = loc
|
||||
SSspacedrift.processing[src] = src
|
||||
return 1
|
||||
|
||||
/atom/movable/proc/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
|
||||
set waitfor = 0
|
||||
SEND_SIGNAL(src, COMSIG_MOVABLE_IMPACT, hit_atom, throwingdatum)
|
||||
@@ -610,17 +319,6 @@
|
||||
SSthrowing.currentrun[src] = TT
|
||||
TT.tick()
|
||||
|
||||
/atom/movable/proc/handle_buckled_mob_movement(newloc,direct)
|
||||
for(var/m in buckled_mobs)
|
||||
var/mob/living/buckled_mob = m
|
||||
if(!buckled_mob.Move(newloc, direct))
|
||||
forceMove(buckled_mob.loc)
|
||||
last_move = buckled_mob.last_move
|
||||
inertia_dir = last_move
|
||||
buckled_mob.inertia_dir = last_move
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/atom/movable/proc/force_pushed(atom/movable/pusher, force = MOVE_FORCE_DEFAULT, direction)
|
||||
return FALSE
|
||||
|
||||
@@ -639,7 +337,7 @@
|
||||
|
||||
/atom/movable/CanPass(atom/movable/mover, turf/target)
|
||||
if(mover in buckled_mobs)
|
||||
return 1
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
// called when this atom is removed from a storage item, which is passed on as S. The loc variable is already set to the new destination before this is called.
|
||||
|
||||
@@ -0,0 +1,307 @@
|
||||
// File for movement procs for atom/movable
|
||||
|
||||
|
||||
////////////////////////////////////////
|
||||
// Here's where we rewrite how byond handles movement except slightly different
|
||||
// To be removed on step_ conversion
|
||||
// All this work to prevent a second bump
|
||||
/atom/movable/Move(atom/newloc, direct=0)
|
||||
. = FALSE
|
||||
if(!newloc || newloc == loc)
|
||||
return
|
||||
|
||||
if(!direct)
|
||||
direct = get_dir(src, newloc)
|
||||
setDir(direct)
|
||||
|
||||
if(!loc.Exit(src, newloc))
|
||||
return
|
||||
|
||||
if(!newloc.Enter(src, src.loc))
|
||||
return
|
||||
|
||||
// Past this is the point of no return
|
||||
var/atom/oldloc = loc
|
||||
var/area/oldarea = get_area(oldloc)
|
||||
var/area/newarea = get_area(newloc)
|
||||
loc = newloc
|
||||
. = TRUE
|
||||
oldloc.Exited(src, newloc)
|
||||
if(oldarea != newarea)
|
||||
oldarea.Exited(src, newloc)
|
||||
|
||||
for(var/i in oldloc)
|
||||
if(i == src) // Multi tile objects
|
||||
continue
|
||||
var/atom/movable/thing = i
|
||||
thing.Uncrossed(src)
|
||||
|
||||
newloc.Entered(src, oldloc)
|
||||
if(oldarea != newarea)
|
||||
newarea.Entered(src, oldloc)
|
||||
|
||||
for(var/i in loc)
|
||||
if(i == src) // Multi tile objects
|
||||
continue
|
||||
var/atom/movable/thing = i
|
||||
thing.Crossed(src)
|
||||
//
|
||||
////////////////////////////////////////
|
||||
|
||||
/atom/movable/Move(atom/newloc, direct)
|
||||
var/atom/movable/pullee = pulling
|
||||
var/turf/T = loc
|
||||
if(pulling)
|
||||
if(pullee && get_dist(src, pullee) > 1)
|
||||
stop_pulling()
|
||||
|
||||
if(pullee && pullee.loc != loc && !isturf(pullee.loc) ) //to be removed once all code that changes an object's loc uses forceMove().
|
||||
log_game("DEBUG:[src]'s pull on [pullee] wasn't broken despite [pullee] being in [pullee.loc]. Pull stopped manually.")
|
||||
stop_pulling()
|
||||
if(!loc || !newloc)
|
||||
return FALSE
|
||||
var/atom/oldloc = loc
|
||||
|
||||
if(loc != newloc)
|
||||
if (!(direct & (direct - 1))) //Cardinal move
|
||||
. = ..()
|
||||
else //Diagonal move, split it into cardinal moves
|
||||
moving_diagonally = FIRST_DIAG_STEP
|
||||
var/first_step_dir
|
||||
// The `&& moving_diagonally` checks are so that a forceMove taking
|
||||
// place due to a Crossed, Bumped, etc. call will interrupt
|
||||
// the second half of the diagonal movement, or the second attempt
|
||||
// at a first half if step() fails because we hit something.
|
||||
if (direct & NORTH)
|
||||
if (direct & EAST)
|
||||
if (step(src, NORTH) && moving_diagonally)
|
||||
first_step_dir = NORTH
|
||||
moving_diagonally = SECOND_DIAG_STEP
|
||||
. = step(src, EAST)
|
||||
else if (moving_diagonally && step(src, EAST))
|
||||
first_step_dir = EAST
|
||||
moving_diagonally = SECOND_DIAG_STEP
|
||||
. = step(src, NORTH)
|
||||
else if (direct & WEST)
|
||||
if (step(src, NORTH) && moving_diagonally)
|
||||
first_step_dir = NORTH
|
||||
moving_diagonally = SECOND_DIAG_STEP
|
||||
. = step(src, WEST)
|
||||
else if (moving_diagonally && step(src, WEST))
|
||||
first_step_dir = WEST
|
||||
moving_diagonally = SECOND_DIAG_STEP
|
||||
. = step(src, NORTH)
|
||||
else if (direct & SOUTH)
|
||||
if (direct & EAST)
|
||||
if (step(src, SOUTH) && moving_diagonally)
|
||||
first_step_dir = SOUTH
|
||||
moving_diagonally = SECOND_DIAG_STEP
|
||||
. = step(src, EAST)
|
||||
else if (moving_diagonally && step(src, EAST))
|
||||
first_step_dir = EAST
|
||||
moving_diagonally = SECOND_DIAG_STEP
|
||||
. = step(src, SOUTH)
|
||||
else if (direct & WEST)
|
||||
if (step(src, SOUTH) && moving_diagonally)
|
||||
first_step_dir = SOUTH
|
||||
moving_diagonally = SECOND_DIAG_STEP
|
||||
. = step(src, WEST)
|
||||
else if (moving_diagonally && step(src, WEST))
|
||||
first_step_dir = WEST
|
||||
moving_diagonally = SECOND_DIAG_STEP
|
||||
. = step(src, SOUTH)
|
||||
if(moving_diagonally == SECOND_DIAG_STEP)
|
||||
if(!.)
|
||||
setDir(first_step_dir)
|
||||
else if (!inertia_moving)
|
||||
inertia_next_move = world.time + inertia_move_delay
|
||||
newtonian_move(direct)
|
||||
moving_diagonally = 0
|
||||
return
|
||||
|
||||
if(!loc || (loc == oldloc && oldloc != newloc))
|
||||
last_move = NONE
|
||||
return
|
||||
|
||||
if(.)
|
||||
last_move = direct
|
||||
setDir(direct)
|
||||
|
||||
if(has_buckled_mobs() && !handle_buckled_mob_movement(loc,direct)) //movement failed due to buckled mob(s)
|
||||
return FALSE
|
||||
|
||||
if(pulling && pulling == pullee) //we were pulling a thing and didn't lose it during our move.
|
||||
if(pulling.anchored)
|
||||
stop_pulling()
|
||||
else
|
||||
var/pull_dir = get_dir(src, pulling)
|
||||
//puller and pullee more than one tile away or in diagonal position
|
||||
if(get_dist(src, pulling) > 1 || (moving_diagonally != SECOND_DIAG_STEP && ((pull_dir - 1) & pull_dir)))
|
||||
pulling.Move(T, get_dir(pulling, T)) //the pullee tries to reach our previous position
|
||||
if(pulling && get_dist(src, pulling) > 1) //the pullee couldn't keep up
|
||||
stop_pulling()
|
||||
if(pulledby && moving_diagonally != FIRST_DIAG_STEP && get_dist(src, pulledby) > 1)//separated from our puller and not in the middle of a diagonal move.
|
||||
pulledby.stop_pulling()
|
||||
|
||||
Moved(oldloc, direct)
|
||||
|
||||
/atom/movable/proc/handle_buckled_mob_movement(newloc,direct)
|
||||
for(var/m in buckled_mobs)
|
||||
var/mob/living/buckled_mob = m
|
||||
if(!buckled_mob.Move(newloc, direct))
|
||||
forceMove(buckled_mob.loc)
|
||||
last_move = buckled_mob.last_move
|
||||
inertia_dir = last_move
|
||||
buckled_mob.inertia_dir = last_move
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
//Called after a successful Move(). By this point, we've already moved
|
||||
/atom/movable/proc/Moved(atom/OldLoc, Dir, Forced = FALSE)
|
||||
SEND_SIGNAL(src, COMSIG_MOVABLE_MOVED, OldLoc, Dir, Forced)
|
||||
if (!inertia_moving)
|
||||
inertia_next_move = world.time + inertia_move_delay
|
||||
newtonian_move(Dir)
|
||||
if (length(client_mobs_in_contents))
|
||||
update_parallax_contents()
|
||||
|
||||
return TRUE
|
||||
|
||||
|
||||
// Make sure you know what you're doing if you call this, this is intended to only be called by byond directly.
|
||||
// You probably want CanPass()
|
||||
/atom/movable/Cross(atom/movable/AM)
|
||||
. = TRUE
|
||||
SEND_SIGNAL(src, COMSIG_MOVABLE_CROSS, AM)
|
||||
return CanPass(AM, AM.loc, TRUE)
|
||||
|
||||
//oldloc = old location on atom, inserted when forceMove is called and ONLY when forceMove is called!
|
||||
/atom/movable/Crossed(atom/movable/AM, oldloc)
|
||||
SEND_SIGNAL(src, COMSIG_MOVABLE_CROSSED, AM)
|
||||
|
||||
/atom/movable/Uncross(atom/movable/AM, atom/newloc)
|
||||
. = ..()
|
||||
if(SEND_SIGNAL(src, COMSIG_MOVABLE_UNCROSS, AM) & COMPONENT_MOVABLE_BLOCK_UNCROSS)
|
||||
return FALSE
|
||||
if(isturf(newloc) && !CheckExit(AM, newloc))
|
||||
return FALSE
|
||||
|
||||
/atom/movable/Uncrossed(atom/movable/AM)
|
||||
SEND_SIGNAL(src, COMSIG_MOVABLE_UNCROSSED, AM)
|
||||
|
||||
/atom/movable/Bump(atom/A)
|
||||
if(!A)
|
||||
CRASH("Bump was called with no argument.")
|
||||
SEND_SIGNAL(src, COMSIG_MOVABLE_BUMP, A)
|
||||
. = ..()
|
||||
if(!QDELETED(throwing))
|
||||
throwing.hit_atom(A)
|
||||
. = TRUE
|
||||
if(QDELETED(A))
|
||||
return
|
||||
A.Bumped(src)
|
||||
|
||||
/atom/movable/proc/onTransitZ(old_z,new_z)
|
||||
SEND_SIGNAL(src, COMSIG_MOVABLE_Z_CHANGED, old_z, new_z)
|
||||
for (var/item in src) // Notify contents of Z-transition. This can be overridden IF we know the items contents do not care.
|
||||
var/atom/movable/AM = item
|
||||
AM.onTransitZ(old_z,new_z)
|
||||
|
||||
/atom/movable/proc/setMovetype(newval)
|
||||
movement_type = newval
|
||||
|
||||
///////////// FORCED MOVEMENT /////////////
|
||||
|
||||
/atom/movable/proc/forceMove(atom/destination)
|
||||
. = FALSE
|
||||
if(destination)
|
||||
. = doMove(destination)
|
||||
else
|
||||
CRASH("No valid destination passed into forceMove")
|
||||
|
||||
/atom/movable/proc/moveToNullspace()
|
||||
return doMove(null)
|
||||
|
||||
/atom/movable/proc/doMove(atom/destination)
|
||||
. = FALSE
|
||||
if(destination)
|
||||
if(pulledby)
|
||||
pulledby.stop_pulling()
|
||||
var/atom/oldloc = loc
|
||||
var/same_loc = oldloc == destination
|
||||
var/area/old_area = get_area(oldloc)
|
||||
var/area/destarea = get_area(destination)
|
||||
|
||||
loc = destination
|
||||
moving_diagonally = 0
|
||||
|
||||
if(!same_loc)
|
||||
if(oldloc)
|
||||
oldloc.Exited(src, destination)
|
||||
if(old_area && old_area != destarea)
|
||||
old_area.Exited(src, destination)
|
||||
for(var/atom/movable/AM in oldloc)
|
||||
AM.Uncrossed(src)
|
||||
var/turf/oldturf = get_turf(oldloc)
|
||||
var/turf/destturf = get_turf(destination)
|
||||
var/old_z = (oldturf ? oldturf.z : null)
|
||||
var/dest_z = (destturf ? destturf.z : null)
|
||||
if (old_z != dest_z)
|
||||
onTransitZ(old_z, dest_z)
|
||||
destination.Entered(src, oldloc)
|
||||
if(destarea && old_area != destarea)
|
||||
destarea.Entered(src, oldloc)
|
||||
|
||||
for(var/atom/movable/AM in destination)
|
||||
if(AM == src)
|
||||
continue
|
||||
AM.Crossed(src, oldloc)
|
||||
|
||||
Moved(oldloc, NONE, TRUE)
|
||||
. = TRUE
|
||||
|
||||
//If no destination, move the atom into nullspace (don't do this unless you know what you're doing)
|
||||
else
|
||||
. = TRUE
|
||||
if (loc)
|
||||
var/atom/oldloc = loc
|
||||
var/area/old_area = get_area(oldloc)
|
||||
oldloc.Exited(src, null)
|
||||
if(old_area)
|
||||
old_area.Exited(src, null)
|
||||
loc = null
|
||||
|
||||
//Called whenever an object moves and by mobs when they attempt to move themselves through space
|
||||
//And when an object or action applies a force on src, see newtonian_move() below
|
||||
//Return 0 to have src start/keep drifting in a no-grav area and 1 to stop/not start drifting
|
||||
//Mobs should return 1 if they should be able to move of their own volition, see client/Move() in mob_movement.dm
|
||||
//movement_dir == 0 when stopping or any dir when trying to move
|
||||
/atom/movable/proc/Process_Spacemove(movement_dir = 0)
|
||||
if(has_gravity(src))
|
||||
return 1
|
||||
|
||||
if(pulledby)
|
||||
return 1
|
||||
|
||||
if(throwing)
|
||||
return 1
|
||||
|
||||
if(!isturf(loc))
|
||||
return 1
|
||||
|
||||
if(locate(/obj/structure/lattice) in range(1, get_turf(src))) //Not realistic but makes pushing things in space easier
|
||||
return 1
|
||||
|
||||
return 0
|
||||
|
||||
/atom/movable/proc/newtonian_move(direction) //Only moves the object if it's under no gravity
|
||||
if(!loc || Process_Spacemove(0))
|
||||
inertia_dir = 0
|
||||
return 0
|
||||
|
||||
inertia_dir = direction
|
||||
if(!direction)
|
||||
return 1
|
||||
inertia_last_loc = loc
|
||||
SSspacedrift.processing[src] = src
|
||||
return 1
|
||||
@@ -746,7 +746,7 @@
|
||||
Mind.add_antag_datum(ninjadatum)
|
||||
|
||||
if(Ninja.mind != Mind) //something has gone wrong!
|
||||
throw EXCEPTION("Ninja created with incorrect mind")
|
||||
stack_trace("Ninja created with incorrect mind")
|
||||
|
||||
message_admins("[ADMIN_LOOKUPFLW(Ninja)] has been made into a ninja by dynamic.")
|
||||
log_game("[key_name(Ninja)] was spawned as a ninja by dynamic.")
|
||||
|
||||
@@ -54,6 +54,6 @@
|
||||
return
|
||||
var/mob/living/carbon/human/H = gangster_mind.current // we are sure the dude's human cause it's checked in attack()
|
||||
H.silent = max(H.silent, 5)
|
||||
H.Knockdown(100)
|
||||
H.DefaultCombatKnockdown(100)
|
||||
gangster_mind.add_antag_datum(/datum/antagonist/gang, gang)
|
||||
return TRUE
|
||||
@@ -86,8 +86,10 @@ GLOBAL_LIST_EMPTY(objectives)
|
||||
if(M)
|
||||
. += M
|
||||
|
||||
/datum/objective/proc/find_target()
|
||||
/datum/objective/proc/find_target(dupe_search_range, blacklist)
|
||||
var/list/datum/mind/owners = get_owners()
|
||||
if(!dupe_search_range)
|
||||
dupe_search_range = get_owners()
|
||||
var/list/possible_targets = list()
|
||||
var/try_target_late_joiners = FALSE
|
||||
for(var/I in owners)
|
||||
@@ -96,7 +98,8 @@ GLOBAL_LIST_EMPTY(objectives)
|
||||
try_target_late_joiners = TRUE
|
||||
for(var/datum/mind/possible_target in get_crewmember_minds())
|
||||
if(!(possible_target in owners) && ishuman(possible_target.current) && (possible_target.current.stat != DEAD) && is_unique_objective(possible_target))
|
||||
possible_targets += possible_target
|
||||
if(!(possible_target in blacklist))
|
||||
possible_targets += possible_target
|
||||
if(try_target_late_joiners)
|
||||
var/list/all_possible_targets = possible_targets.Copy()
|
||||
for(var/I in all_possible_targets)
|
||||
@@ -1075,7 +1078,7 @@ GLOBAL_LIST_EMPTY(cult_contraband)
|
||||
var/mob/living/carbon/human/H = owner
|
||||
H.equip_in_one_of_slots(I, list("backpack" = SLOT_IN_BACKPACK))
|
||||
hoarded_item = I
|
||||
|
||||
|
||||
|
||||
|
||||
GLOBAL_LIST_EMPTY(possible_sabotages)
|
||||
@@ -1092,7 +1095,7 @@ GLOBAL_LIST_EMPTY(possible_sabotages)
|
||||
if(!GLOB.possible_sabotages.len)//Only need to fill the list when it's needed.
|
||||
for(var/I in subtypesof(/datum/sabotage_objective))
|
||||
new I
|
||||
|
||||
|
||||
/datum/objective/sabotage/find_target()
|
||||
var/list/datum/mind/owners = get_owners()
|
||||
var/approved_targets = list()
|
||||
@@ -1155,3 +1158,21 @@ GLOBAL_LIST_EMPTY(possible_sabotages)
|
||||
|
||||
/datum/objective/flavor/wizard
|
||||
flavor_file = "strings/flavor_objectives/wizard.txt"
|
||||
|
||||
/datum/objective/contract
|
||||
var/payout = 0
|
||||
var/payout_bonus = 0
|
||||
var/area/dropoff = null
|
||||
|
||||
/datum/objective/contract/proc/generate_dropoff() // Generate a random valid area on the station that the dropoff will happen.
|
||||
var/found = FALSE
|
||||
while(!found)
|
||||
var/area/dropoff_area = pick(GLOB.sortedAreas)
|
||||
if(dropoff_area && is_station_level(dropoff_area.z) && !dropoff_area.outdoors)
|
||||
dropoff = dropoff_area
|
||||
found = TRUE
|
||||
|
||||
/datum/objective/contract/proc/dropoff_check(mob/user, mob/target) // Check if both the contractor and contract target are at the dropoff point.
|
||||
var/area/user_area = get_area(user)
|
||||
var/area/target_area = get_area(target)
|
||||
return (istype(user_area, dropoff) && istype(target_area, dropoff))
|
||||
|
||||
@@ -23,18 +23,18 @@
|
||||
START_PROCESSING(SSprocessing, src)
|
||||
|
||||
/datum/sabotage_objective/processing/proc/check_condition_processing()
|
||||
return 100
|
||||
return 1
|
||||
|
||||
/datum/sabotage_objective/processing/process()
|
||||
check_condition_processing()
|
||||
if(won >= 100)
|
||||
if(won >= 1)
|
||||
STOP_PROCESSING(SSprocessing,src)
|
||||
|
||||
/datum/sabotage_objective/processing/check_conditions()
|
||||
return won
|
||||
|
||||
/datum/sabotage_objective/processing/power_sink
|
||||
name = "Drain at least 1 gigajoule of power using a power sink."
|
||||
name = "Drain at least 100 megajoules of power using a power sink."
|
||||
sabotage_type = "powersink"
|
||||
special_equipment = list(/obj/item/sbeacondrop/powersink)
|
||||
var/sink_found = FALSE
|
||||
@@ -47,7 +47,7 @@
|
||||
for(var/datum/powernet/PN in GLOB.powernets)
|
||||
for(var/obj/item/powersink/sink in PN.nodes)
|
||||
sink_found_this_time = TRUE
|
||||
won = max(won,sink.power_drained/1e9)
|
||||
won = max(won,sink.power_drained/1e8)
|
||||
sink_found = sink_found_this_time
|
||||
count = 0
|
||||
return FALSE
|
||||
|
||||
@@ -185,7 +185,7 @@ Class Procs:
|
||||
A.forceMove(T)
|
||||
if(isliving(A))
|
||||
var/mob/living/L = A
|
||||
L.update_canmove()
|
||||
L.update_mobility()
|
||||
if(occupant)
|
||||
SEND_SIGNAL(src, COMSIG_MACHINE_EJECT_OCCUPANT, occupant)
|
||||
occupant = null
|
||||
|
||||
@@ -140,7 +140,7 @@
|
||||
/obj/machinery/autolathe/proc/AfterMaterialInsert(obj/item/item_inserted, id_inserted, amount_inserted)
|
||||
if(istype(item_inserted, /obj/item/stack/ore/bluespace_crystal))
|
||||
use_power(MINERAL_MATERIAL_AMOUNT / 10)
|
||||
else if(item_inserted.custom_materials?.len && item_inserted.custom_materials[getmaterialref(/datum/material/glass)])
|
||||
else if(item_inserted.custom_materials?.len && item_inserted.custom_materials[SSmaterials.GetMaterialRef(/datum/material/glass)])
|
||||
flick("autolathe_r",src)//plays glass insertion animation by default otherwise
|
||||
else
|
||||
flick("autolathe_o",src)//plays metal insertion animation
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
if(!charging)
|
||||
return
|
||||
|
||||
. += image(charging.icon, charging.icon_state)
|
||||
. += mutable_appearance(charging.icon, charging.icon_state)
|
||||
. += "ccharger-on"
|
||||
if(!(stat & (BROKEN|NOPOWER)))
|
||||
var/newlevel = round(charging.percent() * 4 / 100)
|
||||
|
||||
@@ -491,29 +491,29 @@
|
||||
/obj/machinery/clonepod/update_overlays()
|
||||
. = ..()
|
||||
if(mess)
|
||||
var/image/gib1 = image(CRYOMOBS, "gibup")
|
||||
var/image/gib2 = image(CRYOMOBS, "gibdown")
|
||||
var/mutable_appearance/gib1 = mutable_appearance(CRYOMOBS, "gibup")
|
||||
var/mutable_appearance/gib2 = mutable_appearance(CRYOMOBS, "gibdown")
|
||||
gib1.pixel_y = 27 + round(sin(world.time) * 3)
|
||||
gib1.pixel_x = round(sin(world.time * 3))
|
||||
gib2.pixel_y = 27 + round(cos(world.time) * 3)
|
||||
gib2.pixel_x = round(cos(world.time * 3))
|
||||
. += gib2
|
||||
. += gib1
|
||||
. += "cover-on"
|
||||
else if(occupant)
|
||||
var/image/occupant_overlay
|
||||
var/mutable_appearance/occupant_overlay
|
||||
var/completion = (flesh_number - unattached_flesh.len) / flesh_number
|
||||
|
||||
if(unattached_flesh.len <= 0)
|
||||
occupant_overlay = image(occupant.icon, occupant.icon_state)
|
||||
occupant_overlay = mutable_appearance(occupant.icon, occupant.icon_state)
|
||||
occupant_overlay.copy_overlays(occupant)
|
||||
. += "cover-on"
|
||||
else
|
||||
occupant_overlay = image(CRYOMOBS, "clone_meat")
|
||||
occupant_overlay = mutable_appearance(CRYOMOBS, "clone_meat")
|
||||
var/matrix/tform = matrix()
|
||||
tform.Scale(completion)
|
||||
tform.Turn(cos(world.time * 2) * 3)
|
||||
occupant_overlay.transform = tform
|
||||
occupant_overlay.appearance_flags = 0
|
||||
occupant_overlay.appearance_flags = NONE
|
||||
|
||||
occupant_overlay.dir = SOUTH
|
||||
occupant_overlay.pixel_y = 27 + round(sin(world.time) * 3)
|
||||
|
||||
@@ -217,7 +217,7 @@
|
||||
M.vomit(10, distance = 5)
|
||||
if(ORION_TRAIL_FLUX)
|
||||
if(prob(75))
|
||||
M.Knockdown(60)
|
||||
M.DefaultCombatKnockdown(60)
|
||||
say("A sudden gust of powerful wind slams [M] into the floor!")
|
||||
M.take_bodypart_damage(25)
|
||||
playsound(loc, 'sound/weapons/genhit.ogg', 100, 1)
|
||||
|
||||
@@ -37,12 +37,11 @@
|
||||
dat += "[R.name] |"
|
||||
if(R.stat)
|
||||
dat += " Not Responding |"
|
||||
else if (!R.canmove)
|
||||
else if(R.locked_down)
|
||||
dat += " Locked Down |"
|
||||
else
|
||||
dat += " Operating Normally |"
|
||||
if (!R.canmove)
|
||||
else if(R.cell)
|
||||
if(R.cell)
|
||||
dat += " Battery Installed ([R.cell.charge]/[R.cell.maxcharge]) |"
|
||||
else
|
||||
dat += " No Cell Installed |"
|
||||
@@ -62,7 +61,7 @@
|
||||
dat += "<A href='?src=[REF(src)];magbot=[REF(R)]'>(<font color=blue><i>Hack</i></font>)</A> "
|
||||
else if(IsAdminGhost(user) && !R.emagged)
|
||||
dat += "<A href='?src=[REF(src)];magbot=[REF(R)]'>(<font color=blue><i>Hack</i></font>)</A> "
|
||||
dat += "<A href='?src=[REF(src)];stopbot=[REF(R)]'>(<font color=green><i>[R.canmove ? "Lockdown" : "Release"]</i></font>)</A> "
|
||||
dat += "<A href='?src=[REF(src)];stopbot=[REF(R)]'>(<font color=green><i>[R.locked_down? "Lockdown" : "Release"]</i></font>)</A> "
|
||||
dat += "<A href='?src=[REF(src)];killbot=[REF(R)]'>(<font color=red><i>Destroy</i></font>)</A>"
|
||||
dat += "<BR>"
|
||||
|
||||
@@ -116,14 +115,14 @@
|
||||
if(src.allowed(usr))
|
||||
var/mob/living/silicon/robot/R = locate(href_list["stopbot"]) in GLOB.silicon_mobs
|
||||
if(can_control(usr, R))
|
||||
var/choice = input("Are you certain you wish to [R.canmove ? "lock down" : "release"] [R.name]?") in list("Confirm", "Abort")
|
||||
var/choice = input("Are you certain you wish to [R.locked_down? "lock down" : "release"] [R.name]?") in list("Confirm", "Abort")
|
||||
if(choice == "Confirm" && can_control(usr, R) && !..())
|
||||
message_admins("<span class='notice'>[ADMIN_LOOKUPFLW(usr)] [R.canmove ? "locked down" : "released"] [key_name(R, R.client)][ADMIN_LOOKUPFLW(R)]!</span>")
|
||||
log_game("[key_name(usr)] [R.canmove ? "locked down" : "released"] [key_name(R)]!")
|
||||
R.SetLockdown(!R.lockcharge)
|
||||
to_chat(R, "[!R.lockcharge ? "<span class='notice'>Your lockdown has been lifted!" : "<span class='alert'>You have been locked down!"]</span>")
|
||||
message_admins("<span class='notice'>[ADMIN_LOOKUPFLW(usr)] [R.locked_down? "locked down" : "released"] [key_name(R, R.client)][ADMIN_LOOKUPFLW(R)]!</span>")
|
||||
log_game("[key_name(usr)] [R.locked_down? "locked down" : "released"] [key_name(R)]!")
|
||||
R.SetLockdown(!R.locked_down)
|
||||
to_chat(R, "[!R.locked_down ? "<span class='notice'>Your lockdown has been lifted!" : "<span class='alert'>You have been locked down!"]</span>")
|
||||
if(R.connected_ai)
|
||||
to_chat(R.connected_ai, "[!R.lockcharge ? "<span class='notice'>NOTICE - Cyborg lockdown lifted" : "<span class='alert'>ALERT - Cyborg lockdown detected"]: <a href='?src=[REF(R.connected_ai)];track=[html_encode(R.name)]'>[R.name]</a></span><br>")
|
||||
to_chat(R.connected_ai, "[!R.locked_down ? "<span class='notice'>NOTICE - Cyborg lockdown lifted" : "<span class='alert'>ALERT - Cyborg lockdown detected"]: <a href='?src=[REF(R.connected_ai)];track=[html_encode(R.name)]'>[R.name]</a></span><br>")
|
||||
|
||||
else
|
||||
to_chat(usr, "<span class='danger'>Access Denied.</span>")
|
||||
|
||||
@@ -287,6 +287,7 @@
|
||||
#define CRYO_PRESERVE 1
|
||||
#define CRYO_OBJECTIVE 2
|
||||
#define CRYO_IGNORE 3
|
||||
#define CRYO_DESTROY_LATER 4
|
||||
|
||||
/obj/machinery/cryopod/proc/should_preserve_item(obj/item/I)
|
||||
for(var/datum/objective_item/steal/T in control_computer.theft_cache)
|
||||
@@ -308,8 +309,8 @@
|
||||
if(iscyborg(mob_occupant))
|
||||
var/mob/living/silicon/robot/R = mob_occupant
|
||||
if(R.mmi?.brain)
|
||||
cryo_items[R.mmi] = CRYO_IGNORE
|
||||
cryo_items[R.mmi.brain] = CRYO_IGNORE
|
||||
cryo_items[R.mmi] = CRYO_DESTROY_LATER
|
||||
cryo_items[R.mmi.brain] = CRYO_DESTROY_LATER
|
||||
for(var/obj/item/I in R.module) // the tools the borg has; metal, glass, guns etc
|
||||
for(var/obj/item/O in I) // the things inside the tools, if anything; mainly for janiborg trash bags
|
||||
cryo_items[O] = should_preserve_item(O)
|
||||
@@ -318,7 +319,7 @@
|
||||
|
||||
//Drop all items into the pod.
|
||||
for(var/obj/item/I in mob_occupant)
|
||||
if(cryo_items[I] == CRYO_IGNORE)
|
||||
if(cryo_items[I] == CRYO_IGNORE || cryo_items[I] ==CRYO_DESTROY_LATER)
|
||||
continue
|
||||
cryo_items[I] = should_preserve_item(I)
|
||||
mob_occupant.transferItemToLoc(I, src, TRUE)
|
||||
@@ -334,17 +335,19 @@
|
||||
if(QDELETED(I)) //edge cases and DROPDEL.
|
||||
continue
|
||||
var/preserve = cryo_items[I]
|
||||
if(preserve == CRYO_IGNORE)
|
||||
if(preserve == CRYO_DESTROY_LATER)
|
||||
continue
|
||||
else if(preserve == CRYO_DESTROY)
|
||||
qdel(I)
|
||||
else if(control_computer?.allow_items)
|
||||
control_computer.frozen_items += I
|
||||
if(preserve == CRYO_OBJECTIVE)
|
||||
control_computer.objective_items += I
|
||||
I.moveToNullspace()
|
||||
else
|
||||
I.forceMove(loc)
|
||||
if(preserve != CRYO_IGNORE)
|
||||
if(preserve == CRYO_DESTROY)
|
||||
qdel(I)
|
||||
else if(control_computer?.allow_items)
|
||||
control_computer.frozen_items += I
|
||||
if(preserve == CRYO_OBJECTIVE)
|
||||
control_computer.objective_items += I
|
||||
I.moveToNullspace()
|
||||
else
|
||||
I.forceMove(loc)
|
||||
cryo_items -= I
|
||||
|
||||
//Update any existing objectives involving this mob.
|
||||
for(var/datum/objective/O in GLOB.objectives)
|
||||
@@ -405,6 +408,10 @@
|
||||
mob_occupant.ghostize(FALSE, penalize = TRUE)
|
||||
|
||||
QDEL_NULL(occupant)
|
||||
for(var/I in cryo_items) //only "CRYO_DESTROY_LATER" atoms are left)
|
||||
var/atom/A = I
|
||||
if(!QDELETED(A))
|
||||
qdel(A)
|
||||
open_machine()
|
||||
name = initial(name)
|
||||
|
||||
@@ -412,6 +419,7 @@
|
||||
#undef CRYO_PRESERVE
|
||||
#undef CRYO_OBJECTIVE
|
||||
#undef CRYO_IGNORE
|
||||
#undef CRYO_DESTROY_LATER
|
||||
|
||||
/obj/machinery/cryopod/MouseDrop_T(mob/living/target, mob/user)
|
||||
if(!istype(target) || user.incapacitated() || !target.Adjacent(user) || !Adjacent(user) || !ismob(target) || (!ishuman(user) && !iscyborg(user)) || !istype(user.loc, /turf) || target.buckled)
|
||||
|
||||
@@ -433,5 +433,5 @@
|
||||
. = ..()
|
||||
if(active)
|
||||
for(var/mob/living/M in rangers)
|
||||
if(prob(5+(allowed(M)*4)) && M.canmove)
|
||||
if(prob(5+(allowed(M)*4)) && CHECK_MOBILITY(M, MOBILITY_MOVE))
|
||||
dance(M)
|
||||
|
||||
@@ -428,7 +428,7 @@
|
||||
else
|
||||
return FALSE
|
||||
|
||||
/obj/machinery/door/airlock/update_icon_state(state=0, override=0)
|
||||
/obj/machinery/door/airlock/update_icon(state=0, override=0)
|
||||
if(operating && !override)
|
||||
return
|
||||
switch(state)
|
||||
@@ -769,7 +769,7 @@
|
||||
if(!istype(H.head, /obj/item/clothing/head/helmet))
|
||||
H.visible_message("<span class='danger'>[user] headbutts the airlock.</span>", \
|
||||
"<span class='userdanger'>You headbutt the airlock!</span>")
|
||||
H.Knockdown(100)
|
||||
H.DefaultCombatKnockdown(100)
|
||||
H.apply_damage(10, BRUTE, BODY_ZONE_HEAD)
|
||||
else
|
||||
visible_message("<span class='danger'>[user] headbutts the airlock. Good thing [user.p_theyre()] wearing a helmet.</span>")
|
||||
@@ -1033,7 +1033,7 @@
|
||||
if(!I.use_tool(src, user, 150, volume=50))
|
||||
to_chat(user, "<span class='warning'>You slip and [charge] detonates!</span>")
|
||||
charge.ex_act(EXPLODE_DEVASTATE)
|
||||
user.Knockdown(60)
|
||||
user.DefaultCombatKnockdown(60)
|
||||
return
|
||||
user.visible_message("<span class='notice'>[user] removes [charge] from [src].</span>", \
|
||||
"<span class='notice'>You gently pry out [charge] from [src] and unhook its wires.</span>")
|
||||
|
||||
@@ -508,7 +508,7 @@
|
||||
throwtarget = get_edge_target_turf(src, get_dir(src, get_step_away(L, src)))
|
||||
SEND_SOUND(L, sound(pick('sound/hallucinations/turn_around1.ogg','sound/hallucinations/turn_around2.ogg'),0,1,50))
|
||||
flash_color(L, flash_color="#960000", flash_time=20)
|
||||
L.Knockdown(40)
|
||||
L.DefaultCombatKnockdown(40)
|
||||
L.throw_at(throwtarget, 5, 1)
|
||||
return 0
|
||||
|
||||
|
||||
@@ -319,10 +319,10 @@
|
||||
else if(ishuman(L)) //For humans
|
||||
L.adjustBruteLoss(DOOR_CRUSH_DAMAGE)
|
||||
L.emote("scream")
|
||||
L.Knockdown(100)
|
||||
L.DefaultCombatKnockdown(100)
|
||||
else if(ismonkey(L)) //For monkeys
|
||||
L.adjustBruteLoss(DOOR_CRUSH_DAMAGE)
|
||||
L.Knockdown(100)
|
||||
L.DefaultCombatKnockdown(100)
|
||||
else //for simple_animals & borgs
|
||||
L.adjustBruteLoss(DOOR_CRUSH_DAMAGE)
|
||||
var/turf/location = get_turf(src)
|
||||
|
||||
@@ -115,7 +115,7 @@
|
||||
continue
|
||||
|
||||
if(L.flash_act(affect_silicon = 1))
|
||||
L.Knockdown(strength)
|
||||
L.DefaultCombatKnockdown(strength)
|
||||
flashed = TRUE
|
||||
|
||||
if(flashed)
|
||||
|
||||
@@ -90,7 +90,8 @@ Buildable meters
|
||||
set name = "Flip Pipe"
|
||||
set src in view(1)
|
||||
|
||||
if ( usr.stat || usr.restrained() || !usr.canmove )
|
||||
var/mob/living/L = usr
|
||||
if(!istype(L) || !CHECK_MOBILITY(L, MOBILITY_USE))
|
||||
return
|
||||
|
||||
do_a_flip()
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user