Merge branch 'master' of https://github.com/Citadel-Station-13/Citadel-Station-13 into Ghommie-cit595
This commit is contained in:
@@ -2533,20 +2533,20 @@ ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ak
|
||||
ak
|
||||
ak
|
||||
ak
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
aP
|
||||
@@ -2565,9 +2565,9 @@ ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ak
|
||||
ak
|
||||
ak
|
||||
@@ -2576,9 +2576,9 @@ ak
|
||||
ak
|
||||
ak
|
||||
ak
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
aP
|
||||
@@ -2597,8 +2597,8 @@ ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ac
|
||||
ac
|
||||
ab
|
||||
ab
|
||||
ak
|
||||
ak
|
||||
ak
|
||||
@@ -2609,8 +2609,8 @@ ak
|
||||
ak
|
||||
ak
|
||||
ak
|
||||
ac
|
||||
ac
|
||||
ab
|
||||
ab
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
aP
|
||||
@@ -2629,8 +2629,8 @@ ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ac
|
||||
ac
|
||||
ab
|
||||
ab
|
||||
ak
|
||||
ak
|
||||
ak
|
||||
@@ -2661,7 +2661,7 @@ ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ac
|
||||
ab
|
||||
ak
|
||||
ak
|
||||
ak
|
||||
@@ -2693,7 +2693,7 @@ ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ac
|
||||
ab
|
||||
ak
|
||||
ak
|
||||
ak
|
||||
@@ -2725,7 +2725,7 @@ ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ac
|
||||
ab
|
||||
ak
|
||||
ak
|
||||
ak
|
||||
@@ -2770,7 +2770,7 @@ ak
|
||||
ak
|
||||
ak
|
||||
ac
|
||||
ac
|
||||
ab
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
ab
|
||||
@@ -2802,7 +2802,7 @@ ak
|
||||
ak
|
||||
ak
|
||||
ac
|
||||
ac
|
||||
ab
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
ab
|
||||
@@ -2834,7 +2834,7 @@ ak
|
||||
ak
|
||||
ak
|
||||
ac
|
||||
ac
|
||||
ab
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
ab
|
||||
@@ -2866,7 +2866,7 @@ ak
|
||||
ak
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ab
|
||||
"}
|
||||
(12,1,1) = {"
|
||||
ab
|
||||
@@ -2927,7 +2927,7 @@ et
|
||||
vr
|
||||
eu
|
||||
ac
|
||||
ab
|
||||
ac
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
@@ -3440,7 +3440,7 @@ LK
|
||||
pN
|
||||
bQ
|
||||
ac
|
||||
ab
|
||||
ac
|
||||
ab
|
||||
ab
|
||||
"}
|
||||
@@ -3472,7 +3472,7 @@ FI
|
||||
jQ
|
||||
bQ
|
||||
ac
|
||||
ab
|
||||
ac
|
||||
ab
|
||||
ab
|
||||
"}
|
||||
@@ -3630,8 +3630,8 @@ ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
@@ -3660,10 +3660,10 @@ ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
@@ -3690,12 +3690,12 @@ ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
@@ -3722,12 +3722,12 @@ ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
@@ -3755,17 +3755,17 @@ ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
"}
|
||||
(40,1,1) = {"
|
||||
ac
|
||||
ab
|
||||
ac
|
||||
ac
|
||||
ak
|
||||
@@ -3788,17 +3788,17 @@ ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
"}
|
||||
(41,1,1) = {"
|
||||
ac
|
||||
ac
|
||||
ab
|
||||
ab
|
||||
ac
|
||||
ac
|
||||
ak
|
||||
@@ -3821,16 +3821,16 @@ ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
"}
|
||||
(42,1,1) = {"
|
||||
ac
|
||||
ac
|
||||
ab
|
||||
ab
|
||||
ac
|
||||
ac
|
||||
eM
|
||||
@@ -3853,15 +3853,15 @@ ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
"}
|
||||
(43,1,1) = {"
|
||||
ac
|
||||
ab
|
||||
ac
|
||||
ac
|
||||
aw
|
||||
@@ -3886,8 +3886,8 @@ ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
@@ -3919,7 +3919,7 @@ ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
@@ -3951,7 +3951,7 @@ ak
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
@@ -4176,7 +4176,7 @@ ak
|
||||
ak
|
||||
ak
|
||||
ac
|
||||
ab
|
||||
ac
|
||||
ab
|
||||
ab
|
||||
"}
|
||||
@@ -4208,7 +4208,7 @@ ak
|
||||
ak
|
||||
ac
|
||||
ac
|
||||
ab
|
||||
ac
|
||||
ab
|
||||
ab
|
||||
"}
|
||||
@@ -4240,7 +4240,7 @@ ak
|
||||
ak
|
||||
ak
|
||||
ac
|
||||
ab
|
||||
ac
|
||||
ab
|
||||
ab
|
||||
"}
|
||||
@@ -4272,8 +4272,8 @@ ak
|
||||
ak
|
||||
ak
|
||||
ak
|
||||
ab
|
||||
ab
|
||||
ac
|
||||
ac
|
||||
ab
|
||||
"}
|
||||
(56,1,1) = {"
|
||||
@@ -4304,8 +4304,8 @@ ak
|
||||
ak
|
||||
ak
|
||||
ac
|
||||
ab
|
||||
ab
|
||||
ac
|
||||
ac
|
||||
ab
|
||||
"}
|
||||
(57,1,1) = {"
|
||||
@@ -4336,7 +4336,7 @@ ak
|
||||
ak
|
||||
ac
|
||||
ac
|
||||
ab
|
||||
ac
|
||||
ab
|
||||
ab
|
||||
"}
|
||||
|
||||
@@ -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
|
||||
|
||||
+34687
-34639
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
+65
-31
@@ -2,32 +2,57 @@
|
||||
|
||||
#define CHECK_DNA_AND_SPECIES(C) if((!(C.dna)) || (!(C.dna.species))) return
|
||||
|
||||
//Defines copying names of mutations in all cases, make sure to change this if you change mutation's name
|
||||
#define HULK "Hulk"
|
||||
#define XRAY "X Ray Vision"
|
||||
#define COLDRES "Cold Resistance"
|
||||
#define TK "Telekinesis"
|
||||
#define NERVOUS "Nervousness"
|
||||
#define EPILEPSY "Epilepsy"
|
||||
#define MUTATE "Unstable DNA"
|
||||
#define COUGH "Cough"
|
||||
#define DWARFISM "Dwarfism"
|
||||
#define CLOWNMUT "Clumsiness"
|
||||
#define TOURETTES "Tourettes Syndrome"
|
||||
#define DEAFMUT "Deafness"
|
||||
#define BLINDMUT "Blindness"
|
||||
#define RACEMUT "Monkified"
|
||||
#define BADSIGHT "Near Sightness"
|
||||
#define LASEREYES "Laser Eyes"
|
||||
#define CHAMELEON "Chameleon"
|
||||
#define WACKY "Wacky"
|
||||
#define MUT_MUTE "Mute"
|
||||
#define SMILE "Smile"
|
||||
#define STONER "Stoner"
|
||||
#define UNINTELLIGIBLE "Unintelligible"
|
||||
#define SWEDISH "Swedish"
|
||||
#define CHAV "Chav"
|
||||
#define ELVIS "Elvis"
|
||||
//Defines copying names of mutations in all cases, make sure to change this if you change mutation's type
|
||||
#define HULK /datum/mutation/human/hulk
|
||||
#define XRAY /datum/mutation/human/thermal/x_ray
|
||||
#define SPACEMUT /datum/mutation/human/space_adaptation
|
||||
#define TK /datum/mutation/human/telekinesis
|
||||
#define NERVOUS /datum/mutation/human/nervousness
|
||||
#define EPILEPSY /datum/mutation/human/epilepsy
|
||||
#define MUTATE /datum/mutation/human/bad_dna
|
||||
#define COUGH /datum/mutation/human/cough
|
||||
#define DWARFISM /datum/mutation/human/dwarfism
|
||||
#define GIGANTISM /datum/mutation/human/gigantism
|
||||
#define CLOWNMUT /datum/mutation/human/clumsy
|
||||
#define TOURETTES /datum/mutation/human/tourettes
|
||||
#define DEAFMUT /datum/mutation/human/deaf
|
||||
#define BLINDMUT /datum/mutation/human/blind
|
||||
#define RACEMUT /datum/mutation/human/race
|
||||
#define BADSIGHT /datum/mutation/human/nearsight
|
||||
#define LASEREYES /datum/mutation/human/laser_eyes
|
||||
#define CHAMELEON /datum/mutation/human/chameleon
|
||||
#define WACKY /datum/mutation/human/wacky
|
||||
#define MUT_MUTE /datum/mutation/human/mute
|
||||
#define SMILE /datum/mutation/human/smile
|
||||
#define STONER /datum/mutation/human/stoner
|
||||
#define UNINTELLIGIBLE /datum/mutation/human/unintelligible
|
||||
#define SWEDISH /datum/mutation/human/swedish
|
||||
#define CHAV /datum/mutation/human/chav
|
||||
#define ELVIS /datum/mutation/human/elvis
|
||||
#define RADIOACTIVE /datum/mutation/human/radioactive
|
||||
#define GLOWY /datum/mutation/human/glow
|
||||
#define ANTIGLOWY /datum/mutation/human/glow/anti
|
||||
#define TELEPATHY /datum/mutation/human/telepathy
|
||||
#define FIREBREATH /datum/mutation/human/firebreath
|
||||
#define VOID /datum/mutation/human/void
|
||||
#define TONGUESPIKE /datum/mutation/human/tongue_spike
|
||||
#define TONGUESPIKECHEM /datum/mutation/human/tongue_spike/chem
|
||||
#define STRONG /datum/mutation/human/strong
|
||||
#define STIMMED /datum/mutation/human/stimmed
|
||||
#define FIRESWEAT /datum/mutation/human/fire
|
||||
#define THERMAL /datum/mutation/human/thermal
|
||||
#define ANTENNA /datum/mutation/human/antenna
|
||||
#define PARANOIA /datum/mutation/human/paranoia
|
||||
#define MINDREAD /datum/mutation/human/mindreader
|
||||
#define INSULATED /datum/mutation/human/insulated
|
||||
#define SHOCKTOUCH /datum/mutation/human/shock
|
||||
#define OLFACTION /datum/mutation/human/olfaction
|
||||
#define ACIDFLESH /datum/mutation/human/acidflesh
|
||||
#define BADBLINK /datum/mutation/human/badblink
|
||||
#define SPASTIC /datum/mutation/human/spastic
|
||||
#define GELADIKINESIS /datum/mutation/human/geladikinesis
|
||||
#define CRYOKINESIS /datum/mutation/human/cryokinesis
|
||||
#define SPIDER_WEB /datum/mutation/human/webbing
|
||||
|
||||
#define UI_CHANGED "ui changed"
|
||||
#define UE_CHANGED "ue changed"
|
||||
@@ -39,10 +64,12 @@
|
||||
//Types of usual mutations
|
||||
#define POSITIVE 1
|
||||
#define NEGATIVE 2
|
||||
#define MINOR_NEGATIVE 3
|
||||
#define MINOR_NEGATIVE 4
|
||||
|
||||
//Mutations that cant be taken from genetics and are not in SE
|
||||
#define NON_SCANNABLE -1
|
||||
//Mutation classes. Normal being on them, extra being additional mutations with instability and other being stuff you dont want people to fuck with like wizard mutate
|
||||
#define MUT_NORMAL 1
|
||||
#define MUT_EXTRA 2
|
||||
#define MUT_OTHER 3
|
||||
|
||||
//DNA - Because fuck you and your magic numbers being all over the codebase.
|
||||
#define DNA_BLOCK_SIZE 3
|
||||
@@ -63,7 +90,8 @@
|
||||
#define DNA_MUTANTMARKING_BLOCK 13
|
||||
#define DNA_TAUR_BLOCK 14
|
||||
|
||||
#define DNA_STRUC_ENZYMES_BLOCKS 18
|
||||
#define DNA_SEQUENCE_LENGTH 4
|
||||
#define DNA_MUTATION_BLOCKS 8
|
||||
#define DNA_UNIQUE_ENZYMES_LEN 32
|
||||
|
||||
//Transformation proc stuff
|
||||
@@ -141,7 +169,13 @@
|
||||
#define STANDARD_ORGAN_HEALING (1/(15 MINUTES / (2 SECONDS)))
|
||||
#define STANDARD_ORGAN_DECAY (1/(15 MINUTES / (2 SECONDS))) //designed to fail organs when left to decay for ~15 minutes. 2 SECOND is SSmobs tickrate.
|
||||
|
||||
|
||||
//used for the can_chromosome var on mutations
|
||||
#define CHROMOSOME_NEVER 0
|
||||
#define CHROMOSOME_NONE 1
|
||||
#define CHROMOSOME_USED 2
|
||||
|
||||
#define G_MALE 1
|
||||
#define G_FEMALE 2
|
||||
#define G_PLURAL 3
|
||||
#define G_NEUTER 4
|
||||
#define G_NEUTER 4
|
||||
@@ -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
|
||||
@@ -202,14 +206,25 @@
|
||||
#define COMSIG_LIVING_RESIST "living_resist" //from base of mob/living/resist() (/mob/living)
|
||||
#define COMSIG_LIVING_IGNITED "living_ignite" //from base of mob/living/IgniteMob() (/mob/living)
|
||||
#define COMSIG_LIVING_EXTINGUISHED "living_extinguished" //from base of mob/living/ExtinguishMob() (/mob/living)
|
||||
#define COMSIG_LIVING_ELECTROCUTE_ACT "living_electrocute_act" //from base of mob/living/electrocute_act(): (shock_damage)
|
||||
#define COMSIG_LIVING_ELECTROCUTE_ACT "living_electrocute_act" //from base of mob/living/electrocute_act(): (shock_damage, source, siemens_coeff, flags)
|
||||
#define COMSIG_LIVING_MINOR_SHOCK "living_minor_shock" //sent by stuff like stunbatons and tasers: ()
|
||||
#define COMSIG_LIVING_REVIVE "living_revive" //from base of mob/living/revive() (full_heal, admin_revive)
|
||||
#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)
|
||||
|
||||
// /mob/living/simple_animal/hostile signals
|
||||
#define COMSIG_HOSTILE_ATTACKINGTARGET "hostile_attackingtarget"
|
||||
@@ -233,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)
|
||||
@@ -274,6 +290,9 @@
|
||||
#define COMSIG_HUMAN_MELEE_UNARMED_ATTACK "human_melee_unarmed_attack" //from mob/living/carbon/human/UnarmedAttack(): (atom/target)
|
||||
#define COMSIG_HUMAN_MELEE_UNARMED_ATTACKBY "human_melee_unarmed_attackby" //from mob/living/carbon/human/UnarmedAttack(): (mob/living/carbon/human/attacker)
|
||||
#define COMSIG_HUMAN_DISARM_HIT "human_disarm_hit" //Hit by successful disarm attack (mob/living/carbon/human/attacker,zone_targeted)
|
||||
#define COMSIG_HUMAN_PREFS_COPIED_TO "human_prefs_copied_to" //from datum/preferences/copy_to(): (datum/preferences, icon_updates, roundstart_checks)
|
||||
#define COMSIG_HUMAN_HARDSET_DNA "human_hardset_dna" //from mob/living/carbon/human/hardset_dna(): (ui, list/mutation_index, newreal_name, newblood_type, datum/species, newfeatures)
|
||||
#define COMSIG_HUMAN_ON_RANDOMIZE "humman_on_randomize" //from base of proc/randomize_human()
|
||||
|
||||
// /datum/species signals
|
||||
#define COMSIG_SPECIES_GAIN "species_gain" //from datum/species/on_species_gain(): (datum/species/new_species, datum/species/old_species)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
//Individual logging panel pages
|
||||
#define INDIVIDUAL_ATTACK_LOG (LOG_ATTACK)
|
||||
#define INDIVIDUAL_SAY_LOG (LOG_SAY | LOG_WHISPER | LOG_DSAY)
|
||||
#define INDIVIDUAL_EMOTE_LOG (LOG_EMOTE)
|
||||
#define INDIVIDUAL_EMOTE_LOG (LOG_EMOTE | LOG_SUBTLER)
|
||||
#define INDIVIDUAL_COMMS_LOG (LOG_PDA | LOG_CHAT | LOG_COMMENT | LOG_TELECOMMS)
|
||||
#define INDIVIDUAL_OOC_LOG (LOG_OOC | LOG_ADMIN)
|
||||
#define INDIVIDUAL_OWNERSHIP_LOG (LOG_OWNERSHIP)
|
||||
|
||||
@@ -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"
|
||||
@@ -208,6 +210,17 @@
|
||||
|
||||
#define MAX_CHICKENS 50
|
||||
|
||||
///Flags used by the flags parameter of electrocute act.
|
||||
|
||||
///Makes it so that the shock doesn't take gloves into account.
|
||||
#define SHOCK_NOGLOVES (1 << 0)
|
||||
///Used when the shock is from a tesla bolt.
|
||||
#define SHOCK_TESLA (1 << 1)
|
||||
///Used when an illusion shocks something. Makes the shock deal stamina damage and not trigger certain secondary effects.
|
||||
#define SHOCK_ILLUSION (1 << 2)
|
||||
///The shock doesn't stun.
|
||||
#define SHOCK_NOSTUN (1 << 3)
|
||||
|
||||
|
||||
#define INCORPOREAL_MOVE_BASIC 1
|
||||
#define INCORPOREAL_MOVE_SHADOW 2 // leaves a trail of shadows
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -111,3 +118,4 @@
|
||||
|
||||
#define STATUS_EFFECT_RAINBOWPROTECTION /datum/status_effect/rainbow_protection //Invulnerable and pacifistic
|
||||
#define STATUS_EFFECT_SLIMESKIN /datum/status_effect/slimeskin //Increased armor
|
||||
#define STATUS_EFFECT_DNA_MELT /datum/status_effect/dna_melt //usually does something horrible to you when you hit 100 genetic instability
|
||||
|
||||
@@ -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\
|
||||
@@ -77,6 +83,7 @@
|
||||
#define TRAIT_DISFIGURED "disfigured"
|
||||
#define TRAIT_XENO_HOST "xeno_host" //Tracks whether we're gonna be a baby alien's mummy.
|
||||
#define TRAIT_STUNIMMUNE "stun_immunity"
|
||||
#define TRAIT_TASED_RESISTANCE "tased_resistance" //prevents you from suffering most of the effects of being tased
|
||||
#define TRAIT_SLEEPIMMUNE "sleep_immunity"
|
||||
#define TRAIT_PUSHIMMUNE "push_immunity"
|
||||
#define TRAIT_SHOCKIMMUNE "shock_immunity"
|
||||
@@ -137,6 +144,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
|
||||
@@ -175,6 +195,8 @@
|
||||
#define TRAIT_AUTO_CATCH_ITEM "auto_catch_item"
|
||||
#define TRAIT_CLOWN_MENTALITY "clown_mentality" // The future is now, clownman.
|
||||
#define TRAIT_FREESPRINT "free_sprinting"
|
||||
#define TRAIT_XRAY_VISION "xray_vision"
|
||||
#define TRAIT_THERMAL_VISION "thermal_vision"
|
||||
#define TRAIT_NO_TELEPORT "no-teleport" //you just can't
|
||||
#define TRAIT_NO_INTERNALS "no-internals"
|
||||
#define TRAIT_NO_ALCOHOL "alcohol_intolerance"
|
||||
|
||||
@@ -107,38 +107,6 @@ GLOBAL_VAR_INIT(miscreants_allowed, FALSE)
|
||||
if(!src.holder) return
|
||||
message_admins("[key_name_admin(usr)] manually reloaded mentors")
|
||||
|
||||
//Flavor Text
|
||||
/mob/proc/set_flavor()
|
||||
set name = "Set Flavor Text"
|
||||
set desc = "Sets an extended description of your character's features."
|
||||
set category = "IC"
|
||||
|
||||
var/new_flavor = stripped_multiline_input(usr, "Set the flavor text in your 'examine' verb. This can also be used for OOC notes and preferences!", "Flavor Text", flavor_text, MAX_FLAVOR_LEN, TRUE)
|
||||
if(!isnull(new_flavor))
|
||||
flavor_text = html_decode(new_flavor)
|
||||
to_chat(src, "Your flavor text has been updated.")
|
||||
|
||||
//Flavor Text
|
||||
/mob/proc/set_flavor_2()
|
||||
set name = "Set Temporary Flavor Text"
|
||||
set desc = "Sets a description of your character's current appearance. Use this for emotions, poses etc."
|
||||
set category = "IC"
|
||||
|
||||
var/new_flavor = stripped_multiline_input(usr, "Set the temporary flavor text in your 'examine' verb. This should be used only for things pertaining to the current round!", "Short-Term Flavor Text", flavor_text_2, MAX_FLAVOR_LEN, TRUE)
|
||||
if(!isnull(new_flavor))
|
||||
flavor_text_2 = html_decode(new_flavor)
|
||||
to_chat(src, "Your temporary flavor text has been updated.")
|
||||
|
||||
/mob/proc/print_flavor_text(flavor,temp = FALSE)
|
||||
if(!flavor)
|
||||
return
|
||||
// We are decoding and then encoding to not only get correct amount of characters, but also to prevent partial escaping characters being shown.
|
||||
var/msg = html_decode(replacetext(flavor, "\n", " "))
|
||||
if(length_char(msg) <= 40)
|
||||
return "<span class='notice'>[html_encode(msg)]</span>"
|
||||
else
|
||||
return "<span class='notice'>[html_encode(copytext_char(msg, 1, 37))]... <a href='?src=[REF(src)];flavor[temp ? "2" : ""]_more=1'>More...</span></a>"
|
||||
|
||||
//LOOC toggles
|
||||
/client/verb/listen_looc()
|
||||
set name = "Show/Hide LOOC"
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
//////////////////////////////////////////////////////////
|
||||
//A bunch of helpers to make genetics less of a headache//
|
||||
//////////////////////////////////////////////////////////
|
||||
|
||||
#define GET_INITIALIZED_MUTATION(A) GLOB.all_mutations[A]
|
||||
#define GET_GENE_STRING(A, B) (B.mutation_index[A])
|
||||
#define GET_SEQUENCE(A) (GLOB.full_sequences[A])
|
||||
|
||||
#define GET_MUTATION_STABILIZER(A) ((A.stabilizer_coeff < 0) ? 1 : A.stabilizer_coeff)
|
||||
#define GET_MUTATION_SYNCHRONIZER(A) ((A.synchronizer_coeff < 0) ? 1 : A.synchronizer_coeff)
|
||||
#define GET_MUTATION_POWER(A) ((A.power_coeff < 0) ? 1 : A.power_coeff)
|
||||
#define GET_MUTATION_ENERGY(A) ((A.energy_coeff < 0) ? 1 : A.energy_coeff)
|
||||
@@ -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
|
||||
)
|
||||
))
|
||||
|
||||
@@ -21,8 +21,11 @@ GLOBAL_LIST(op_se_blocks)
|
||||
GLOBAL_VAR(NULLED_SE)
|
||||
GLOBAL_VAR(NULLED_UI)
|
||||
|
||||
GLOBAL_LIST_EMPTY(global_mutations) // list of hidden mutation things
|
||||
GLOBAL_LIST_EMPTY(all_mutations)
|
||||
GLOBAL_LIST_EMPTY(full_sequences)
|
||||
|
||||
GLOBAL_LIST_EMPTY(bad_mutations)
|
||||
GLOBAL_LIST_EMPTY(good_mutations)
|
||||
GLOBAL_LIST_EMPTY(not_good_mutations)
|
||||
GLOBAL_LIST_EMPTY(not_good_mutations)
|
||||
|
||||
GLOBAL_LIST_EMPTY(mutation_recipes)
|
||||
@@ -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))
|
||||
|
||||
@@ -371,19 +371,18 @@
|
||||
for(var/T in storyteller_cache)
|
||||
var/datum/dynamic_storyteller/S = T
|
||||
var/config_tag = initial(S.config_tag)
|
||||
var/final_weight = initial(S.weight)
|
||||
if(probabilities[config_tag]<=0)
|
||||
var/probability = (config_tag in probabilities) ? probabilities[config_tag] : initial(S.weight)
|
||||
if(probability <= 0)
|
||||
continue
|
||||
final_weight = probabilities[config_tag]
|
||||
if(SSpersistence.saved_storytellers.len == 3 && repeated_mode_adjust.len == 3)
|
||||
if(SSpersistence.saved_storytellers.len == repeated_mode_adjust.len)
|
||||
var/name = initial(S.name)
|
||||
var/recent_round = min(SSpersistence.saved_storytellers.Find(name),3)
|
||||
var/adjustment = 0
|
||||
while(recent_round)
|
||||
adjustment += repeated_mode_adjust[recent_round]
|
||||
recent_round = SSpersistence.saved_modes.Find(name,recent_round+1,0)
|
||||
final_weight *= ((100-adjustment)/100)
|
||||
runnable_storytellers[S] = final_weight
|
||||
probability *= ((100-adjustment)/100)
|
||||
runnable_storytellers[S] = probability
|
||||
return runnable_storytellers
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -459,3 +459,6 @@
|
||||
/datum/config_entry/number/max_bunker_days
|
||||
config_entry_value = 7
|
||||
min_val = 1
|
||||
|
||||
/datum/config_entry/flag/minimaps_enabled
|
||||
config_entry_value = TRUE
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -16,7 +16,7 @@ SUBSYSTEM_DEF(atoms)
|
||||
|
||||
/datum/controller/subsystem/atoms/Initialize(timeofday)
|
||||
GLOB.fire_overlay.appearance_flags = RESET_COLOR
|
||||
setupGenetics() //to set the mutations' place in structural enzymes, so monkey.initialize() knows where to put the monkey mutation.
|
||||
setupGenetics() //to set the mutations' sequence.
|
||||
initialized = INITIALIZATION_INNEW_MAPLOAD
|
||||
InitializeAtoms()
|
||||
return ..()
|
||||
@@ -108,16 +108,19 @@ SUBSYSTEM_DEF(atoms)
|
||||
BadInitializeCalls = SSatoms.BadInitializeCalls
|
||||
|
||||
/datum/controller/subsystem/atoms/proc/setupGenetics()
|
||||
var/list/avnums = new /list(DNA_STRUC_ENZYMES_BLOCKS)
|
||||
for(var/i=1, i<=DNA_STRUC_ENZYMES_BLOCKS, i++)
|
||||
avnums[i] = i
|
||||
CHECK_TICK
|
||||
|
||||
for(var/A in subtypesof(/datum/mutation/human))
|
||||
var/datum/mutation/human/B = new A()
|
||||
if(B.dna_block == NON_SCANNABLE)
|
||||
var/list/mutations = subtypesof(/datum/mutation/human)
|
||||
shuffle_inplace(mutations)
|
||||
for(var/A in subtypesof(/datum/generecipe))
|
||||
var/datum/generecipe/GR = A
|
||||
GLOB.mutation_recipes[initial(GR.required)] = initial(GR.result)
|
||||
for(var/i in 1 to LAZYLEN(mutations))
|
||||
var/path = mutations[i] //byond gets pissy when we do it in one line
|
||||
var/datum/mutation/human/B = new path ()
|
||||
B.alias = "Mutation #[i]"
|
||||
GLOB.all_mutations[B.type] = B
|
||||
GLOB.full_sequences[B.type] = generate_gene_sequence(B.blocks)
|
||||
if(B.locked)
|
||||
continue
|
||||
B.dna_block = pick_n_take(avnums)
|
||||
if(B.quality == POSITIVE)
|
||||
GLOB.good_mutations |= B
|
||||
else if(B.quality == NEGATIVE)
|
||||
|
||||
@@ -20,7 +20,7 @@ SUBSYSTEM_DEF(autotransfer)
|
||||
/datum/controller/subsystem/autotransfer/fire()
|
||||
if(maxvotes > curvotes)
|
||||
if(world.time > targettime)
|
||||
SSvote.initiate_vote("transfer",null) //TODO figure out how to not use null as the user
|
||||
SSvote.initiate_vote("transfer","server")
|
||||
targettime = targettime + voteinterval
|
||||
curvotes += 1
|
||||
else
|
||||
|
||||
@@ -6,7 +6,7 @@ SUBSYSTEM_DEF(garbage)
|
||||
runlevels = RUNLEVELS_DEFAULT | RUNLEVEL_LOBBY
|
||||
init_order = INIT_ORDER_GARBAGE
|
||||
|
||||
var/list/collection_timeout = list(0, 2 MINUTES, 10 SECONDS) // deciseconds to wait before moving something up in the queue to the next level
|
||||
var/list/collection_timeout = list(15 SECONDS, 30 SECONDS) // deciseconds to wait before moving something up in the queue to the next level
|
||||
|
||||
//Stat tracking
|
||||
var/delslasttick = 0 // number of del()'s we've done this tick
|
||||
@@ -27,6 +27,7 @@ SUBSYSTEM_DEF(garbage)
|
||||
|
||||
#ifdef TESTING
|
||||
var/list/reference_find_on_fail = list()
|
||||
var/list/reference_find_on_fail_types = list()
|
||||
#endif
|
||||
|
||||
|
||||
@@ -98,9 +99,6 @@ SUBSYSTEM_DEF(garbage)
|
||||
state = SS_RUNNING
|
||||
break
|
||||
|
||||
|
||||
|
||||
|
||||
/datum/controller/subsystem/garbage/proc/HandleQueue(level = GC_QUEUE_CHECK)
|
||||
if (level == GC_QUEUE_CHECK)
|
||||
delslasttick = 0
|
||||
@@ -183,6 +181,11 @@ SUBSYSTEM_DEF(garbage)
|
||||
var/gctime = world.time
|
||||
var/refid = "\ref[D]"
|
||||
|
||||
#ifdef TESTING
|
||||
if(reference_find_on_fail_types[D.type])
|
||||
reference_find_on_fail["\ref[D]"] = TRUE
|
||||
#endif
|
||||
|
||||
D.gc_destroyed = gctime
|
||||
var/list/queue = queues[level]
|
||||
if (queue[refid])
|
||||
@@ -190,6 +193,21 @@ SUBSYSTEM_DEF(garbage)
|
||||
|
||||
queue[refid] = gctime
|
||||
|
||||
#ifdef TESTING
|
||||
/datum/controller/subsystem/garbage/proc/add_type_to_findref(type)
|
||||
if(!ispath(type))
|
||||
return "NOT A VAILD PATH"
|
||||
reference_find_on_fail_types |= typecacheof(type)
|
||||
|
||||
/datum/controller/subsystem/garbage/proc/remove_type_from_findref(type)
|
||||
if(!ispath(type))
|
||||
return "NOT A VALID PATH"
|
||||
reference_find_on_fail_types -= typesof(type)
|
||||
|
||||
/datum/controller/subsystem/garbage/proc/clear_findref_types()
|
||||
reference_find_on_fail_types = list()
|
||||
#endif
|
||||
|
||||
//this is mainly to separate things profile wise.
|
||||
/datum/controller/subsystem/garbage/proc/HardDelete(datum/D)
|
||||
var/time = world.timeofday
|
||||
@@ -244,7 +262,7 @@ SUBSYSTEM_DEF(garbage)
|
||||
|
||||
#ifdef TESTING
|
||||
/proc/qdel_and_find_ref_if_fail(datum/D, force = FALSE)
|
||||
SSgarbage.reference_find_on_fail[REF(D)] = TRUE
|
||||
SSgarbage.reference_find_on_fail["\ref[D]"] = TRUE
|
||||
qdel(D, force)
|
||||
#endif
|
||||
|
||||
@@ -309,7 +327,7 @@ SUBSYSTEM_DEF(garbage)
|
||||
if (QDEL_HINT_IFFAIL_FINDREFERENCE)
|
||||
SSgarbage.Queue(D)
|
||||
#ifdef TESTING
|
||||
SSgarbage.reference_find_on_fail[REF(D)] = TRUE
|
||||
SSgarbage.reference_find_on_fail["\ref[D]"] = TRUE
|
||||
#endif
|
||||
else
|
||||
#ifdef TESTING
|
||||
|
||||
@@ -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
|
||||
@@ -0,0 +1,20 @@
|
||||
SUBSYSTEM_DEF(minimaps)
|
||||
name = "Minimaps"
|
||||
flags = SS_NO_FIRE
|
||||
var/list/station_minimaps
|
||||
var/datum/minimap_group/station_minimap
|
||||
|
||||
/datum/controller/subsystem/minimaps/Initialize()
|
||||
if(!CONFIG_GET(flag/minimaps_enabled))
|
||||
to_chat(world, "<span class='boldwarning'>Minimaps disabled! Skipping init.</span>")
|
||||
return ..()
|
||||
build_minimaps()
|
||||
return ..()
|
||||
|
||||
/datum/controller/subsystem/minimaps/proc/build_minimaps()
|
||||
station_minimaps = list()
|
||||
for(var/z in SSmapping.levels_by_trait(ZTRAIT_STATION))
|
||||
var/datum/space_level/SL = SSmapping.get_level(z)
|
||||
var/name = (SL.name == initial(SL.name))? "[z] - Station" : "[z] - [SL.name]"
|
||||
station_minimaps += new /datum/minimap(z, name = name)
|
||||
station_minimap = new(station_minimaps, "Station")
|
||||
@@ -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
|
||||
|
||||
@@ -701,6 +701,7 @@ SUBSYSTEM_DEF(ticker)
|
||||
round_end_sound = pick(\
|
||||
'sound/roundend/newroundsexy.ogg',
|
||||
'sound/roundend/apcdestroyed.ogg',
|
||||
'sound/roundend/seeyoulaterokay.ogg',
|
||||
'sound/roundend/bangindonk.ogg',
|
||||
'sound/roundend/leavingtg.ogg',
|
||||
'sound/roundend/its_only_game.ogg',
|
||||
|
||||
@@ -89,20 +89,6 @@ SUBSYSTEM_DEF(vote)
|
||||
choices[GLOB.master_mode] += non_voters.len
|
||||
if(choices[GLOB.master_mode] >= greatest_votes)
|
||||
greatest_votes = choices[GLOB.master_mode]
|
||||
else if(mode == "transfer") // austation begin -- Crew autotransfer vote
|
||||
var/factor = 1
|
||||
switch(world.time / (1 MINUTES))
|
||||
if(0 to 60)
|
||||
factor = 0.5
|
||||
if(61 to 120)
|
||||
factor = 0.8
|
||||
if(121 to 240)
|
||||
factor = 1
|
||||
if(241 to 300)
|
||||
factor = 1.2
|
||||
else
|
||||
factor = 1.4
|
||||
choices["Initiate Crew Transfer"] += round(non_voters.len * factor) // austation end
|
||||
//get all options with that many votes and return them in a list
|
||||
. = list()
|
||||
if(greatest_votes)
|
||||
@@ -370,7 +356,7 @@ SUBSYSTEM_DEF(vote)
|
||||
var/list/runnable_storytellers = config.get_runnable_storytellers()
|
||||
for(var/T in runnable_storytellers)
|
||||
var/datum/dynamic_storyteller/S = T
|
||||
runnable_storytellers[S] *= scores[initial(S.name)]
|
||||
runnable_storytellers[S] *= round(stored_gamemode_votes[initial(S.name)]*100000,1)
|
||||
var/datum/dynamic_storyteller/S = pickweightAllowZero(runnable_storytellers)
|
||||
GLOB.dynamic_storyteller_type = S
|
||||
if("map")
|
||||
@@ -499,10 +485,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")
|
||||
|
||||
+15
-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)
|
||||
@@ -422,6 +426,7 @@
|
||||
|
||||
/datum/action/item_action/hands_free
|
||||
check_flags = AB_CHECK_CONSCIOUS
|
||||
required_mobility_flags = NONE
|
||||
|
||||
/datum/action/item_action/hands_free/activate
|
||||
name = "Activate"
|
||||
@@ -430,7 +435,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
|
||||
@@ -341,7 +341,7 @@
|
||||
var/mob/living/parent
|
||||
var/selfdeleting = FALSE
|
||||
|
||||
/obj/item/riding_offhand/dropped()
|
||||
/obj/item/riding_offhand/dropped(mob/user)
|
||||
selfdeleting = TRUE
|
||||
. = ..()
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -287,7 +287,6 @@
|
||||
G.fields["gender"] = "Other"
|
||||
L.fields["blood_type"] = H.dna.blood_type
|
||||
L.fields["b_dna"] = H.dna.unique_enzymes
|
||||
L.fields["enzymes"] = H.dna.struc_enzymes
|
||||
L.fields["identity"] = H.dna.uni_identity
|
||||
L.fields["species"] = H.dna.species.type
|
||||
L.fields["features"] = H.dna.features
|
||||
|
||||
+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)
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
return FALSE
|
||||
|
||||
|
||||
if(!(type in D.viable_mobtypes))
|
||||
if(!D.viable_mobtypes[type])
|
||||
return FALSE
|
||||
|
||||
return TRUE
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
var/stage_prob = 4
|
||||
|
||||
//Other
|
||||
var/list/viable_mobtypes = list() //typepaths of viable mobs
|
||||
var/list/viable_mobtypes = list() //typecache of viable mobs
|
||||
var/mob/living/carbon/affected_mob = null
|
||||
var/list/cures = list() //list of cures if the disease has the CURABLE flag, these are reagent ids
|
||||
var/infectivity = 65
|
||||
@@ -34,6 +34,10 @@
|
||||
var/process_dead = FALSE //if this ticks while the host is dead
|
||||
var/copy_type = null //if this is null, copies will use the type of the instance being copied
|
||||
|
||||
/datum/disease/New(make_typecache = TRUE)
|
||||
if(make_typecache && length(viable_mobtypes))
|
||||
viable_mobtypes = typecacheof(viable_mobtypes)
|
||||
|
||||
/datum/disease/Destroy()
|
||||
. = ..()
|
||||
if(affected_mob)
|
||||
|
||||
@@ -80,7 +80,8 @@
|
||||
|
||||
*/
|
||||
|
||||
/datum/disease/advance/New()
|
||||
/datum/disease/advance/New(make_typecache = TRUE)
|
||||
..()
|
||||
Refresh()
|
||||
|
||||
/datum/disease/advance/Destroy()
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/datum/disease/advance/cold
|
||||
copy_type = /datum/disease/advance
|
||||
|
||||
/datum/disease/advance/cold/New()
|
||||
/datum/disease/advance/cold/New(make_typecache = TRUE)
|
||||
name = "Cold"
|
||||
symptoms = list(new/datum/symptom/sneeze)
|
||||
..()
|
||||
@@ -11,7 +11,7 @@
|
||||
/datum/disease/advance/flu
|
||||
copy_type = /datum/disease/advance
|
||||
|
||||
/datum/disease/advance/flu/New()
|
||||
/datum/disease/advance/flu/New(make_typecache = TRUE)
|
||||
name = "Flu"
|
||||
symptoms = list(new/datum/symptom/cough)
|
||||
..()
|
||||
@@ -21,7 +21,7 @@
|
||||
name = "Experimental Disease"
|
||||
copy_type = /datum/disease/advance
|
||||
|
||||
/datum/disease/advance/random/New(max_symptoms, max_level = 8)
|
||||
/datum/disease/advance/random/New(make_typecache = TRUE, max_symptoms, max_level = 8)
|
||||
if(!max_symptoms)
|
||||
max_symptoms = rand(1, VIRUS_SYMPTOM_LIMIT)
|
||||
var/list/datum/symptom/possible_symptoms = list()
|
||||
@@ -37,6 +37,6 @@
|
||||
if(chosen_symptom)
|
||||
var/datum/symptom/S = new chosen_symptom
|
||||
symptoms += S
|
||||
Refresh()
|
||||
|
||||
name = "Sample #[rand(1,10000)]"
|
||||
name = "Sample #[rand(1,10000)]"
|
||||
..()
|
||||
@@ -61,12 +61,12 @@ Bonus
|
||||
symptom_delay_max = 60
|
||||
if(A.properties["resistance"] >= 8) //mutate twice
|
||||
power = 2
|
||||
possible_mutations = (GLOB.bad_mutations | GLOB.not_good_mutations) - GLOB.mutations_list[RACEMUT]
|
||||
possible_mutations = (GLOB.bad_mutations | GLOB.not_good_mutations) - GLOB.all_mutations[RACEMUT]
|
||||
var/mob/living/carbon/M = A.affected_mob
|
||||
if(M)
|
||||
if(!M.has_dna())
|
||||
return
|
||||
archived_dna = M.dna.struc_enzymes
|
||||
archived_dna = M.dna.mutation_index
|
||||
|
||||
// Give them back their old DNA when cured.
|
||||
/datum/symptom/genetic_mutation/End(datum/disease/advance/A)
|
||||
@@ -77,5 +77,5 @@ Bonus
|
||||
if(M && archived_dna)
|
||||
if(!M.has_dna())
|
||||
return
|
||||
M.dna.struc_enzymes = archived_dna
|
||||
M.dna.mutation_index = archived_dna
|
||||
M.domutcheck()
|
||||
|
||||
@@ -257,6 +257,8 @@
|
||||
/datum/symptom/heal/coma/End(datum/disease/advance/A)
|
||||
if(!..())
|
||||
return
|
||||
if(active_coma)
|
||||
uncoma()
|
||||
REMOVE_TRAIT(A.affected_mob, TRAIT_NOCRITDAMAGE, DISEASE_TRAIT)
|
||||
|
||||
/datum/symptom/heal/coma/CanHeal(datum/disease/advance/A)
|
||||
@@ -277,9 +279,9 @@
|
||||
/datum/symptom/heal/coma/proc/coma(mob/living/M)
|
||||
if(deathgasp)
|
||||
M.emote("deathgasp")
|
||||
M.fakedeath("regenerative_coma")
|
||||
M.fakedeath("regenerative_coma", TRUE)
|
||||
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 +290,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>")
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
stage_prob = 2
|
||||
var/restcure = 0
|
||||
|
||||
/datum/disease/dna_retrovirus/New()
|
||||
/datum/disease/dna_retrovirus/New(make_typecache = TRUE)
|
||||
..()
|
||||
agent = "Virus class [pick("A","B","C","D","E","F")][pick("A","B","C","D","E","F")]-[rand(50,300)]"
|
||||
if(prob(40))
|
||||
|
||||
+247
-61
@@ -2,7 +2,6 @@
|
||||
/////////////////////////// DNA DATUM
|
||||
/datum/dna
|
||||
var/unique_enzymes
|
||||
var/struc_enzymes
|
||||
var/uni_identity
|
||||
var/blood_type
|
||||
var/datum/species/species = new /datum/species/human //The type of mutant race the player is if applicable (i.e. potato-man)
|
||||
@@ -11,10 +10,13 @@
|
||||
var/nameless = FALSE
|
||||
var/custom_species //siiiiigh I guess this is important
|
||||
var/list/mutations = list() //All mutations are from now on here
|
||||
var/list/temporary_mutations = list() //Timers for temporary mutations
|
||||
var/list/temporary_mutations = list() //Temporary changes to the UE
|
||||
var/list/previous = list() //For temporary name/ui/ue/blood_type modifications
|
||||
var/mob/living/holder
|
||||
var/delete_species = TRUE //Set to FALSE when a body is scanned by a cloner to fix #38875
|
||||
var/mutation_index[DNA_MUTATION_BLOCKS] //List of which mutations this carbon has and its assigned block
|
||||
var/stability = 100
|
||||
var/scrambled = FALSE //Did we take something like mutagen? In that case we cant get our genes scanned to instantly cheese all the powers.
|
||||
|
||||
/datum/dna/New(mob/living/new_holder)
|
||||
if(istype(new_holder))
|
||||
@@ -42,8 +44,8 @@
|
||||
destination.dna.unique_enzymes = unique_enzymes
|
||||
destination.dna.uni_identity = uni_identity
|
||||
destination.dna.blood_type = blood_type
|
||||
destination.dna.features = features.Copy()
|
||||
destination.set_species(species.type, icon_update=0)
|
||||
destination.dna.features = features.Copy()
|
||||
destination.dna.real_name = real_name
|
||||
destination.dna.nameless = nameless
|
||||
destination.dna.custom_species = custom_species
|
||||
@@ -51,13 +53,14 @@
|
||||
if(ishuman(destination))
|
||||
var/mob/living/carbon/human/H = destination
|
||||
H.give_genitals(TRUE)//This gives the body the genitals of this DNA. Used for any transformations based on DNA
|
||||
destination.flavor_text = destination.dna.features["flavor_text"] //Update the flavor_text to use new dna text
|
||||
if(transfer_SE)
|
||||
destination.dna.struc_enzymes = struc_enzymes
|
||||
destination.dna.mutation_index = mutation_index
|
||||
|
||||
SEND_SIGNAL(destination, COMSIG_CARBON_IDENTITY_TRANSFERRED_TO, src, transfer_SE)
|
||||
|
||||
/datum/dna/proc/copy_dna(datum/dna/new_dna)
|
||||
new_dna.unique_enzymes = unique_enzymes
|
||||
new_dna.struc_enzymes = struc_enzymes
|
||||
new_dna.mutation_index = mutation_index
|
||||
new_dna.uni_identity = uni_identity
|
||||
new_dna.blood_type = blood_type
|
||||
new_dna.features = features.Copy()
|
||||
@@ -67,26 +70,32 @@
|
||||
new_dna.custom_species = custom_species
|
||||
new_dna.mutations = mutations.Copy()
|
||||
|
||||
/datum/dna/proc/add_mutation(mutation_name)
|
||||
var/datum/mutation/human/HM = GLOB.mutations_list[mutation_name]
|
||||
HM.on_acquiring(holder)
|
||||
//See mutation.dm for what 'class' does. 'time' is time till it removes itself in decimals. 0 for no timer
|
||||
/datum/dna/proc/add_mutation(mutation, class = MUT_OTHER, time)
|
||||
var/mutation_type = mutation
|
||||
if(istype(mutation, /datum/mutation/human))
|
||||
var/datum/mutation/human/HM = mutation
|
||||
mutation_type = HM.type
|
||||
if(get_mutation(mutation_type))
|
||||
return
|
||||
return force_give(new mutation_type (class, time, copymut = mutation))
|
||||
|
||||
/datum/dna/proc/remove_mutation(mutation_name)
|
||||
var/datum/mutation/human/HM = GLOB.mutations_list[mutation_name]
|
||||
HM.on_losing(holder)
|
||||
/datum/dna/proc/remove_mutation(mutation_type)
|
||||
return force_lose(get_mutation(mutation_type))
|
||||
|
||||
/datum/dna/proc/check_mutation(mutation_name)
|
||||
var/datum/mutation/human/HM = GLOB.mutations_list[mutation_name]
|
||||
return mutations.Find(HM)
|
||||
/datum/dna/proc/check_mutation(mutation_type)
|
||||
return get_mutation(mutation_type)
|
||||
|
||||
/datum/dna/proc/remove_all_mutations()
|
||||
remove_mutation_group(mutations)
|
||||
/datum/dna/proc/remove_all_mutations(list/classes = list(MUT_NORMAL, MUT_EXTRA, MUT_OTHER), mutadone = FALSE)
|
||||
remove_mutation_group(mutations, classes, mutadone)
|
||||
scrambled = FALSE
|
||||
|
||||
/datum/dna/proc/remove_mutation_group(list/group)
|
||||
/datum/dna/proc/remove_mutation_group(list/group, list/classes = list(MUT_NORMAL, MUT_EXTRA, MUT_OTHER), mutadone = FALSE)
|
||||
if(!group)
|
||||
return
|
||||
for(var/datum/mutation/human/HM in group)
|
||||
HM.force_lose(holder)
|
||||
if((HM.class in classes) && !(HM.mutadone_proof && mutadone))
|
||||
force_lose(HM)
|
||||
|
||||
/datum/dna/proc/generate_uni_identity()
|
||||
. = ""
|
||||
@@ -136,19 +145,49 @@
|
||||
. += random_string(DNA_BLOCK_SIZE,GLOB.hex_characters)
|
||||
return .
|
||||
|
||||
/datum/dna/proc/generate_struc_enzymes()
|
||||
var/list/sorting = new /list(DNA_STRUC_ENZYMES_BLOCKS)
|
||||
var/result = ""
|
||||
for(var/datum/mutation/human/A in GLOB.good_mutations + GLOB.bad_mutations + GLOB.not_good_mutations)
|
||||
if(A.name == RACEMUT && ismonkey(holder))
|
||||
sorting[A.dna_block] = num2hex(A.lowest_value + rand(0, 256 * 6), DNA_BLOCK_SIZE)
|
||||
mutations |= A
|
||||
else
|
||||
sorting[A.dna_block] = random_string(DNA_BLOCK_SIZE, list("0","1","2","3","4","5","6"))
|
||||
/datum/dna/proc/generate_dna_blocks()
|
||||
var/bonus
|
||||
if(species && species.inert_mutation)
|
||||
bonus = GET_INITIALIZED_MUTATION(species.inert_mutation)
|
||||
var/list/mutations_temp = GLOB.good_mutations + GLOB.bad_mutations + GLOB.not_good_mutations + bonus
|
||||
if(!LAZYLEN(mutations_temp))
|
||||
return
|
||||
mutation_index.Cut()
|
||||
shuffle_inplace(mutations_temp)
|
||||
if(ismonkey(holder))
|
||||
mutations |= new RACEMUT(MUT_NORMAL)
|
||||
mutation_index[RACEMUT] = GET_SEQUENCE(RACEMUT)
|
||||
else
|
||||
mutation_index[RACEMUT] = create_sequence(RACEMUT, FALSE)
|
||||
for(var/i in 2 to DNA_MUTATION_BLOCKS)
|
||||
var/datum/mutation/human/M = mutations_temp[i]
|
||||
mutation_index[M.type] = create_sequence(M.type, FALSE,M.difficulty)
|
||||
shuffle_inplace(mutation_index)
|
||||
|
||||
for(var/B in sorting)
|
||||
result += B
|
||||
return result
|
||||
//Used to generate original gene sequences for every mutation
|
||||
/proc/generate_gene_sequence(length=4)
|
||||
var/static/list/active_sequences = list("AT","TA","GC","CG")
|
||||
var/sequence
|
||||
for(var/i in 1 to length*DNA_SEQUENCE_LENGTH)
|
||||
sequence += pick(active_sequences)
|
||||
return sequence
|
||||
|
||||
//Used to create a chipped gene sequence
|
||||
/proc/create_sequence(mutation, active, difficulty)
|
||||
if(!difficulty)
|
||||
var/datum/mutation/human/A = GET_INITIALIZED_MUTATION(mutation) //leaves the possibility to change difficulty mid-round
|
||||
if(!A)
|
||||
return
|
||||
difficulty = A.difficulty
|
||||
difficulty += rand(-2,4)
|
||||
var/sequence = GET_SEQUENCE(mutation)
|
||||
if(active)
|
||||
return sequence
|
||||
while(difficulty)
|
||||
var/randnum = rand(1, length(sequence))
|
||||
sequence = copytext(sequence, 1, randnum) + "X" + copytext(sequence, randnum+1, length(sequence)+1)
|
||||
difficulty--
|
||||
return sequence
|
||||
|
||||
/datum/dna/proc/generate_unique_enzymes()
|
||||
. = ""
|
||||
@@ -201,12 +240,57 @@
|
||||
if(DNA_TAUR_BLOCK)
|
||||
construct_block(GLOB.taur_list.Find(features["taur"]), GLOB.taur_list.len)
|
||||
|
||||
//Please use add_mutation or activate_mutation instead
|
||||
/datum/dna/proc/force_give(datum/mutation/human/HM)
|
||||
if(holder && HM)
|
||||
if(HM.class == MUT_NORMAL)
|
||||
set_se(1, HM)
|
||||
. = HM.on_acquiring(holder)
|
||||
if(.)
|
||||
qdel(HM)
|
||||
update_instability()
|
||||
|
||||
//Use remove_mutation instead
|
||||
/datum/dna/proc/force_lose(datum/mutation/human/HM)
|
||||
if(holder && (HM in mutations))
|
||||
set_se(0, HM)
|
||||
. = HM.on_losing(holder)
|
||||
update_instability(FALSE)
|
||||
return
|
||||
|
||||
/datum/dna/proc/is_same_as(datum/dna/D)
|
||||
if(uni_identity == D.uni_identity && struc_enzymes == D.struc_enzymes && real_name == D.real_name && nameless == D.nameless && custom_species == D.custom_species)
|
||||
if(uni_identity == D.uni_identity && mutation_index == D.mutation_index && real_name == D.real_name && nameless == D.nameless && custom_species == D.custom_species)
|
||||
if(species.type == D.species.type && features == D.features && blood_type == D.blood_type)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/datum/dna/proc/update_instability(alert=TRUE)
|
||||
stability = 100
|
||||
for(var/datum/mutation/human/M in mutations)
|
||||
if(M.class == MUT_EXTRA)
|
||||
stability -= M.instability * GET_MUTATION_STABILIZER(M)
|
||||
if(holder)
|
||||
var/message
|
||||
if(alert)
|
||||
switch(stability)
|
||||
if(70 to 90)
|
||||
message = "<span class='warning'>You shiver.</span>"
|
||||
if(60 to 69)
|
||||
message = "<span class='warning'>You feel cold.</span>"
|
||||
if(40 to 59)
|
||||
message = "<span class='warning'>You feel sick.</span>"
|
||||
if(20 to 39)
|
||||
message = "<span class='warning'>It feels like your skin is moving.</span>"
|
||||
if(1 to 19)
|
||||
message = "<span class='warning'>You can feel your cells burning.</span>"
|
||||
if(-INFINITY to 0)
|
||||
message = "<span class='boldwarning'>You can feel your DNA exploding, we need to do something fast!</span>"
|
||||
if(stability <= 0)
|
||||
holder.apply_status_effect(STATUS_EFFECT_DNA_MELT)
|
||||
if(message)
|
||||
to_chat(holder, message)
|
||||
|
||||
|
||||
//used to update dna UI, UE, and dna.real_name.
|
||||
/datum/dna/proc/update_dna_identity()
|
||||
uni_identity = generate_uni_identity()
|
||||
@@ -217,8 +301,8 @@
|
||||
blood_type = newblood_type
|
||||
unique_enzymes = generate_unique_enzymes()
|
||||
uni_identity = generate_uni_identity()
|
||||
struc_enzymes = generate_struc_enzymes()
|
||||
features = random_features()
|
||||
generate_dna_blocks()
|
||||
features = random_features(species?.id)
|
||||
|
||||
|
||||
/datum/dna/stored //subtype used by brain mob's stored_dna
|
||||
@@ -232,10 +316,10 @@
|
||||
/datum/dna/stored/check_mutation(mutation_name)
|
||||
return
|
||||
|
||||
/datum/dna/stored/remove_all_mutations()
|
||||
/datum/dna/stored/remove_all_mutations(list/classes = list(MUT_NORMAL, MUT_EXTRA, MUT_OTHER), mutadone = FALSE)
|
||||
return
|
||||
|
||||
/datum/dna/stored/remove_mutation_group(list/group)
|
||||
/datum/dna/stored/remove_mutation_group(list/group, list/classes = list(MUT_NORMAL, MUT_EXTRA, MUT_OTHER), mutadone = FALSE)
|
||||
return
|
||||
|
||||
/////////////////////////// DNA MOB-PROCS //////////////////////
|
||||
@@ -270,6 +354,7 @@
|
||||
if(icon_update)
|
||||
update_body()
|
||||
update_hair()
|
||||
update_body_parts()
|
||||
update_mutations_overlay()// no lizard with human hulk overlay please.
|
||||
|
||||
|
||||
@@ -280,11 +365,10 @@
|
||||
return dna
|
||||
|
||||
|
||||
/mob/living/carbon/human/proc/hardset_dna(ui, se, newreal_name, newblood_type, datum/species/mrace, newfeatures)
|
||||
/mob/living/carbon/human/proc/hardset_dna(ui, list/mutation_index, newreal_name, newblood_type, datum/species/mrace, newfeatures)
|
||||
|
||||
if(newfeatures)
|
||||
dna.features = newfeatures
|
||||
flavor_text = dna.features["flavor_text"] //Update the flavor_text to use new dna text
|
||||
|
||||
if(mrace)
|
||||
var/datum/species/newrace = new mrace.type
|
||||
@@ -302,10 +386,12 @@
|
||||
dna.uni_identity = ui
|
||||
updateappearance(icon_update=0)
|
||||
|
||||
if(se)
|
||||
dna.struc_enzymes = se
|
||||
if(LAZYLEN(mutation_index))
|
||||
dna.mutation_index = mutation_index.Copy()
|
||||
domutcheck()
|
||||
|
||||
SEND_SIGNAL(src, COMSIG_HUMAN_HARDSET_DNA, ui, mutation_index, newreal_name, newblood_type, mrace, newfeatures)
|
||||
|
||||
if(mrace || newfeatures || ui)
|
||||
update_body()
|
||||
update_hair()
|
||||
@@ -355,19 +441,63 @@
|
||||
/mob/proc/domutcheck()
|
||||
return
|
||||
|
||||
/mob/living/carbon/domutcheck(force_powers=0) //Set force_powers to 1 to bypass the power chance
|
||||
/mob/living/carbon/domutcheck()
|
||||
if(!has_dna())
|
||||
return
|
||||
|
||||
for(var/datum/mutation/human/A in GLOB.good_mutations | GLOB.bad_mutations | GLOB.not_good_mutations)
|
||||
if(ismob(A.check_block(src, force_powers)))
|
||||
for(var/mutation in dna.mutation_index)
|
||||
if(ismob(dna.check_block(mutation)))
|
||||
return //we got monkeyized/humanized, this mob will be deleted, no need to continue.
|
||||
|
||||
update_mutations_overlay()
|
||||
|
||||
/datum/dna/proc/check_block(mutation)
|
||||
var/datum/mutation/human/HM = get_mutation(mutation)
|
||||
if(check_block_string(mutation))
|
||||
if(!HM)
|
||||
. = add_mutation(mutation, MUT_NORMAL)
|
||||
return
|
||||
return force_lose(HM)
|
||||
|
||||
//Return the active mutation of a type if there is one
|
||||
/datum/dna/proc/get_mutation(A)
|
||||
for(var/datum/mutation/human/HM in mutations)
|
||||
if(HM.type == A)
|
||||
return HM
|
||||
|
||||
/datum/dna/proc/check_block_string(mutation)
|
||||
if((LAZYLEN(mutation_index) > DNA_MUTATION_BLOCKS) || !(mutation in mutation_index))
|
||||
return 0
|
||||
return is_gene_active(mutation)
|
||||
|
||||
/datum/dna/proc/is_gene_active(mutation)
|
||||
return (mutation_index[mutation] == GET_SEQUENCE(mutation))
|
||||
|
||||
/datum/dna/proc/set_se(on=TRUE, datum/mutation/human/HM)
|
||||
if(!HM || !(HM.type in mutation_index) || (LAZYLEN(mutation_index) < DNA_MUTATION_BLOCKS))
|
||||
return
|
||||
. = TRUE
|
||||
if(on)
|
||||
mutation_index[HM.type] = GET_SEQUENCE(HM.type)
|
||||
else if(GET_SEQUENCE(HM.type) == mutation_index[HM.type])
|
||||
mutation_index[HM.type] = create_sequence(HM.type, FALSE, HM.difficulty)
|
||||
|
||||
/datum/dna/proc/activate_mutation(mutation) //note that this returns a boolean and not a new mob
|
||||
if(!mutation)
|
||||
return FALSE
|
||||
var/mutation_type = mutation
|
||||
if(istype(mutation, /datum/mutation/human))
|
||||
var/datum/mutation/human/M = mutation
|
||||
mutation_type = M.type
|
||||
if(!mutation_in_sequence(mutation_type)) //cant activate what we dont have, use add_mutation
|
||||
return FALSE
|
||||
add_mutation(mutation, MUT_NORMAL)
|
||||
return TRUE
|
||||
|
||||
|
||||
|
||||
/////////////////////////// DNA HELPER-PROCS //////////////////////////////
|
||||
|
||||
/proc/getleftblocks(input,blocknumber,blocksize)
|
||||
if(blocknumber > 1)
|
||||
return copytext_char(input,1,((blocksize*blocknumber)-(blocksize-1)))
|
||||
@@ -384,29 +514,47 @@
|
||||
return 0
|
||||
return getleftblocks(istring, blocknumber, blocksize) + replacement + getrightblocks(istring, blocknumber, blocksize)
|
||||
|
||||
/datum/dna/proc/mutation_in_sequence(mutation)
|
||||
if(!mutation)
|
||||
return
|
||||
if(istype(mutation, /datum/mutation/human))
|
||||
var/datum/mutation/human/HM = mutation
|
||||
if(HM.type in mutation_index)
|
||||
return TRUE
|
||||
else if(mutation in mutation_index)
|
||||
return TRUE
|
||||
|
||||
/mob/living/carbon/proc/randmut(list/candidates, difficulty = 2)
|
||||
if(!has_dna())
|
||||
return
|
||||
var/datum/mutation/human/num = pick(candidates)
|
||||
. = num.force_give(src)
|
||||
var/mutation = pick(candidates)
|
||||
. = dna.add_mutation(mutation)
|
||||
|
||||
/mob/living/carbon/proc/randmutb()
|
||||
/mob/living/carbon/proc/easy_randmut(quality = POSITIVE + NEGATIVE + MINOR_NEGATIVE, scrambled = TRUE, sequence = TRUE, exclude_monkey = TRUE)
|
||||
if(!has_dna())
|
||||
return
|
||||
var/datum/mutation/human/HM = pick((GLOB.bad_mutations | GLOB.not_good_mutations) - GLOB.mutations_list[RACEMUT])
|
||||
. = HM.force_give(src)
|
||||
var/list/mutations = list()
|
||||
if(quality & POSITIVE)
|
||||
mutations += GLOB.good_mutations
|
||||
if(quality & NEGATIVE)
|
||||
mutations += GLOB.bad_mutations
|
||||
if(quality & MINOR_NEGATIVE)
|
||||
mutations += GLOB.not_good_mutations
|
||||
var/list/possible = list()
|
||||
for(var/datum/mutation/human/A in mutations)
|
||||
if((!sequence || dna.mutation_in_sequence(A.type)) && !dna.get_mutation(A.type))
|
||||
possible += A.type
|
||||
if(exclude_monkey)
|
||||
possible.Remove(RACEMUT)
|
||||
if(LAZYLEN(possible))
|
||||
var/mutation = pick(possible)
|
||||
. = dna.activate_mutation(mutation)
|
||||
if(scrambled)
|
||||
var/datum/mutation/human/HM = dna.get_mutation(mutation)
|
||||
if(HM)
|
||||
HM.scrambled = TRUE
|
||||
return TRUE
|
||||
|
||||
/mob/living/carbon/proc/randmutg()
|
||||
if(!has_dna())
|
||||
return
|
||||
var/datum/mutation/human/HM = pick(GLOB.good_mutations)
|
||||
. = HM.force_give(src)
|
||||
|
||||
/mob/living/carbon/proc/randmutvg()
|
||||
if(!has_dna())
|
||||
return
|
||||
var/datum/mutation/human/HM = pick((GLOB.good_mutations) - GLOB.mutations_list[HULK] - GLOB.mutations_list[DWARFISM])
|
||||
. = HM.force_give(src)
|
||||
|
||||
/mob/living/carbon/proc/randmuti()
|
||||
if(!has_dna())
|
||||
@@ -429,9 +577,9 @@
|
||||
if(!M.has_dna())
|
||||
return 0
|
||||
if(se)
|
||||
for(var/i=1, i<=DNA_STRUC_ENZYMES_BLOCKS, i++)
|
||||
for(var/i=1, i<=DNA_MUTATION_BLOCKS, i++)
|
||||
if(prob(probability))
|
||||
M.dna.struc_enzymes = setblock(M.dna.struc_enzymes, i, random_string(DNA_BLOCK_SIZE, GLOB.hex_characters))
|
||||
M.dna.generate_dna_blocks()
|
||||
M.domutcheck()
|
||||
if(ui)
|
||||
for(var/i=1, i<=DNA_UNI_IDENTITY_BLOCKS, i++)
|
||||
@@ -458,3 +606,41 @@
|
||||
return value
|
||||
|
||||
/////////////////////////// DNA HELPER-PROCS
|
||||
|
||||
/mob/living/carbon/human/proc/something_horrible()
|
||||
if(!has_dna()) //shouldn't ever happen anyway so it's just in really weird cases
|
||||
return
|
||||
if(dna.stability > 0)
|
||||
return
|
||||
var/instability = -dna.stability
|
||||
dna.remove_all_mutations()
|
||||
dna.stability = 100
|
||||
if(prob(max(70-instability,0)))
|
||||
switch(rand(0,3)) //not complete and utter death
|
||||
if(0)
|
||||
monkeyize()
|
||||
if(1)
|
||||
gain_trauma(/datum/brain_trauma/severe/paralysis)
|
||||
if(2)
|
||||
corgize()
|
||||
if(3)
|
||||
to_chat(src, "<span class='notice'>Oh, we actually feel quite alright!</span>")
|
||||
else
|
||||
switch(rand(0,3))
|
||||
if(0)
|
||||
gib()
|
||||
if(1)
|
||||
dust()
|
||||
|
||||
if(2)
|
||||
death()
|
||||
petrify(INFINITY)
|
||||
if(3)
|
||||
if(prob(90))
|
||||
var/obj/item/bodypart/BP = get_bodypart(pick(BODY_ZONE_CHEST,BODY_ZONE_HEAD))
|
||||
if(BP)
|
||||
BP.dismember()
|
||||
else
|
||||
gib()
|
||||
else
|
||||
set_species(/datum/species/dullahan)
|
||||
|
||||
@@ -0,0 +1,146 @@
|
||||
GLOBAL_LIST_EMPTY(mobs_with_editable_flavor_text) //et tu, hacky code
|
||||
|
||||
/datum/element/flavor_text
|
||||
element_flags = ELEMENT_BESPOKE|ELEMENT_DETACH
|
||||
id_arg_index = 3
|
||||
var/flavor_name = "Flavor Text"
|
||||
var/list/texts_by_atom = list()
|
||||
var/addendum = "This can also be used for OOC notes and preferences!"
|
||||
var/always_show = FALSE
|
||||
var/max_len = MAX_FLAVOR_LEN
|
||||
var/can_edit = TRUE
|
||||
|
||||
/datum/element/flavor_text/Attach(datum/target, text = "", _name = "Flavor Text", _addendum, _max_len = MAX_FLAVOR_LEN, _always_show = FALSE, _edit = TRUE)
|
||||
. = ..()
|
||||
|
||||
if(. == ELEMENT_INCOMPATIBLE || !isatom(target)) //no reason why this shouldn't work on atoms too.
|
||||
return ELEMENT_INCOMPATIBLE
|
||||
|
||||
if(_max_len)
|
||||
max_len = _max_len
|
||||
texts_by_atom[target] = copytext(text, 1, max_len)
|
||||
if(_name)
|
||||
flavor_name = _name
|
||||
if(!isnull(addendum))
|
||||
addendum = _addendum
|
||||
always_show = _always_show
|
||||
can_edit = _edit
|
||||
|
||||
RegisterSignal(target, COMSIG_PARENT_EXAMINE, .proc/show_flavor)
|
||||
|
||||
if(can_edit && ismob(target)) //but only mobs receive the proc/verb for the time being
|
||||
var/mob/M = target
|
||||
LAZYOR(GLOB.mobs_with_editable_flavor_text[M], src)
|
||||
M.verbs |= /mob/proc/manage_flavor_tests
|
||||
|
||||
/datum/element/flavor_text/Detach(atom/A)
|
||||
. = ..()
|
||||
UnregisterSignal(A, COMSIG_PARENT_EXAMINE)
|
||||
texts_by_atom -= A
|
||||
if(can_edit && ismob(A))
|
||||
var/mob/M = A
|
||||
LAZYREMOVE(GLOB.mobs_with_editable_flavor_text[M], src)
|
||||
if(!GLOB.mobs_with_editable_flavor_text[M])
|
||||
GLOB.mobs_with_editable_flavor_text -= M
|
||||
M.verbs -= /mob/proc/manage_flavor_tests
|
||||
|
||||
/datum/element/flavor_text/proc/show_flavor(atom/target, mob/user, list/examine_list)
|
||||
if(!always_show && isliving(target))
|
||||
var/mob/living/L = target
|
||||
var/unknown = L.get_visible_name() == "Unknown"
|
||||
if(!unknown && iscarbon(target))
|
||||
var/mob/living/carbon/C = L
|
||||
unknown = (C.wear_mask && (C.wear_mask.flags_inv & HIDEFACE)) || (C.head && (C.head.flags_inv & HIDEFACE))
|
||||
if(unknown)
|
||||
if(!("...?" in examine_list)) //can't think of anything better in case of multiple flavor texts.
|
||||
examine_list += "...?"
|
||||
return
|
||||
var/text = texts_by_atom[target]
|
||||
if(!text)
|
||||
return
|
||||
var/msg = replacetext(text, "\n", " ")
|
||||
if(length_char(msg) <= 40)
|
||||
examine_list += "<span class='notice'>[msg]</span>"
|
||||
else
|
||||
examine_list += "<span class='notice'>[copytext_char(msg, 1, 37)]... <a href='?src=[REF(src)];show_flavor=[REF(target)]'>More...</span></a>"
|
||||
|
||||
/datum/element/flavor_text/Topic(href, href_list)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
if(href_list["show_flavor"])
|
||||
var/atom/target = locate(href_list["show_flavor"])
|
||||
var/text = texts_by_atom[target]
|
||||
if(text)
|
||||
usr << browse("<HTML><HEAD><TITLE>[target.name]</TITLE></HEAD><BODY><TT>[replacetext(texts_by_atom[target], "\n", "<BR>")]</TT></BODY></HTML>", "window=[target.name];size=500x200")
|
||||
onclose(usr, "[target.name]")
|
||||
return TRUE
|
||||
|
||||
/mob/proc/manage_flavor_tests()
|
||||
set name = "Manage Flavor Texts"
|
||||
set desc = "Used to manage your various flavor texts."
|
||||
set category = "IC"
|
||||
|
||||
var/list/L = GLOB.mobs_with_editable_flavor_text[src]
|
||||
|
||||
if(length(L) == 1)
|
||||
var/datum/element/flavor_text/F = L[1]
|
||||
F.set_flavor(src)
|
||||
return
|
||||
|
||||
var/list/choices = list()
|
||||
|
||||
for(var/i in L)
|
||||
var/datum/element/flavor_text/F = i
|
||||
choices[F.flavor_name] = F
|
||||
|
||||
var/chosen = input(src, "Which flavor text would you like to modify?") as null|anything in choices
|
||||
if(!chosen)
|
||||
return
|
||||
var/datum/element/flavor_text/F = choices[chosen]
|
||||
F.set_flavor(src)
|
||||
|
||||
/datum/element/flavor_text/proc/set_flavor(mob/user)
|
||||
if(!(user in texts_by_atom))
|
||||
return FALSE
|
||||
|
||||
var/lower_name = lowertext(flavor_name)
|
||||
var/new_text = stripped_multiline_input(user, "Set the [lower_name] displayed on 'examine'. [addendum]", flavor_name, texts_by_atom[usr], max_len, TRUE)
|
||||
if(!isnull(new_text) && (user in texts_by_atom))
|
||||
texts_by_atom[user] = html_decode(new_text)
|
||||
to_chat(src, "Your [lower_name] has been updated.")
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
//subtypes with additional hooks for DNA and preferences.
|
||||
/datum/element/flavor_text/carbon
|
||||
|
||||
/datum/element/flavor_text/carbon/Attach(datum/target, text = "", _name = "Flavor Text", _addendum, _max_len = MAX_FLAVOR_LEN, _always_show = FALSE, _edit = TRUE)
|
||||
if(!iscarbon(target))
|
||||
return ELEMENT_INCOMPATIBLE
|
||||
. = ..()
|
||||
if(. == ELEMENT_INCOMPATIBLE)
|
||||
return
|
||||
RegisterSignal(target, COMSIG_CARBON_IDENTITY_TRANSFERRED_TO, .proc/update_dna_flavor_text)
|
||||
if(ishuman(target))
|
||||
RegisterSignal(target, COMSIG_HUMAN_PREFS_COPIED_TO, .proc/update_prefs_flavor_text)
|
||||
RegisterSignal(target, COMSIG_HUMAN_HARDSET_DNA, .proc/update_dna_flavor_text)
|
||||
RegisterSignal(target, COMSIG_HUMAN_ON_RANDOMIZE, .proc/unset_flavor)
|
||||
|
||||
/datum/element/flavor_text/carbon/Detach(mob/living/carbon/C)
|
||||
. = ..()
|
||||
UnregisterSignal(C, list(COMSIG_CARBON_IDENTITY_TRANSFERRED_TO, COMSIG_HUMAN_PREFS_COPIED_TO, COMSIG_HUMAN_HARDSET_DNA, COMSIG_HUMAN_ON_RANDOMIZE))
|
||||
|
||||
/datum/element/flavor_text/carbon/proc/update_dna_flavor_text(mob/living/carbon/C)
|
||||
texts_by_atom[C] = C.dna.features["flavor_text"]
|
||||
|
||||
/datum/element/flavor_text/carbon/proc/update_prefs_flavor_text(mob/living/carbon/human/H, datum/preferences/P, icon_updates = TRUE, roundstart_checks = TRUE)
|
||||
texts_by_atom[H] = P.features["flavor_text"]
|
||||
|
||||
/datum/element/flavor_text/carbon/set_flavor(mob/living/carbon/user)
|
||||
. = ..()
|
||||
if(. && user.dna)
|
||||
user.dna.features["flavor_text"] = texts_by_atom[user]
|
||||
|
||||
/datum/element/flavor_text/carbon/proc/unset_flavor(mob/living/carbon/user)
|
||||
texts_by_atom[user] = ""
|
||||
@@ -138,7 +138,7 @@
|
||||
destination = get_turf(loc)
|
||||
AM.forceMove(destination)
|
||||
|
||||
/obj/item/clothing/head/mob_holder/dropped()
|
||||
/obj/item/clothing/head/mob_holder/dropped(mob/user)
|
||||
. = ..()
|
||||
if(held_mob && isturf(loc))//don't release on soft-drops
|
||||
release()
|
||||
|
||||
@@ -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>")
|
||||
|
||||
@@ -5,23 +5,20 @@
|
||||
var/id = "" //ID, used by mind/has_martialartcode\game\objects\items\granters.dm:345:error: user.mind.has_martialart: undefined proccode\game\objects\items\granters.dm:345:error: user.mind.has_martialart: undefined proccode\game\objects\items\granters.dm:345:error: user.mind.has_martialart: undefined proccode\game\objects\items\granters.dm:345:error: user.mind.has_martialart: undefined proccode\game\objects\items\granters.dm:345:error: user.mind.has_martialart: undefined proc
|
||||
var/current_target
|
||||
var/datum/martial_art/base // The permanent style. This will be null unless the martial art is temporary
|
||||
var/deflection_chance = 0 //Chance to deflect projectiles
|
||||
var/reroute_deflection = FALSE //Delete the bullet, or actually deflect it in some direction?
|
||||
var/block_chance = 0 //Chance to block melee attacks using items while on throw mode.
|
||||
var/dodge_chance = 0
|
||||
var/restraining = 0 //used in cqc's disarm_act to check if the disarmed is being restrained and so whether they should be put in a chokehold or not
|
||||
var/help_verb
|
||||
var/pacifism_check = TRUE //are the martial arts combos/attacks unable to be used by pacifist.
|
||||
var/allow_temp_override = TRUE //if this martial art can be overridden by temporary martial arts
|
||||
|
||||
/datum/martial_art/proc/disarm_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
/datum/martial_art/proc/harm_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
/datum/martial_art/proc/grab_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
/datum/martial_art/proc/can_use(mob/living/carbon/human/H)
|
||||
return TRUE
|
||||
@@ -38,51 +35,6 @@
|
||||
current_target = new_target
|
||||
streak = ""
|
||||
|
||||
/datum/martial_art/proc/basic_hit(mob/living/carbon/human/A,mob/living/carbon/human/D)
|
||||
|
||||
var/damage = rand(A.dna.species.punchdamagelow, A.dna.species.punchdamagehigh)
|
||||
|
||||
var/atk_verb = A.dna.species.attack_verb
|
||||
if(D.lying)
|
||||
atk_verb = "kick"
|
||||
|
||||
switch(atk_verb)
|
||||
if("kick")
|
||||
A.do_attack_animation(D, ATTACK_EFFECT_KICK)
|
||||
if("slash")
|
||||
A.do_attack_animation(D, ATTACK_EFFECT_CLAW)
|
||||
if("smash")
|
||||
A.do_attack_animation(D, ATTACK_EFFECT_SMASH)
|
||||
else
|
||||
A.do_attack_animation(D, ATTACK_EFFECT_PUNCH)
|
||||
|
||||
if(!damage)
|
||||
playsound(D.loc, A.dna.species.miss_sound, 25, 1, -1)
|
||||
D.visible_message("<span class='warning'>[A] has attempted to [atk_verb] [D]!</span>", \
|
||||
"<span class='userdanger'>[A] has attempted to [atk_verb] [D]!</span>", null, COMBAT_MESSAGE_RANGE)
|
||||
log_combat(A, D, "attempted to [atk_verb]")
|
||||
return 0
|
||||
|
||||
var/obj/item/bodypart/affecting = D.get_bodypart(ran_zone(A.zone_selected))
|
||||
var/armor_block = D.run_armor_check(affecting, "melee")
|
||||
|
||||
playsound(D.loc, A.dna.species.attack_sound, 25, 1, -1)
|
||||
D.visible_message("<span class='danger'>[A] has [atk_verb]ed [D]!</span>", \
|
||||
"<span class='userdanger'>[A] has [atk_verb]ed [D]!</span>", null, COMBAT_MESSAGE_RANGE)
|
||||
|
||||
D.apply_damage(damage, BRUTE, affecting, armor_block)
|
||||
|
||||
log_combat(A, D, "punched")
|
||||
|
||||
if((D.stat != DEAD) && damage >= A.dna.species.punchstunthreshold)
|
||||
D.visible_message("<span class='danger'>[A] has knocked [D] down!!</span>", \
|
||||
"<span class='userdanger'>[A] has knocked [D] down!</span>")
|
||||
D.apply_effect(40, EFFECT_KNOCKDOWN, armor_block)
|
||||
D.forcesay(GLOB.hit_appends)
|
||||
else if(D.lying)
|
||||
D.forcesay(GLOB.hit_appends)
|
||||
return 1
|
||||
|
||||
/datum/martial_art/proc/teach(mob/living/carbon/human/H, make_temporary = FALSE)
|
||||
if(!istype(H) || !H.mind)
|
||||
return FALSE
|
||||
@@ -121,3 +73,7 @@
|
||||
if(help_verb)
|
||||
H.verbs -= help_verb
|
||||
return
|
||||
|
||||
///Gets called when a projectile hits the owner. Returning anything other than BULLET_ACT_HIT will stop the projectile from hitting the mob.
|
||||
/datum/martial_art/proc/on_projectile_hit(mob/living/carbon/human/A, obj/item/projectile/P, def_zone)
|
||||
return BULLET_ACT_HIT
|
||||
+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
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user