Merge branch 'master' of https://github.com/Citadel-Station-13/Citadel-Station-13 into Ghommie-cit604
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
|
||||
"}
|
||||
@@ -1545,21 +1545,6 @@
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/engineering)
|
||||
"RK" = (
|
||||
/obj/machinery/portable_atmospherics/canister/toxins,
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/obj/structure/cable/yellow{
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/engineering)
|
||||
"RQ" = (
|
||||
/obj/machinery/atmospherics/components/binary/pump{
|
||||
dir = 1
|
||||
@@ -2237,7 +2222,7 @@ yf
|
||||
"}
|
||||
(12,1,1) = {"
|
||||
cS
|
||||
RK
|
||||
QS
|
||||
uy
|
||||
PK
|
||||
iZ
|
||||
|
||||
+34686
-34635
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
+877
-1392
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
|
||||
|
||||
@@ -57,3 +72,8 @@
|
||||
#define CAT_STRUCTURE "Structures"
|
||||
|
||||
#define MARTIALART_HUNTER "hunter-fu"
|
||||
|
||||
//Blob
|
||||
/// blob gets a free reroll every X time
|
||||
#define BLOB_REROLL_TIME 2400
|
||||
#define BLOB_REFLECTOR_COST 15
|
||||
@@ -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))
|
||||
#define COMSIG_CARBON_IDENTITY_TRANSFERRED_TO "carbon_id_transferred_to" //from datum/dna/transfer_identity(): (datum/dna, transfer_SE)
|
||||
@@ -234,6 +248,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)
|
||||
@@ -407,6 +407,7 @@ GLOBAL_LIST_INIT(pda_reskins, list(PDA_SKIN_CLASSIC = 'icons/obj/pda.dmi', PDA_S
|
||||
#define DUMMY_HUMAN_SLOT_ADMIN "admintools"
|
||||
#define DUMMY_HUMAN_SLOT_MANIFEST "dummy_manifest_generation"
|
||||
#define DUMMY_HUMAN_SLOT_HALLUCINATION "dummy_hallucination"
|
||||
#define DUMMY_HUMAN_SLOT_EXAMINER "dummy_examiner"
|
||||
|
||||
#define PR_ANNOUNCEMENTS_PER_ROUND 5 //The number of unique PR announcements allowed per round
|
||||
//This makes sure that a single person can only spam 3 reopens and 3 closes before being ignored
|
||||
|
||||
@@ -58,8 +58,10 @@
|
||||
#define BODYPART_DISABLED_DAMAGE 1
|
||||
#define BODYPART_DISABLED_PARALYSIS 2
|
||||
|
||||
#define DEFAULT_BODYPART_ICON 'icons/mob/human_parts.dmi'
|
||||
#define DEFAULT_BODYPART_ICON_ORGANIC 'icons/mob/human_parts_greyscale.dmi'
|
||||
#define DEFAULT_BODYPART_ICON_ROBOTIC 'icons/mob/augmentation/augments.dmi'
|
||||
#define DEFAULT_BODYPART_ICON_CITADEL 'modular_citadel/icons/mob/mutant_bodyparts.dmi'
|
||||
|
||||
#define MONKEY_BODYPART "monkey"
|
||||
#define ALIEN_BODYPART "alien"
|
||||
|
||||
@@ -17,6 +17,9 @@
|
||||
//ids
|
||||
|
||||
#define MOVESPEED_ID_MOB_WALK_RUN_CONFIG_SPEED "MOB_WALK_RUN"
|
||||
#define MOVESPEED_ID_MOB_GRAB_STATE "MOB_GRAB_STATE"
|
||||
#define MOVESPEED_ID_MOB_EQUIPMENT "MOB_EQUIPMENT"
|
||||
#define MOVESPEED_ID_MOB_GRAVITY "MOB_GRAVITY"
|
||||
#define MOVESPEED_ID_CONFIG_SPEEDMOD "MOB_CONFIG_MODIFIER"
|
||||
|
||||
#define MOVESPEED_ID_SLIME_REAGENTMOD "SLIME_REAGENT_MODIFIER"
|
||||
@@ -28,6 +31,7 @@
|
||||
#define MOVESPEED_ID_TARANTULA_WEB "TARANTULA_WEB"
|
||||
|
||||
#define MOVESPEED_ID_LIVING_TURF_SPEEDMOD "LIVING_TURF_SPEEDMOD"
|
||||
#define MOVESPEED_ID_LIVING_LIMBLESS "LIVING_LIMBLESS"
|
||||
|
||||
#define MOVESPEED_ID_CARBON_SOFTCRIT "CARBON_SOFTCRIT"
|
||||
#define MOVESPEED_ID_CARBON_OLDSPEED "CARBON_DEPRECATED_SPEED"
|
||||
@@ -59,15 +63,19 @@
|
||||
#define MOVESPEED_ID_HUMAN_CARRYING "HUMAN_CARRY"
|
||||
#define MOVESPEED_ID_SHRINK_RAY "SHRUNKEN_SPEED_MODIFIER"
|
||||
|
||||
#define MOVESPEED_ID_TASED_STATUS "TASED"
|
||||
|
||||
#define MOVESPEED_ID_SLAUGHTER "SLAUGHTER"
|
||||
|
||||
#define MOVESPEED_ID_CYBER_THRUSTER "CYBER_IMPLANT_THRUSTER"
|
||||
#define MOVESPEED_ID_JETPACK "JETPACK"
|
||||
|
||||
#define MOVESPEED_ID_SHOVE "SHOVE"
|
||||
|
||||
#define MOVESPEED_ID_MKULTRA "MKULTRA"
|
||||
|
||||
#define MOVESPEED_ID_ELECTROSTAFF "ELECTROSTAFF"
|
||||
#define MOVESPEED_ID_TASED_STATUS "TASED"
|
||||
#define MOVESPEED_ID_ELECTROSTAFF "ELECTROSTAFF"
|
||||
|
||||
#define MOVESPEED_ID_SHOVE "SHOVE"
|
||||
#define MOVESPEED_ID_FAT "FAT"
|
||||
#define MOVESPEED_ID_COLD "COLD"
|
||||
#define MOVESPEED_ID_HUNGRY "HUNGRY"
|
||||
#define MOVESPEED_ID_DAMAGE_SLOWDOWN "DAMAGE"
|
||||
#define MOVESPEED_ID_DAMAGE_SLOWDOWN_FLYING "FLYING"
|
||||
@@ -23,6 +23,10 @@ Ask ninjanomnom if they're around
|
||||
|
||||
#define RAD_MOB_MUTATE 1250 // How much stored radiation to check for mutation
|
||||
|
||||
#define RAD_MONKEY_GORILLIZE 1650 // How much stored radiation to check for Harambe time.
|
||||
#define RAD_MOB_GORILLIZE_FACTOR 100
|
||||
#define RAD_MONKEY_GORILLIZE_EXPONENT 0.5
|
||||
|
||||
#define RAD_MOB_VOMIT 2000 // The amount of radiation to check for vomitting
|
||||
#define RAD_MOB_VOMIT_PROB 1 // Chance per tick of vomitting
|
||||
|
||||
|
||||
@@ -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))
|
||||
+30
-14
@@ -47,7 +47,7 @@
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/underwear/socks, GLOB.socks_list)
|
||||
return pick(GLOB.socks_list)
|
||||
|
||||
/proc/random_features()
|
||||
/proc/random_features(intendedspecies)
|
||||
if(!GLOB.tails_list_human.len)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/human, GLOB.tails_list_human)
|
||||
if(!GLOB.tails_list_lizard.len)
|
||||
@@ -105,6 +105,8 @@
|
||||
var/datum/sprite_accessory/mam_tails/instance = GLOB.mam_tails_list[mtpath]
|
||||
if(istype(instance, /datum/sprite_accessory))
|
||||
var/datum/sprite_accessory/S = instance
|
||||
if(intendedspecies && S.recommended_species && !S.recommended_species.Find(intendedspecies))
|
||||
continue
|
||||
if(!S.ckeys_allowed)
|
||||
snowflake_mam_tails_list[S.name] = mtpath
|
||||
var/list/snowflake_markings_list = list()
|
||||
@@ -112,6 +114,8 @@
|
||||
var/datum/sprite_accessory/mam_body_markings/instance = GLOB.mam_body_markings_list[mmpath]
|
||||
if(istype(instance, /datum/sprite_accessory))
|
||||
var/datum/sprite_accessory/S = instance
|
||||
if(intendedspecies && S.recommended_species && !S.recommended_species.Find(intendedspecies))
|
||||
continue
|
||||
if(!S.ckeys_allowed)
|
||||
snowflake_markings_list[S.name] = mmpath
|
||||
var/list/snowflake_ears_list = list()
|
||||
@@ -119,6 +123,8 @@
|
||||
var/datum/sprite_accessory/mam_ears/instance = GLOB.mam_ears_list[mepath]
|
||||
if(istype(instance, /datum/sprite_accessory))
|
||||
var/datum/sprite_accessory/S = instance
|
||||
if(intendedspecies && S.recommended_species && !S.recommended_species.Find(intendedspecies))
|
||||
continue
|
||||
if(!S.ckeys_allowed)
|
||||
snowflake_ears_list[S.name] = mepath
|
||||
var/list/snowflake_mam_snouts_list = list()
|
||||
@@ -126,8 +132,19 @@
|
||||
var/datum/sprite_accessory/mam_snouts/instance = GLOB.mam_snouts_list[mspath]
|
||||
if(istype(instance, /datum/sprite_accessory))
|
||||
var/datum/sprite_accessory/S = instance
|
||||
if(intendedspecies && S.recommended_species && !S.recommended_species.Find(intendedspecies))
|
||||
continue
|
||||
if(!S.ckeys_allowed)
|
||||
snowflake_mam_snouts_list[S.name] = mspath
|
||||
var/list/snowflake_ipc_antenna_list = list()
|
||||
for(var/mspath in GLOB.ipc_antennas_list)
|
||||
var/datum/sprite_accessory/mam_snouts/instance = GLOB.ipc_antennas_list[mspath]
|
||||
if(istype(instance, /datum/sprite_accessory))
|
||||
var/datum/sprite_accessory/S = instance
|
||||
if(intendedspecies && S.recommended_species && !S.recommended_species.Find(intendedspecies))
|
||||
continue
|
||||
if(!S.ckeys_allowed)
|
||||
snowflake_ipc_antenna_list[S.name] = mspath
|
||||
var/color1 = random_short_color()
|
||||
var/color2 = random_short_color()
|
||||
var/color3 = random_short_color()
|
||||
@@ -153,10 +170,10 @@
|
||||
"insect_fluff" = "None",
|
||||
"insect_markings" = pick(GLOB.insect_markings_list),
|
||||
"taur" = "None",
|
||||
"mam_body_markings" = pick(snowflake_markings_list),
|
||||
"mam_ears" = pick(snowflake_ears_list),
|
||||
"mam_snouts" = pick(snowflake_mam_snouts_list),
|
||||
"mam_tail" = pick(snowflake_mam_tails_list),
|
||||
"mam_body_markings" = snowflake_markings_list.len ? pick(snowflake_markings_list) : "None",
|
||||
"mam_ears" = snowflake_ears_list ? pick(snowflake_ears_list) : "None",
|
||||
"mam_snouts" = snowflake_mam_snouts_list ? pick(snowflake_mam_snouts_list) : "None",
|
||||
"mam_tail" = snowflake_mam_tails_list ? pick(snowflake_mam_tails_list) : "None",
|
||||
"mam_tail_animated" = "None",
|
||||
"xenodorsal" = "Standard",
|
||||
"xenohead" = "Standard",
|
||||
@@ -165,7 +182,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"),
|
||||
@@ -204,7 +221,7 @@
|
||||
"womb_cum_rate" = CUM_RATE,
|
||||
"womb_cum_mult" = CUM_RATE_MULT,
|
||||
"womb_efficiency" = CUM_EFFICIENCY,
|
||||
"ipc_screen" = "Sunburst",
|
||||
"ipc_screen" = snowflake_ipc_antenna_list ? pick(snowflake_ipc_antenna_list) : "None",
|
||||
"ipc_antenna" = "None",
|
||||
"flavor_text" = "",
|
||||
"meat_type" = "Mammalian"
|
||||
@@ -356,7 +373,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 +401,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 +411,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
|
||||
@@ -1,111 +0,0 @@
|
||||
/*
|
||||
// Contains VOREStation based vore description type2type functions
|
||||
// list2text - takes delimiter and returns text
|
||||
// text2list - takes delimiter, and creates list
|
||||
//
|
||||
*/
|
||||
|
||||
// Concatenates a list of strings into a single string. A seperator may optionally be provided.
|
||||
/proc/list2text(list/ls, sep)
|
||||
if (ls.len <= 1) // Early-out code for empty or singleton lists.
|
||||
return ls.len ? ls[1] : ""
|
||||
|
||||
var/l = ls.len // Made local for sanic speed.
|
||||
var/i = 0 // Incremented every time a list index is accessed.
|
||||
|
||||
if (sep <> null)
|
||||
// Macros expand to long argument lists like so: sep, ls[++i], sep, ls[++i], sep, ls[++i], etc...
|
||||
#define S1 sep, ls[++i]
|
||||
#define S4 S1, S1, S1, S1
|
||||
#define S16 S4, S4, S4, S4
|
||||
#define S64 S16, S16, S16, S16
|
||||
|
||||
. = "[ls[++i]]" // Make sure the initial element is converted to text.
|
||||
|
||||
// Having the small concatenations come before the large ones boosted speed by an average of at least 5%.
|
||||
if (l-1 & 0x01) // 'i' will always be 1 here.
|
||||
. = text("[][][]", ., S1) // Append 1 element if the remaining elements are not a multiple of 2.
|
||||
if (l-i & 0x02)
|
||||
. = text("[][][][][]", ., S1, S1) // Append 2 elements if the remaining elements are not a multiple of 4.
|
||||
if (l-i & 0x04)
|
||||
. = text("[][][][][][][][][]", ., S4) // And so on....
|
||||
if (l-i & 0x08)
|
||||
. = text("[][][][][][][][][][][][][][][][][]", ., S4, S4)
|
||||
if (l-i & 0x10)
|
||||
. = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S16)
|
||||
if (l-i & 0x20)
|
||||
. = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
|
||||
[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S16, S16)
|
||||
if (l-i & 0x40)
|
||||
. = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
|
||||
[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
|
||||
[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
|
||||
[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S64)
|
||||
while (l > i) // Chomp through the rest of the list, 128 elements at a time.
|
||||
. = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
|
||||
[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
|
||||
[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
|
||||
[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
|
||||
[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
|
||||
[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
|
||||
[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
|
||||
[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S64, S64)
|
||||
|
||||
#undef S64
|
||||
#undef S16
|
||||
#undef S4
|
||||
#undef S1
|
||||
else
|
||||
// Macros expand to long argument lists like so: ls[++i], ls[++i], ls[++i], etc...
|
||||
#define S1 ls[++i]
|
||||
#define S4 S1, S1, S1, S1
|
||||
#define S16 S4, S4, S4, S4
|
||||
#define S64 S16, S16, S16, S16
|
||||
|
||||
. = "[ls[++i]]" // Make sure the initial element is converted to text.
|
||||
|
||||
if (l-1 & 0x01) // 'i' will always be 1 here.
|
||||
. += S1 // Append 1 element if the remaining elements are not a multiple of 2.
|
||||
if (l-i & 0x02)
|
||||
. = text("[][][]", ., S1, S1) // Append 2 elements if the remaining elements are not a multiple of 4.
|
||||
if (l-i & 0x04)
|
||||
. = text("[][][][][]", ., S4) // And so on...
|
||||
if (l-i & 0x08)
|
||||
. = text("[][][][][][][][][]", ., S4, S4)
|
||||
if (l-i & 0x10)
|
||||
. = text("[][][][][][][][][][][][][][][][][]", ., S16)
|
||||
if (l-i & 0x20)
|
||||
. = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S16, S16)
|
||||
if (l-i & 0x40)
|
||||
. = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
|
||||
[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S64)
|
||||
while (l > i) // Chomp through the rest of the list, 128 elements at a time.
|
||||
. = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
|
||||
[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
|
||||
[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
|
||||
[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S64, S64)
|
||||
|
||||
#undef S64
|
||||
#undef S16
|
||||
#undef S4
|
||||
#undef S1
|
||||
|
||||
// Converts a string into a list by splitting the string at each delimiter found. (discarding the seperator)
|
||||
/proc/text2list(text, delimiter="\n")
|
||||
var/delim_len = length(delimiter)
|
||||
if (delim_len < 1)
|
||||
return list(text)
|
||||
|
||||
. = list()
|
||||
var/last_found = 1
|
||||
var/found
|
||||
|
||||
do
|
||||
found = findtext(text, delimiter, last_found, 0)
|
||||
. += copytext(text, last_found, found)
|
||||
last_found = found + delim_len
|
||||
while (found)
|
||||
|
||||
// Returns true if val is from min to max, inclusive.
|
||||
/proc/IsInRange(val, min, max)
|
||||
return (val >= min) && (val <= max)
|
||||
@@ -1,39 +0,0 @@
|
||||
|
||||
|
||||
/datum/projectile_data
|
||||
var/src_x
|
||||
var/src_y
|
||||
var/time
|
||||
var/distance
|
||||
var/power_x
|
||||
var/power_y
|
||||
var/dest_x
|
||||
var/dest_y
|
||||
|
||||
/datum/projectile_data/New(var/src_x, var/src_y, var/time, var/distance, \
|
||||
var/power_x, var/power_y, var/dest_x, var/dest_y)
|
||||
src.src_x = src_x
|
||||
src.src_y = src_y
|
||||
src.time = time
|
||||
src.distance = distance
|
||||
src.power_x = power_x
|
||||
src.power_y = power_y
|
||||
src.dest_x = dest_x
|
||||
src.dest_y = dest_y
|
||||
|
||||
/proc/projectile_trajectory(src_x, src_y, rotation, angle, power)
|
||||
|
||||
// returns the destination (Vx,y) that a projectile shot at [src_x], [src_y], with an angle of [angle],
|
||||
// rotated at [rotation] and with the power of [power]
|
||||
// Thanks to VistaPOWA for this function
|
||||
|
||||
var/power_x = power * cos(angle)
|
||||
var/power_y = power * sin(angle)
|
||||
var/time = 2* power_y / 10 //10 = g
|
||||
|
||||
var/distance = time * power_x
|
||||
|
||||
var/dest_x = src_x + distance*sin(rotation);
|
||||
var/dest_y = src_y + distance*cos(rotation);
|
||||
|
||||
return new /datum/projectile_data(src_x, src_y, time, distance, power_x, power_y, dest_x, dest_y)
|
||||
@@ -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
|
||||
)
|
||||
))
|
||||
|
||||
@@ -29,7 +29,6 @@ GLOBAL_LIST_EMPTY(available_ai_shells)
|
||||
GLOBAL_LIST_INIT(simple_animals, list(list(),list(),list(),list())) // One for each AI_* status define
|
||||
GLOBAL_LIST_EMPTY(spidermobs) //all sentient spider mobs
|
||||
GLOBAL_LIST_EMPTY(bots_list)
|
||||
GLOBAL_LIST_EMPTY(living_cameras)
|
||||
GLOBAL_LIST_EMPTY(aiEyes)
|
||||
|
||||
GLOBAL_LIST_EMPTY(language_datum_instances)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
if(isovermind(usr))
|
||||
var/mob/camera/blob/B = usr
|
||||
if(!B.placed)
|
||||
B.place_blob_core(B.base_point_rate, 0)
|
||||
B.place_blob_core(0)
|
||||
B.transport_core()
|
||||
|
||||
/obj/screen/blob/Blobbernaut
|
||||
@@ -91,26 +91,26 @@
|
||||
var/mob/camera/blob/B = usr
|
||||
B.create_factory()
|
||||
|
||||
/obj/screen/blob/ReadaptChemical
|
||||
/obj/screen/blob/ReadaptStrain
|
||||
icon_state = "ui_chemswap"
|
||||
name = "Readapt Chemical (40)"
|
||||
desc = "Randomly rerolls your chemical for 40 resources."
|
||||
name = "Readapt Strain (40)"
|
||||
desc = "Allows you to choose a new strain from 4 random choices for 40 resources."
|
||||
|
||||
/obj/screen/blob/ReadaptChemical/MouseEntered(location,control,params)
|
||||
/obj/screen/blob/ReadaptStrain/MouseEntered(location,control,params)
|
||||
if(hud && hud.mymob && isovermind(hud.mymob))
|
||||
var/mob/camera/blob/B = hud.mymob
|
||||
if(B.free_chem_rerolls)
|
||||
name = "Readapt Chemical (FREE)"
|
||||
desc = "Randomly rerolls your chemical for free."
|
||||
if(B.free_strain_rerolls)
|
||||
name = "Readapt Strain (FREE)"
|
||||
desc = "Randomly rerolls your strain for free."
|
||||
else
|
||||
name = initial(name)
|
||||
desc = initial(desc)
|
||||
..()
|
||||
|
||||
/obj/screen/blob/ReadaptChemical/Click()
|
||||
/obj/screen/blob/ReadaptStrain/Click()
|
||||
if(isovermind(usr))
|
||||
var/mob/camera/blob/B = usr
|
||||
B.chemical_reroll()
|
||||
B.strain_reroll()
|
||||
|
||||
/obj/screen/blob/RelocateCore
|
||||
icon_state = "ui_swap"
|
||||
@@ -175,7 +175,7 @@
|
||||
using.hud = src
|
||||
static_inventory += using
|
||||
|
||||
using = new /obj/screen/blob/ReadaptChemical()
|
||||
using = new /obj/screen/blob/ReadaptStrain()
|
||||
using.screen_loc = ui_storage1
|
||||
using.hud = src
|
||||
static_inventory += using
|
||||
|
||||
@@ -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
|
||||
@@ -26,18 +26,16 @@ SUBSYSTEM_DEF(mobs)
|
||||
var/seconds = wait * 0.1
|
||||
if (!resumed)
|
||||
src.currentrun = GLOB.mob_living_list.Copy()
|
||||
if (GLOB.living_cameras.len)
|
||||
src.currentrun += GLOB.living_cameras
|
||||
|
||||
//cache for sanic speed (lists are references anyways)
|
||||
var/list/currentrun = src.currentrun
|
||||
var/times_fired = src.times_fired
|
||||
while(currentrun.len)
|
||||
var/mob/M = currentrun[currentrun.len]
|
||||
var/mob/living/L = currentrun[currentrun.len]
|
||||
currentrun.len--
|
||||
if(M)
|
||||
M.Life(seconds, times_fired)
|
||||
if(L)
|
||||
L.Life(seconds, times_fired)
|
||||
else
|
||||
GLOB.mob_living_list.Remove(M)
|
||||
GLOB.mob_living_list.Remove(L)
|
||||
if (MC_TICK_CHECK)
|
||||
return
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -499,10 +499,11 @@ SUBSYSTEM_DEF(vote)
|
||||
modes_to_add -= "traitor" // makes it so that traitor is always available
|
||||
choices.Add(modes_to_add)
|
||||
if("dynamic")
|
||||
var/list/probabilities = CONFIG_GET(keyed_list/storyteller_weight)
|
||||
for(var/T in config.storyteller_cache)
|
||||
var/datum/dynamic_storyteller/S = T
|
||||
var/list/probabilities = CONFIG_GET(keyed_list/storyteller_weight)
|
||||
if(probabilities[initial(S.config_tag)] > 0)
|
||||
var/probability = ((initial(S.config_tag) in probabilities) ? probabilities[initial(S.config_tag)] : initial(S.weight))
|
||||
if(probability > 0)
|
||||
choices.Add(initial(S.name))
|
||||
choice_descs.Add(initial(S.desc))
|
||||
if("custom")
|
||||
|
||||
+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
|
||||
|
||||
@@ -33,11 +33,17 @@
|
||||
/obj/item/organ/ears/cat = 1)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
////////
|
||||
//Huds//
|
||||
////////
|
||||
|
||||
/datum/crafting_recipe/hudsunsec
|
||||
name = "Security HUDsunglasses"
|
||||
result = /obj/item/clothing/glasses/hud/security/sunglasses
|
||||
time = 20
|
||||
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
parts = list(/obj/item/clothing/glasses/hud/security = 1,
|
||||
/obj/item/clothing/glasses/sunglasses = 1)
|
||||
reqs = list(/obj/item/clothing/glasses/hud/security = 1,
|
||||
/obj/item/clothing/glasses/sunglasses = 1,
|
||||
/obj/item/stack/cable_coil = 5)
|
||||
@@ -56,9 +62,11 @@
|
||||
result = /obj/item/clothing/glasses/hud/health/sunglasses
|
||||
time = 20
|
||||
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
parts = list(/obj/item/clothing/glasses/hud/health = 1,
|
||||
/obj/item/clothing/glasses/sunglasses = 1)
|
||||
reqs = list(/obj/item/clothing/glasses/hud/health = 1,
|
||||
/obj/item/clothing/glasses/sunglasses = 1,
|
||||
/obj/item/stack/cable_coil = 5)
|
||||
/obj/item/clothing/glasses/sunglasses = 1,
|
||||
/obj/item/stack/cable_coil = 5)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/hudsunmedremoval
|
||||
@@ -86,6 +94,27 @@
|
||||
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
reqs = list(/obj/item/clothing/glasses/sunglasses/reagent = 1)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/diagnostic_sunglasses
|
||||
name = "Diagnostic HUDsunglasses"
|
||||
result = /obj/item/clothing/glasses/hud/diagnostic/sunglasses
|
||||
time = 20
|
||||
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
parts = list(/obj/item/clothing/glasses/hud/diagnostic = 1,
|
||||
/obj/item/clothing/glasses/sunglasses = 1)
|
||||
reqs = list(/obj/item/clothing/glasses/hud/diagnostic = 1,
|
||||
/obj/item/clothing/glasses/sunglasses = 1,
|
||||
/obj/item/stack/cable_coil = 5)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/diagnostic_singlasses_removal
|
||||
name = "Diagnostic HUDsunglasses removal"
|
||||
result = /obj/item/clothing/glasses/sunglasses
|
||||
time = 20
|
||||
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
reqs = list(/obj/item/clothing/glasses/hud/diagnostic/sunglasses = 1)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/* //Kevinz doesn't want it as a recipe for now, leaving it in if anything ever changes to let it in
|
||||
/datum/crafting_recipe/stunglasses
|
||||
name = "Stunglasses"
|
||||
@@ -130,7 +159,6 @@
|
||||
reqs = list(/obj/item/stack/sheet/durathread = 7,
|
||||
/obj/item/stack/sheet/leather = 3)
|
||||
time = 70
|
||||
always_availible = TRUE
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/durathread_toolbelt
|
||||
@@ -139,7 +167,6 @@
|
||||
reqs = list(/obj/item/stack/sheet/durathread = 5,
|
||||
/obj/item/stack/sheet/leather = 2)
|
||||
time = 30
|
||||
always_availible = TRUE
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/durathread_bandolier
|
||||
@@ -148,7 +175,6 @@
|
||||
reqs = list(/obj/item/stack/sheet/durathread = 6,
|
||||
/obj/item/stack/sheet/leather = 2)
|
||||
time = 50
|
||||
always_availible = TRUE
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/durathread_helmet
|
||||
@@ -157,7 +183,6 @@
|
||||
reqs = list(/obj/item/stack/sheet/durathread = 4,
|
||||
/obj/item/stack/sheet/leather = 2)
|
||||
time = 30
|
||||
always_availible = TRUE
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/durathread_vest
|
||||
@@ -166,7 +191,6 @@
|
||||
reqs = list(/obj/item/stack/sheet/durathread = 6,
|
||||
/obj/item/stack/sheet/leather = 3)
|
||||
time = 50
|
||||
always_availible = TRUE
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/durathread_wintercoat
|
||||
@@ -183,5 +207,4 @@
|
||||
reqs = list(/obj/item/clothing/suit/hooded/wintercoat = 1,
|
||||
/obj/item/bedsheet/cosmos = 1)
|
||||
time = 60
|
||||
always_availible = TRUE
|
||||
category = CAT_CLOTHING
|
||||
|
||||
@@ -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)
|
||||
|
||||
+14
-16
@@ -26,10 +26,10 @@
|
||||
/datum/proc/vv_get_dropdown()
|
||||
. = list()
|
||||
. += "---"
|
||||
.["Call Proc"] = "?_src_=vars;[HrefToken()];proc_call=[REF(src)]"
|
||||
.["Mark Object"] = "?_src_=vars;[HrefToken()];mark_object=[REF(src)]"
|
||||
.["Delete"] = "?_src_=vars;[HrefToken()];delete=[REF(src)]"
|
||||
.["Show VV To Player"] = "?_src_=vars;[HrefToken(TRUE)];expose=[REF(src)]"
|
||||
.["Call Proc"] = "?_src_=vars;[HrefToken()];proc_call=\ref[src]"
|
||||
.["Mark Object"] = "?_src_=vars;[HrefToken()];mark_object=\ref[src]"
|
||||
.["Delete"] = "?_src_=vars;[HrefToken()];delete=\ref[src]"
|
||||
.["Show VV To Player"] = "?_src_=vars;[HrefToken(TRUE)];expose=\ref[src]"
|
||||
|
||||
|
||||
/datum/proc/on_reagent_change(changetype)
|
||||
@@ -54,7 +54,7 @@
|
||||
return
|
||||
|
||||
var/title = ""
|
||||
var/refid = REF(D)
|
||||
var/refid = "\ref[D]"
|
||||
var/icon/sprite
|
||||
var/hash
|
||||
|
||||
@@ -62,8 +62,6 @@
|
||||
if (!islist)
|
||||
type = D.type
|
||||
|
||||
|
||||
|
||||
if(istype(D, /atom))
|
||||
var/atom/AT = D
|
||||
if(AT.icon && AT.icon_state)
|
||||
@@ -410,7 +408,7 @@
|
||||
|
||||
|
||||
/client/proc/vv_update_display(datum/D, span, content)
|
||||
src << output("[span]:[content]", "variables[REF(D)].browser:replace_span")
|
||||
src << output("[span]:[content]", "variables\ref[D].browser:replace_span")
|
||||
|
||||
|
||||
#define VV_HTML_ENCODE(thing) ( sanitize ? html_encode(thing) : thing )
|
||||
@@ -423,9 +421,9 @@
|
||||
name = DA[name] //name is really the index until this line
|
||||
else
|
||||
value = DA[name]
|
||||
header = "<li style='backgroundColor:white'>(<a href='?_src_=vars;[HrefToken()];listedit=[REF(DA)];index=[index]'>E</a>) (<a href='?_src_=vars;[HrefToken()];listchange=[REF(DA)];index=[index]'>C</a>) (<a href='?_src_=vars;[HrefToken()];listremove=[REF(DA)];index=[index]'>-</a>) "
|
||||
header = "<li style='backgroundColor:white'>(<a href='?_src_=vars;[HrefToken()];listedit=\ref[DA];index=[index]'>E</a>) (<a href='?_src_=vars;[HrefToken()];listchange=\ref[DA];index=[index]'>C</a>) (<a href='?_src_=vars;[HrefToken()];listremove=\ref[DA];index=[index]'>-</a>) "
|
||||
else
|
||||
header = "<li style='backgroundColor:white'>(<a href='?_src_=vars;[HrefToken()];datumedit=[REF(DA)];varnameedit=[name]'>E</a>) (<a href='?_src_=vars;[HrefToken()];datumchange=[REF(DA)];varnamechange=[name]'>C</a>) (<a href='?_src_=vars;[HrefToken()];datummass=[REF(DA)];varnamemass=[name]'>M</a>) "
|
||||
header = "<li style='backgroundColor:white'>(<a href='?_src_=vars;[HrefToken()];datumedit=\ref[DA];varnameedit=[name]'>E</a>) (<a href='?_src_=vars;[HrefToken()];datumchange=\ref[DA];varnamechange=[name]'>C</a>) (<a href='?_src_=vars;[HrefToken()];datummass=\ref[DA];varnamemass=[name]'>M</a>) "
|
||||
else
|
||||
header = "<li>"
|
||||
|
||||
@@ -440,7 +438,7 @@
|
||||
#ifdef VARSICON
|
||||
var/icon/I = new/icon(value)
|
||||
var/rnd = rand(1,10000)
|
||||
var/rname = "tmp[REF(I)][rnd].png"
|
||||
var/rname = "tmp\ref[I][rnd].png"
|
||||
usr << browse_rsc(I, rname)
|
||||
item = "[VV_HTML_ENCODE(name)] = (<span class='value'>[value]</span>) <img class=icon src=\"[rname]\">"
|
||||
#else
|
||||
@@ -453,9 +451,9 @@
|
||||
else if (istype(value, /datum))
|
||||
var/datum/D = value
|
||||
if ("[D]" != "[D.type]") //if the thing as a name var, lets use it.
|
||||
item = "<a href='?_src_=vars;[HrefToken()];Vars=[REF(value)]'>[VV_HTML_ENCODE(name)] [REF(value)]</a> = [D] [D.type]"
|
||||
item = "<a href='?_src_=vars;[HrefToken()];Vars=\ref[value]'>[VV_HTML_ENCODE(name)] [REF(value)]</a> = [D] [D.type]"
|
||||
else
|
||||
item = "<a href='?_src_=vars;[HrefToken()];Vars=[REF(value)]'>[VV_HTML_ENCODE(name)] [REF(value)]</a> = [D.type]"
|
||||
item = "<a href='?_src_=vars;[HrefToken()];Vars=\ref[value]'>[VV_HTML_ENCODE(name)] [REF(value)]</a> = [D.type]"
|
||||
|
||||
else if (islist(value))
|
||||
var/list/L = value
|
||||
@@ -473,9 +471,9 @@
|
||||
|
||||
items += debug_variable(key, val, level + 1, sanitize = sanitize)
|
||||
|
||||
item = "<a href='?_src_=vars;[HrefToken()];Vars=[REF(value)]'>[VV_HTML_ENCODE(name)] = /list ([L.len])</a><ul>[items.Join()]</ul>"
|
||||
item = "<a href='?_src_=vars;[HrefToken()];Vars=\ref[value]'>[VV_HTML_ENCODE(name)] = /list ([L.len])</a><ul>[items.Join()]</ul>"
|
||||
else
|
||||
item = "<a href='?_src_=vars;[HrefToken()];Vars=[REF(value)]'>[VV_HTML_ENCODE(name)] = /list ([L.len])</a>"
|
||||
item = "<a href='?_src_=vars;[HrefToken()];Vars=\ref[value]'>[VV_HTML_ENCODE(name)] = /list ([L.len])</a>"
|
||||
|
||||
else if (name in GLOB.bitfields)
|
||||
var/list/flags = list()
|
||||
@@ -587,7 +585,7 @@
|
||||
var/prompt = alert("Do you want to grant [C] access to view this VV window? (they will not be able to edit or change anything nor open nested vv windows unless they themselves are an admin)", "Confirm", "Yes", "No")
|
||||
if (prompt != "Yes" || !usr.client)
|
||||
return
|
||||
message_admins("[key_name_admin(usr)] Showed [key_name_admin(C)] a <a href='?_src_=vars;[HrefToken(TRUE)];datumrefresh=[REF(thing)]'>VV window</a>")
|
||||
message_admins("[key_name_admin(usr)] Showed [key_name_admin(C)] a <a href='?_src_=vars;[HrefToken(TRUE)];datumrefresh=\ref[thing]'>VV window</a>")
|
||||
log_admin("Admin [key_name(usr)] Showed [key_name(C)] a VV window of a [thing]")
|
||||
to_chat(C, "[usr.client.holder.fakekey ? "an Administrator" : "[usr.client.key]"] has granted you access to view a View Variables window")
|
||||
C.debug_variables(thing)
|
||||
|
||||
@@ -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>")
|
||||
|
||||
+1
-1
@@ -219,7 +219,7 @@
|
||||
unique_enzymes = generate_unique_enzymes()
|
||||
uni_identity = generate_uni_identity()
|
||||
struc_enzymes = generate_struc_enzymes()
|
||||
features = random_features()
|
||||
features = random_features(species?.id)
|
||||
|
||||
|
||||
/datum/dna/stored //subtype used by brain mob's stored_dna
|
||||
|
||||
@@ -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>")
|
||||
|
||||
+10
-10
@@ -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>")
|
||||
@@ -119,7 +119,7 @@
|
||||
D.grabbedby(A, 1)
|
||||
if(old_grab_state == GRAB_PASSIVE)
|
||||
D.drop_all_held_items()
|
||||
A.grab_state = GRAB_AGGRESSIVE //Instant agressive grab if on grab intent
|
||||
A.setGrabState(GRAB_AGGRESSIVE) //Instant agressive grab if on grab intent
|
||||
log_combat(A, D, "grabbed", addition="aggressively")
|
||||
D.visible_message("<span class='warning'>[A] violently grabs [D]!</span>", \
|
||||
"<span class='userdanger'>[A] violently grabs you!</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>")
|
||||
@@ -185,7 +185,7 @@
|
||||
D.SetSleeping(400)
|
||||
restraining = FALSE
|
||||
if(A.grab_state < GRAB_NECK)
|
||||
A.grab_state = GRAB_NECK
|
||||
A.setGrabState(GRAB_NECK)
|
||||
else
|
||||
restraining = FALSE
|
||||
return FALSE
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -34,10 +34,10 @@
|
||||
log_combat(A, D, "grabbed", addition="aggressively")
|
||||
D.visible_message("<span class='warning'>[A] violently grabs [D]!</span>", \
|
||||
"<span class='userdanger'>[A] violently grabs you!</span>")
|
||||
A.grab_state = GRAB_AGGRESSIVE //Instant aggressive grab
|
||||
A.setGrabState(GRAB_AGGRESSIVE) //Instant aggressive grab
|
||||
else
|
||||
log_combat(A, D, "grabbed", addition="passively")
|
||||
A.grab_state = GRAB_PASSIVE
|
||||
A.setGrabState(GRAB_PASSIVE)
|
||||
if(4)
|
||||
A.do_attack_animation(D, ATTACK_EFFECT_PUNCH)
|
||||
atk_verb = "headbutts"
|
||||
@@ -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>", \
|
||||
@@ -115,7 +115,7 @@
|
||||
D.grabbedby(A, 1)
|
||||
if(old_grab_state == GRAB_PASSIVE)
|
||||
D.drop_all_held_items()
|
||||
A.grab_state = GRAB_AGGRESSIVE //Instant agressive grab if on grab intent
|
||||
A.setGrabState(GRAB_AGGRESSIVE) //Instant agressive grab if on grab intent
|
||||
log_combat(A, D, "grabbed", addition="aggressively")
|
||||
D.visible_message("<span class='warning'>[A] violently grabs [D]!</span>", \
|
||||
"<span class='userdanger'>[A] violently grabs you!</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
|
||||
|
||||
@@ -106,9 +106,9 @@
|
||||
|
||||
/datum/quirk/musician/on_spawn()
|
||||
var/mob/living/carbon/human/H = quirk_holder
|
||||
var/obj/item/instrument/guitar/guitar = new(get_turf(H))
|
||||
H.put_in_hands(guitar)
|
||||
H.equip_to_slot(guitar, SLOT_IN_BACKPACK)
|
||||
var/obj/item/choice_beacon/music/B = new(get_turf(H))
|
||||
H.put_in_hands(B)
|
||||
H.equip_to_slot(B, SLOT_IN_BACKPACK)
|
||||
var/obj/item/musicaltuner/musicaltuner = new(get_turf(H))
|
||||
H.put_in_hands(musicaltuner)
|
||||
H.equip_to_slot(musicaltuner, SLOT_IN_BACKPACK)
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -514,39 +514,6 @@ GLOBAL_LIST_EMPTY(teleportlocs)
|
||||
/client/proc/ResetAmbiencePlayed()
|
||||
played = FALSE
|
||||
|
||||
/atom/proc/has_gravity(turf/T)
|
||||
if(!T || !isturf(T))
|
||||
T = get_turf(src)
|
||||
|
||||
if(!T)
|
||||
return 0
|
||||
|
||||
var/list/forced_gravity = list()
|
||||
SEND_SIGNAL(src, COMSIG_ATOM_HAS_GRAVITY, T, forced_gravity)
|
||||
if(!forced_gravity.len)
|
||||
SEND_SIGNAL(T, COMSIG_TURF_HAS_GRAVITY, src, forced_gravity)
|
||||
if(forced_gravity.len)
|
||||
var/max_grav
|
||||
for(var/i in forced_gravity)
|
||||
max_grav = max(max_grav, i)
|
||||
if(max_grav)
|
||||
return max_grav
|
||||
|
||||
if(isspaceturf(T)) // Turf never has gravity
|
||||
return 0
|
||||
|
||||
var/area/A = get_area(T)
|
||||
if(A.has_gravity) // Areas which always has gravity
|
||||
return A.has_gravity
|
||||
else
|
||||
// There's a gravity generator on our z level
|
||||
if(GLOB.gravity_generators["[T.z]"])
|
||||
var/max_grav = 0
|
||||
for(var/obj/machinery/gravity_generator/main/G in GLOB.gravity_generators["[T.z]"])
|
||||
max_grav = max(G.setting,max_grav)
|
||||
return max_grav
|
||||
return SSmapping.level_trait(T.z, ZTRAIT_GRAVITY)
|
||||
|
||||
/area/proc/setup(a_name)
|
||||
name = a_name
|
||||
power_equip = FALSE
|
||||
|
||||
@@ -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
|
||||
|
||||
+54
-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,8 +913,54 @@ 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)
|
||||
custom_materials[custom_material] += materials[x] * multiplier
|
||||
|
||||
/**
|
||||
* Returns true if this atom has gravity for the passed in turf
|
||||
*
|
||||
* Sends signals COMSIG_ATOM_HAS_GRAVITY and COMSIG_TURF_HAS_GRAVITY, both can force gravity with
|
||||
* the forced gravity var
|
||||
*
|
||||
* Gravity situations:
|
||||
* * No gravity if you're not in a turf
|
||||
* * No gravity if this atom is in is a space turf
|
||||
* * Gravity if the area it's in always has gravity
|
||||
* * Gravity if there's a gravity generator on the z level
|
||||
* * Gravity if the Z level has an SSMappingTrait for ZTRAIT_GRAVITY
|
||||
* * otherwise no gravity
|
||||
*/
|
||||
/atom/proc/has_gravity(turf/T)
|
||||
if(!T || !isturf(T))
|
||||
T = get_turf(src)
|
||||
|
||||
if(!T)
|
||||
return 0
|
||||
|
||||
var/list/forced_gravity = list()
|
||||
SEND_SIGNAL(src, COMSIG_ATOM_HAS_GRAVITY, T, forced_gravity)
|
||||
if(!forced_gravity.len)
|
||||
SEND_SIGNAL(T, COMSIG_TURF_HAS_GRAVITY, src, forced_gravity)
|
||||
if(forced_gravity.len)
|
||||
var/max_grav
|
||||
for(var/i in forced_gravity)
|
||||
max_grav = max(max_grav, i)
|
||||
return max_grav
|
||||
|
||||
if(isspaceturf(T)) // Turf never has gravity
|
||||
return 0
|
||||
|
||||
var/area/A = get_area(T)
|
||||
if(A.has_gravity) // Areas which always has gravity
|
||||
return A.has_gravity
|
||||
else
|
||||
// There's a gravity generator on our z level
|
||||
if(GLOB.gravity_generators["[T.z]"])
|
||||
var/max_grav = 0
|
||||
for(var/obj/machinery/gravity_generator/main/G in GLOB.gravity_generators["[T.z]"])
|
||||
max_grav = max(G.setting,max_grav)
|
||||
return max_grav
|
||||
return SSmapping.level_trait(T.z, ZTRAIT_GRAVITY)
|
||||
|
||||
+10
-307
@@ -131,7 +131,7 @@
|
||||
return FALSE
|
||||
// Are we trying to pull something we are already pulling? Then enter grab cycle and end.
|
||||
if(AM == pulling)
|
||||
grab_state = state
|
||||
setGrabState(state)
|
||||
if(istype(AM,/mob/living))
|
||||
var/mob/living/AMob = AM
|
||||
AMob.grabbedby(src)
|
||||
@@ -142,7 +142,7 @@
|
||||
AM.pulledby.stop_pulling() //an object can't be pulled by two mobs at once.
|
||||
pulling = AM
|
||||
AM.pulledby = src
|
||||
grab_state = state
|
||||
setGrabState(state)
|
||||
if(ismob(AM))
|
||||
var/mob/M = AM
|
||||
log_combat(src, M, "grabbed", addition="passive grab")
|
||||
@@ -155,10 +155,10 @@
|
||||
pulling.pulledby = null
|
||||
var/mob/living/ex_pulled = pulling
|
||||
pulling = null
|
||||
grab_state = 0
|
||||
setGrabState(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.
|
||||
@@ -865,6 +563,11 @@
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/// Updates the grab state of the movable
|
||||
/// This exists to act as a hook for behaviour
|
||||
/atom/movable/proc/setGrabState(newstate)
|
||||
grab_state = newstate
|
||||
|
||||
/obj/item/proc/do_pickup_animation(atom/target)
|
||||
set waitfor = FALSE
|
||||
if(!istype(loc, /turf))
|
||||
|
||||
@@ -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
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user