MultiZ Layenia Base
@@ -10,8 +10,16 @@
|
||||
},
|
||||
"traits":[
|
||||
{
|
||||
"Up": 1,
|
||||
"Gravity":true,
|
||||
"Baseturf":"/turf/open/chasm/cloud"
|
||||
"Baseturf":"/turf/open/chasm/cloud",
|
||||
"Linkage" : "Cross"
|
||||
},
|
||||
{
|
||||
"Down": -1,
|
||||
"Gravity":true,
|
||||
"Baseturf":"/turf/open/transparent/openspace",
|
||||
"Linkage" : "Cross"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -2482,11 +2482,6 @@
|
||||
name = "Bartenders Back Room"
|
||||
},
|
||||
/area/centcom/control)
|
||||
"cnW" = (
|
||||
/obj/structure/fans/tiny,
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/centcom/ferry)
|
||||
"coE" = (
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
@@ -3701,6 +3696,20 @@
|
||||
/obj/item/stack/packageWrap,
|
||||
/turf/open/floor/plasteel/cafeteria,
|
||||
/area/centcom/holding)
|
||||
"dzb" = (
|
||||
/obj/machinery/door/airlock/external{
|
||||
name = "Ferry Airlock"
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/fans/tiny,
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/centcom/ferry)
|
||||
"dzX" = (
|
||||
/obj/item/twohanded/required/kirbyplants{
|
||||
icon_state = "plant-21"
|
||||
@@ -4251,18 +4260,6 @@
|
||||
},
|
||||
/turf/closed/indestructible/riveted,
|
||||
/area/space)
|
||||
"dUw" = (
|
||||
/obj/machinery/door/airlock/external{
|
||||
name = "Ferry Airlock"
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/centcom/ferry)
|
||||
"dUD" = (
|
||||
/obj/structure/chair{
|
||||
dir = 1
|
||||
@@ -4637,10 +4634,6 @@
|
||||
/area/abductor_ship)
|
||||
"ejO" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/razor{
|
||||
pixel_x = 2;
|
||||
pixel_y = 5
|
||||
},
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/centcom/ferry)
|
||||
"ejW" = (
|
||||
@@ -9340,17 +9333,12 @@
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/centcom/ferry)
|
||||
"iFk" = (
|
||||
/obj/docking_port/stationary{
|
||||
dir = 8;
|
||||
dwidth = 2;
|
||||
height = 13;
|
||||
id = "ferry_away";
|
||||
json_key = "ferry";
|
||||
name = "CentCom Ferry Dock";
|
||||
width = 5
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/space,
|
||||
/area/space)
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/centcom/ferry)
|
||||
"iFv" = (
|
||||
/obj/effect/turf_decal/tile/brown{
|
||||
dir = 8
|
||||
@@ -12939,6 +12927,7 @@
|
||||
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/centcom/ferry)
|
||||
"mei" = (
|
||||
@@ -13080,9 +13069,6 @@
|
||||
/obj/item/storage/pill_bottle/mutarad{
|
||||
pixel_x = -7
|
||||
},
|
||||
/obj/item/razor{
|
||||
pixel_y = 12
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
dir = 4;
|
||||
pixel_x = 10;
|
||||
@@ -16184,6 +16170,18 @@
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/ctf)
|
||||
"oXv" = (
|
||||
/obj/docking_port/stationary{
|
||||
dir = 8;
|
||||
dwidth = 5;
|
||||
height = 13;
|
||||
id = "ferry_away";
|
||||
json_key = "ferry";
|
||||
name = "CentCom Ferry Dock";
|
||||
width = 11
|
||||
},
|
||||
/turf/open/space,
|
||||
/area/space)
|
||||
"oXF" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/camera/spooky,
|
||||
@@ -16861,7 +16859,6 @@
|
||||
"pFm" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/surgical_drapes,
|
||||
/obj/item/razor,
|
||||
/turf/open/floor/holofloor{
|
||||
icon_state = "white"
|
||||
},
|
||||
@@ -59745,7 +59742,7 @@ fWS
|
||||
fWS
|
||||
fWS
|
||||
fWS
|
||||
fWS
|
||||
oXv
|
||||
fWS
|
||||
fWS
|
||||
fWS
|
||||
@@ -60001,9 +59998,9 @@ cJc
|
||||
eRA
|
||||
eRA
|
||||
fWS
|
||||
fWS
|
||||
fWS
|
||||
fWS
|
||||
eRA
|
||||
dzb
|
||||
eRA
|
||||
fWS
|
||||
fWS
|
||||
fWS
|
||||
@@ -60258,9 +60255,9 @@ txL
|
||||
iyB
|
||||
eRA
|
||||
fWS
|
||||
fWS
|
||||
eRA
|
||||
iFk
|
||||
fWS
|
||||
eRA
|
||||
fWS
|
||||
fWS
|
||||
fWS
|
||||
@@ -60516,7 +60513,7 @@ hFM
|
||||
eDP
|
||||
fWS
|
||||
eRA
|
||||
dUw
|
||||
iFk
|
||||
eRA
|
||||
fWS
|
||||
eDP
|
||||
@@ -60773,7 +60770,7 @@ uYp
|
||||
eDP
|
||||
cQu
|
||||
eRA
|
||||
cnW
|
||||
iFk
|
||||
eRA
|
||||
pMV
|
||||
eDP
|
||||
|
||||
@@ -1,292 +1,755 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
"cn" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/arrivals{
|
||||
icon_state = "arrivals22"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"cw" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/arrivals{
|
||||
icon_state = "arrivals38"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"cO" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/arrivals{
|
||||
icon_state = "arrivals29"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"de" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/arrivals{
|
||||
icon_state = "arrivals33"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"dO" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/arrivals{
|
||||
icon_state = "arrivals42"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"eb" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/arrivals{
|
||||
icon_state = "arrivals45"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"fF" = (
|
||||
/obj/structure/chair/comfy/shuttle{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
icon_state = "drain";
|
||||
name = "drain"
|
||||
},
|
||||
/turf/open/floor/plasteel/dark{
|
||||
dir = 1;
|
||||
icon_state = "darkfull_plate"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"fS" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/arrivals{
|
||||
icon_state = "arrivals1"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"gu" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/arrivals{
|
||||
icon_state = "arrivals15"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"gC" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/arrivals{
|
||||
icon_state = "arrivals35"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"gK" = (
|
||||
/obj/structure/window/reinforced/fulltile,
|
||||
/obj/structure/flora/ausbushes/ywflowers,
|
||||
/obj/structure/flora/ausbushes/brflowers,
|
||||
/obj/structure/flora/ausbushes/grassybush,
|
||||
/obj/machinery/light{
|
||||
pixel_y = -1
|
||||
},
|
||||
/turf/open/floor/grass,
|
||||
/area/shuttle/arrival)
|
||||
"gN" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/arrivals{
|
||||
icon_state = "arrivals20"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"jg" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/arrivals{
|
||||
icon_state = "arrivals47"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"kq" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/arrivals{
|
||||
icon_state = "arrivals10"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"ks" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/arrivals{
|
||||
icon_state = "arrivals25"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"kF" = (
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 9
|
||||
},
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
dir = 1;
|
||||
icon_state = "drain";
|
||||
name = "drain"
|
||||
},
|
||||
/obj/item/radio/intercom{
|
||||
pixel_x = -30
|
||||
},
|
||||
/turf/open/floor/plasteel/dark{
|
||||
dir = 1;
|
||||
icon_state = "darkfull_trim"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"lo" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/arrivals{
|
||||
icon_state = "arrivals46"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"lt" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/arrivals{
|
||||
icon_state = "arrivals49"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"lE" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/arrivals{
|
||||
icon_state = "arrivals44"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"mi" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/arrivals{
|
||||
icon_state = "arrivals2"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"mA" = (
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
color = "#55391A";
|
||||
icon_state = "siding_wood_line";
|
||||
name = "wood"
|
||||
},
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
color = "#55391A";
|
||||
dir = 1;
|
||||
icon_state = "siding_wood_line";
|
||||
name = "wood"
|
||||
},
|
||||
/turf/open/floor/wood{
|
||||
icon_state = "wood_tile";
|
||||
name = "tile"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"nC" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/arrivals{
|
||||
icon_state = "arrivals41"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"nO" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/arrivals{
|
||||
icon_state = "arrivals4"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"ov" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/arrivals{
|
||||
icon_state = "arrivals48"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"oD" = (
|
||||
/obj/structure/fans/tiny,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/door/airlock/titanium{
|
||||
name = "Arrivals Shuttle Airlock"
|
||||
},
|
||||
/turf/open/floor/plasteel/dark{
|
||||
icon_state = "darkfull_whole_alt"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"ph" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/arrivals{
|
||||
icon_state = "arrivals3"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"pB" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/arrivals{
|
||||
icon_state = "arrivals37"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"pZ" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/arrivals{
|
||||
icon_state = "arrivals9"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"qa" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/arrivals{
|
||||
icon_state = "arrivals26"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"qw" = (
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 9
|
||||
},
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
dir = 1;
|
||||
icon_state = "drain";
|
||||
name = "drain"
|
||||
},
|
||||
/turf/open/floor/plasteel/dark{
|
||||
dir = 1;
|
||||
icon_state = "darkfull_trim"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"qz" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/arrivals{
|
||||
icon_state = "arrivals53"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"qS" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/arrivals{
|
||||
icon_state = "arrivals21"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"rC" = (
|
||||
/obj/structure/window/reinforced/fulltile,
|
||||
/obj/structure/flora/ausbushes/ywflowers,
|
||||
/obj/structure/flora/ausbushes/ppflowers,
|
||||
/obj/structure/flora/ausbushes/sparsegrass,
|
||||
/turf/open/floor/grass,
|
||||
/area/shuttle/arrival)
|
||||
"sd" = (
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 6
|
||||
},
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
icon_state = "drain";
|
||||
name = "drain"
|
||||
},
|
||||
/obj/item/radio/intercom{
|
||||
pixel_x = -30
|
||||
},
|
||||
/turf/open/floor/plasteel/dark{
|
||||
icon_state = "darkfull_trim"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"sk" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/arrivals{
|
||||
icon_state = "arrivals39"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"uf" = (
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/chair/comfy/shuttle,
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
dir = 1;
|
||||
icon_state = "drain";
|
||||
name = "drain"
|
||||
},
|
||||
/turf/open/floor/plasteel/dark{
|
||||
icon_state = "darkfull_plate"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"uC" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/arrivals{
|
||||
icon_state = "arrivals13"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"vk" = (
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 6
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 9
|
||||
},
|
||||
/turf/open/floor/plasteel/dark{
|
||||
icon_state = "darkfull_whole_alt"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"xW" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/arrivals{
|
||||
icon_state = "arrivals27"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"yl" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/arrivals{
|
||||
icon_state = "arrivals51"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"yU" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/arrivals{
|
||||
icon_state = "arrivals28"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"ze" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/arrivals{
|
||||
icon_state = "arrivals31"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"zV" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/arrivals{
|
||||
icon_state = "arrivals40"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"Al" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/arrivals{
|
||||
icon_state = "arrivals32"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"CA" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/arrivals{
|
||||
icon_state = "arrivals12"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"Dm" = (
|
||||
/obj/machinery/light{
|
||||
pixel_y = -1
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 9
|
||||
},
|
||||
/obj/structure/closet/emcloset{
|
||||
anchored = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/dark{
|
||||
dir = 1;
|
||||
icon_state = "darkfull_plate"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"EA" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/arrivals{
|
||||
icon_state = "arrivals6"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"HU" = (
|
||||
/obj/structure/fans/tiny,
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
/obj/machinery/door/airlock/titanium{
|
||||
name = "Arrivals Shuttle Airlock"
|
||||
},
|
||||
/turf/open/floor/plasteel/dark{
|
||||
icon_state = "darkfull_whole_alt"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"Il" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/arrivals{
|
||||
icon_state = "arrivals18"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"JU" = (
|
||||
/obj/structure/chair/comfy/shuttle{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 6
|
||||
},
|
||||
/turf/open/floor/plasteel/dark{
|
||||
icon_state = "darkfull_plate"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"Kb" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/arrivals{
|
||||
icon_state = "arrivals52"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"KB" = (
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"b" = (
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
"KN" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/arrivals{
|
||||
icon_state = "arrivals16"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"c" = (
|
||||
"Lv" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/arrivals{
|
||||
icon_state = "arrivals19"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"My" = (
|
||||
/obj/machinery/door/airlock/titanium{
|
||||
name = "Arrivals Shuttle Airlock"
|
||||
},
|
||||
/obj/structure/fans/tiny,
|
||||
/turf/open/floor/plating,
|
||||
/obj/effect/turf_decal/delivery/white,
|
||||
/turf/open/floor/plasteel/dark{
|
||||
icon_state = "darkfull_whole_alt"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"d" = (
|
||||
/obj/effect/spawner/structure/window/shuttle,
|
||||
/turf/open/floor/plating,
|
||||
"Ov" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/arrivals{
|
||||
icon_state = "arrivals7"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"e" = (
|
||||
"OQ" = (
|
||||
/obj/structure/window/reinforced/fulltile,
|
||||
/obj/structure/flora/ausbushes/ywflowers,
|
||||
/obj/structure/flora/ausbushes/brflowers,
|
||||
/obj/structure/flora/ausbushes/leafybush,
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/grass,
|
||||
/area/shuttle/arrival)
|
||||
"OT" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/arrivals{
|
||||
icon_state = "arrivals50"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"Pb" = (
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 6
|
||||
},
|
||||
/obj/structure/table,
|
||||
/obj/item/storage/firstaid/regular,
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/turf/open/floor/plasteel/dark{
|
||||
icon_state = "darkfull_plate"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"f" = (
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
"Pr" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/arrivals{
|
||||
icon_state = "arrivals24"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"g" = (
|
||||
/obj/machinery/computer/arcade,
|
||||
"PR" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/arrivals{
|
||||
icon_state = "arrivals23"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"Qd" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/arrivals{
|
||||
icon_state = "arrivals34"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"QB" = (
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
color = "#55391A";
|
||||
dir = 8;
|
||||
icon_state = "siding_wood_line";
|
||||
name = "wood"
|
||||
},
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
color = "#55391A";
|
||||
icon_state = "siding_wood_line";
|
||||
name = "wood"
|
||||
},
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
color = "#55391A";
|
||||
dir = 1;
|
||||
icon_state = "siding_wood_line";
|
||||
name = "wood"
|
||||
},
|
||||
/turf/open/floor/wood{
|
||||
icon_state = "wood_tile";
|
||||
name = "tile"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"QK" = (
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 6
|
||||
},
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
icon_state = "drain";
|
||||
name = "drain"
|
||||
},
|
||||
/turf/open/floor/plasteel/dark{
|
||||
icon_state = "darkfull_trim"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"Sb" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/arrivals{
|
||||
icon_state = "arrivals0"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"Sp" = (
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
pixel_y = -1
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/arrival)
|
||||
"h" = (
|
||||
/obj/structure/closet/wardrobe/green,
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/arrival)
|
||||
"i" = (
|
||||
/obj/structure/closet/wardrobe/black,
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/arrival)
|
||||
"j" = (
|
||||
/obj/structure/closet/wardrobe/mixed,
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/arrival)
|
||||
"k" = (
|
||||
/obj/structure/closet/wardrobe/grey,
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/arrival)
|
||||
"l" = (
|
||||
/obj/machinery/requests_console{
|
||||
department = "Arrival shuttle";
|
||||
name = "Arrivals Shuttle console";
|
||||
pixel_y = 30
|
||||
},
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/arrival)
|
||||
"m" = (
|
||||
/obj/structure/shuttle/engine/heater{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/shuttle/arrival)
|
||||
"n" = (
|
||||
/obj/structure/shuttle/engine/propulsion/burst/right{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/shuttle/arrival)
|
||||
"o" = (
|
||||
/obj/structure/window/shuttle,
|
||||
/obj/structure/grille,
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/arrival)
|
||||
"p" = (
|
||||
/obj/structure/chair/comfy/shuttle,
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/arrival)
|
||||
"q" = (
|
||||
/obj/structure/chair/comfy/shuttle,
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/arrival)
|
||||
"r" = (
|
||||
/obj/structure/chair/comfy/shuttle{
|
||||
dir = 8
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
icon_state = "drain";
|
||||
name = "drain"
|
||||
},
|
||||
/turf/open/floor/plasteel/dark{
|
||||
dir = 1;
|
||||
icon_state = "darkfull_plate"
|
||||
},
|
||||
/turf/open/floor/mineral/titanium,
|
||||
/area/shuttle/arrival)
|
||||
"s" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
dir = 4
|
||||
"SE" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/arrivals{
|
||||
icon_state = "arrivals5"
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/shuttle/arrival)
|
||||
"t" = (
|
||||
/obj/machinery/door/airlock/titanium{
|
||||
name = "Arrivals Shuttle Airlock"
|
||||
"TW" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/arrivals{
|
||||
icon_state = "arrivals11"
|
||||
},
|
||||
/turf/open/floor/mineral/titanium,
|
||||
/area/shuttle/arrival)
|
||||
"u" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
dir = 4
|
||||
"UU" = (
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
color = "#55391A";
|
||||
dir = 4;
|
||||
icon_state = "siding_wood_line";
|
||||
name = "wood"
|
||||
},
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
color = "#55391A";
|
||||
icon_state = "siding_wood_line";
|
||||
name = "wood"
|
||||
},
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
color = "#55391A";
|
||||
dir = 1;
|
||||
icon_state = "siding_wood_line";
|
||||
name = "wood"
|
||||
},
|
||||
/turf/open/floor/wood{
|
||||
icon_state = "wood_tile";
|
||||
name = "tile"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"VR" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/arrivals{
|
||||
icon_state = "arrivals17"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"We" = (
|
||||
/obj/docking_port/mobile/arrivals,
|
||||
/turf/open/floor/plating/airless,
|
||||
/turf/closed/wall/mineral/titanium/custom/window/arrivals{
|
||||
icon_state = "arrivals30"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"v" = (
|
||||
"Wi" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/arrivals{
|
||||
icon_state = "arrivals14"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"WM" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/arrivals{
|
||||
icon_state = "arrivals8"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"WO" = (
|
||||
/obj/structure/chair/comfy/shuttle{
|
||||
dir = 1
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 6
|
||||
},
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
icon_state = "drain";
|
||||
name = "drain"
|
||||
},
|
||||
/turf/open/floor/plasteel/dark{
|
||||
icon_state = "darkfull_plate"
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/arrival)
|
||||
"w" = (
|
||||
"YZ" = (
|
||||
/obj/structure/chair/comfy/shuttle,
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
dir = 1;
|
||||
icon_state = "drain";
|
||||
name = "drain"
|
||||
},
|
||||
/turf/open/floor/plasteel/dark{
|
||||
icon_state = "darkfull_plate"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"Zg" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/arrivals{
|
||||
icon_state = "arrivals36"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"Zm" = (
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 9
|
||||
},
|
||||
/turf/open/floor/plasteel/dark{
|
||||
dir = 1;
|
||||
icon_state = "darkfull_plate"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"Zu" = (
|
||||
/obj/structure/chair/comfy/shuttle{
|
||||
dir = 1
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 9
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/arrival)
|
||||
"x" = (
|
||||
/obj/structure/closet/emcloset,
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/arrival)
|
||||
"y" = (
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/arrival)
|
||||
"z" = (
|
||||
/obj/item/radio/intercom{
|
||||
name = "Station Intercom (General)";
|
||||
pixel_y = -29
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
dir = 1;
|
||||
icon_state = "drain";
|
||||
name = "drain"
|
||||
},
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/arrival)
|
||||
"A" = (
|
||||
/obj/structure/shuttle/engine/propulsion/burst/left{
|
||||
dir = 4
|
||||
/turf/open/floor/plasteel/dark{
|
||||
dir = 1;
|
||||
icon_state = "darkfull_plate"
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/shuttle/arrival)
|
||||
"S" = (
|
||||
/turf/open/floor/mineral/titanium,
|
||||
"Zw" = (
|
||||
/obj/structure/chair/comfy/shuttle{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 9
|
||||
},
|
||||
/turf/open/floor/plasteel/dark{
|
||||
dir = 1;
|
||||
icon_state = "darkfull_plate"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"ZT" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/arrivals{
|
||||
icon_state = "arrivals43"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"ZZ" = (
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 6
|
||||
},
|
||||
/turf/open/floor/plasteel/dark{
|
||||
icon_state = "darkfull_plate"
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
|
||||
(1,1,1) = {"
|
||||
a
|
||||
b
|
||||
o
|
||||
d
|
||||
d
|
||||
b
|
||||
a
|
||||
KB
|
||||
TW
|
||||
cn
|
||||
ks
|
||||
cO
|
||||
Al
|
||||
KB
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
a
|
||||
b
|
||||
p
|
||||
S
|
||||
v
|
||||
b
|
||||
a
|
||||
KB
|
||||
Wi
|
||||
YZ
|
||||
vk
|
||||
fF
|
||||
gC
|
||||
KB
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
a
|
||||
b
|
||||
q
|
||||
S
|
||||
w
|
||||
b
|
||||
a
|
||||
mi
|
||||
uC
|
||||
uf
|
||||
vk
|
||||
Sp
|
||||
cw
|
||||
ZT
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
b
|
||||
b
|
||||
b
|
||||
t
|
||||
b
|
||||
b
|
||||
b
|
||||
fS
|
||||
CA
|
||||
qS
|
||||
My
|
||||
yU
|
||||
pB
|
||||
lo
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
b
|
||||
e
|
||||
S
|
||||
S
|
||||
S
|
||||
x
|
||||
b
|
||||
Sb
|
||||
gu
|
||||
Pb
|
||||
QB
|
||||
Dm
|
||||
Zg
|
||||
eb
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
c
|
||||
f
|
||||
r
|
||||
r
|
||||
r
|
||||
f
|
||||
c
|
||||
oD
|
||||
kF
|
||||
ZZ
|
||||
mA
|
||||
Zm
|
||||
sd
|
||||
HU
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
b
|
||||
g
|
||||
f
|
||||
f
|
||||
f
|
||||
y
|
||||
b
|
||||
ph
|
||||
Zu
|
||||
JU
|
||||
mA
|
||||
Zw
|
||||
WO
|
||||
lE
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
d
|
||||
h
|
||||
r
|
||||
r
|
||||
r
|
||||
f
|
||||
d
|
||||
EA
|
||||
Zu
|
||||
JU
|
||||
mA
|
||||
Zw
|
||||
WO
|
||||
jg
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
d
|
||||
i
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
d
|
||||
SE
|
||||
Zu
|
||||
JU
|
||||
mA
|
||||
Zw
|
||||
WO
|
||||
Kb
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
d
|
||||
j
|
||||
r
|
||||
r
|
||||
r
|
||||
f
|
||||
d
|
||||
nO
|
||||
Zu
|
||||
JU
|
||||
mA
|
||||
Zw
|
||||
WO
|
||||
yl
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
d
|
||||
k
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
d
|
||||
oD
|
||||
qw
|
||||
ZZ
|
||||
UU
|
||||
Zm
|
||||
QK
|
||||
HU
|
||||
"}
|
||||
(12,1,1) = {"
|
||||
b
|
||||
l
|
||||
r
|
||||
r
|
||||
r
|
||||
z
|
||||
b
|
||||
Ov
|
||||
Il
|
||||
OQ
|
||||
rC
|
||||
gK
|
||||
sk
|
||||
OT
|
||||
"}
|
||||
(13,1,1) = {"
|
||||
c
|
||||
f
|
||||
S
|
||||
S
|
||||
S
|
||||
f
|
||||
c
|
||||
kq
|
||||
VR
|
||||
gN
|
||||
Pr
|
||||
ze
|
||||
dO
|
||||
lt
|
||||
"}
|
||||
(14,1,1) = {"
|
||||
b
|
||||
m
|
||||
m
|
||||
m
|
||||
m
|
||||
m
|
||||
b
|
||||
pZ
|
||||
KN
|
||||
PR
|
||||
xW
|
||||
Qd
|
||||
nC
|
||||
ov
|
||||
"}
|
||||
(15,1,1) = {"
|
||||
b
|
||||
n
|
||||
s
|
||||
u
|
||||
s
|
||||
A
|
||||
b
|
||||
WM
|
||||
Lv
|
||||
qa
|
||||
We
|
||||
de
|
||||
zV
|
||||
qz
|
||||
"}
|
||||
|
||||
@@ -4,57 +4,96 @@
|
||||
name = "Escape Pod Airlock"
|
||||
},
|
||||
/obj/docking_port/mobile/pod{
|
||||
port_direction = 2;
|
||||
dwidth = 1;
|
||||
width = 3;
|
||||
height = 4
|
||||
height = 4;
|
||||
port_direction = 2;
|
||||
width = 3
|
||||
},
|
||||
/obj/structure/fans/tiny,
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/turf/open/floor/plasteel/dark{
|
||||
icon_state = "darkfull_whole_alt"
|
||||
},
|
||||
/area/shuttle/pod_1)
|
||||
"d" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/pod{
|
||||
icon_state = "pod6"
|
||||
},
|
||||
/area/shuttle/pod_1)
|
||||
"f" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/pod{
|
||||
icon_state = "pod8"
|
||||
},
|
||||
/area/shuttle/pod_1)
|
||||
"g" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/pod{
|
||||
icon_state = "pod3"
|
||||
},
|
||||
/area/shuttle/pod_1)
|
||||
"j" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/pod{
|
||||
icon_state = "pod4"
|
||||
},
|
||||
/area/shuttle/pod_1)
|
||||
"B" = (
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/turf/closed/wall/mineral/titanium/custom/pod{
|
||||
icon_state = "pod2"
|
||||
},
|
||||
/area/shuttle/pod_1)
|
||||
"G" = (
|
||||
/obj/structure/chair/comfy/shuttle{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/status_display/evac{
|
||||
pixel_x = 32
|
||||
},
|
||||
/obj/machinery/computer/shuttle/pod{
|
||||
pixel_x = -32
|
||||
dir = 4;
|
||||
pixel_x = -19
|
||||
},
|
||||
/obj/item/radio/intercom{
|
||||
pixel_x = 26
|
||||
},
|
||||
/turf/open/floor/plasteel/dark{
|
||||
icon_state = "darkfull_whole_alt"
|
||||
},
|
||||
/area/shuttle/pod_1)
|
||||
"J" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/pod{
|
||||
icon_state = "pod0"
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/pod_1)
|
||||
"Q" = (
|
||||
/obj/effect/spawner/structure/window/shuttle,
|
||||
/turf/open/floor/plating,
|
||||
/turf/closed/wall/mineral/titanium/custom/window/pod{
|
||||
icon_state = "pod1"
|
||||
},
|
||||
/area/shuttle/pod_1)
|
||||
"U" = (
|
||||
/obj/structure/chair/comfy/shuttle{
|
||||
dir = 1
|
||||
},
|
||||
/obj/item/radio/intercom{
|
||||
pixel_x = 25
|
||||
},
|
||||
/obj/item/storage/pod{
|
||||
pixel_x = -26
|
||||
dir = 8;
|
||||
pixel_x = 30
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/turf/open/floor/plasteel/dark{
|
||||
icon_state = "darkfull_whole_alt"
|
||||
},
|
||||
/area/shuttle/pod_1)
|
||||
"W" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/pod{
|
||||
icon_state = "pod5"
|
||||
},
|
||||
/area/shuttle/pod_1)
|
||||
"Z" = (
|
||||
/obj/structure/shuttle/engine/propulsion/burst,
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/turf/closed/wall/mineral/titanium/custom/pod{
|
||||
icon_state = "pod7"
|
||||
},
|
||||
/area/shuttle/pod_1)
|
||||
|
||||
(1,1,1) = {"
|
||||
B
|
||||
B
|
||||
B
|
||||
g
|
||||
W
|
||||
Z
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
@@ -64,8 +103,8 @@ U
|
||||
a
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
B
|
||||
B
|
||||
B
|
||||
Z
|
||||
J
|
||||
d
|
||||
j
|
||||
f
|
||||
"}
|
||||
|
||||
@@ -1,196 +1,674 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"b" = (
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/shuttle/transport)
|
||||
"c" = (
|
||||
/obj/effect/spawner/structure/window/shuttle,
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/transport)
|
||||
"d" = (
|
||||
/obj/machinery/door/airlock/external,
|
||||
/obj/structure/fans/tiny,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/shuttle/transport)
|
||||
"e" = (
|
||||
/obj/structure/shuttle/engine/propulsion/left{
|
||||
dir = 8
|
||||
"bx" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry41"
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/shuttle/transport)
|
||||
"f" = (
|
||||
/obj/structure/shuttle/engine/heater{
|
||||
dir = 8
|
||||
"bF" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry17"
|
||||
},
|
||||
/obj/structure/window/reinforced,
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/shuttle/transport)
|
||||
"g" = (
|
||||
/obj/structure/chair/comfy/shuttle,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/shuttle/transport)
|
||||
"h" = (
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
"cB" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry2"
|
||||
},
|
||||
/turf/open/floor/pod/light,
|
||||
/area/shuttle/transport)
|
||||
"i" = (
|
||||
/turf/open/floor/pod/light,
|
||||
/area/shuttle/transport)
|
||||
"j" = (
|
||||
/obj/structure/shuttle/engine/heater{
|
||||
dir = 8
|
||||
"fd" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry29"
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
/area/shuttle/transport)
|
||||
"gv" = (
|
||||
/obj/effect/turf_decal/loading_area/white{
|
||||
dir = 4;
|
||||
icon_state = "loadingarea_white_flip"
|
||||
},
|
||||
/turf/open/floor/plasteel/dark{
|
||||
dir = 4;
|
||||
icon_state = "darkfull_plate"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"hh" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry37"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"hF" = (
|
||||
/obj/structure/chair/comfy/shuttle{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
icon_state = "drain";
|
||||
name = "drain"
|
||||
},
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
dir = 1;
|
||||
icon_state = "drain";
|
||||
name = "drain"
|
||||
},
|
||||
/obj/structure/window/reinforced/survival_pod,
|
||||
/turf/open/floor/plasteel{
|
||||
dir = 8;
|
||||
icon_plating = "floor";
|
||||
icon_state = "floor_whole_alt"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"k" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/pod/light,
|
||||
"hP" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry32"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"l" = (
|
||||
/obj/machinery/door/airlock/titanium,
|
||||
/turf/open/floor/pod/light,
|
||||
"iS" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry28"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"m" = (
|
||||
"jH" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry3"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"jI" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry19"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"kh" = (
|
||||
/obj/structure/chair/comfy/shuttle{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
color = "#55391A";
|
||||
dir = 5;
|
||||
icon_state = "siding_wood_line";
|
||||
name = "wood"
|
||||
},
|
||||
/turf/open/floor/wood{
|
||||
icon_state = "wood_parquet";
|
||||
name = "parquet"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"kD" = (
|
||||
/obj/structure/chair/comfy/shuttle{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/window/reinforced/survival_pod{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
color = "#55391A";
|
||||
dir = 5;
|
||||
icon_state = "siding_wood_line";
|
||||
name = "wood"
|
||||
},
|
||||
/turf/open/floor/wood{
|
||||
icon_state = "wood_parquet";
|
||||
name = "parquet"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"mw" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry33"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"mA" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry34"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"oc" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry7"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"of" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry1"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"oN" = (
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"oZ" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry24"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"pc" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry36"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"qx" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry8"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"qC" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry22"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"qE" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry35"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"qF" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry20"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"ry" = (
|
||||
/obj/machinery/computer/shuttle/ferry/request{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/pod/dark,
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
icon_state = "drain";
|
||||
name = "drain"
|
||||
},
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
dir = 1;
|
||||
icon_state = "drain";
|
||||
name = "drain"
|
||||
},
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
dir = 4;
|
||||
icon_state = "drain";
|
||||
name = "drain"
|
||||
},
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
dir = 8;
|
||||
icon_state = "drain_corner";
|
||||
name = "drain"
|
||||
},
|
||||
/obj/structure/window/reinforced/survival_pod,
|
||||
/turf/open/floor/plasteel{
|
||||
dir = 8;
|
||||
icon_plating = "floor";
|
||||
icon_state = "floor_whole_alt"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"n" = (
|
||||
/obj/machinery/door/airlock/titanium,
|
||||
"uw" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry21"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"vp" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry23"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"vy" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry25"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"wR" = (
|
||||
/obj/machinery/door/airlock/shuttle{
|
||||
name = "ferry airlock";
|
||||
req_access_txt = "101"
|
||||
},
|
||||
/obj/structure/fans/tiny,
|
||||
/obj/docking_port/mobile{
|
||||
dir = 8;
|
||||
dwidth = 2;
|
||||
dwidth = 3;
|
||||
height = 13;
|
||||
id = "ferry";
|
||||
name = "ferry shuttle";
|
||||
port_direction = 1;
|
||||
preferred_direction = 4;
|
||||
width = 5
|
||||
preferred_direction = 8;
|
||||
width = 7
|
||||
},
|
||||
/obj/effect/turf_decal/delivery/white,
|
||||
/turf/open/floor/plasteel/dark{
|
||||
icon_state = "darkfull_whole_alt"
|
||||
},
|
||||
/turf/open/floor/pod/light,
|
||||
/area/shuttle/transport)
|
||||
"o" = (
|
||||
"xZ" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry13"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"yR" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry14"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"zV" = (
|
||||
/obj/structure/flora/ausbushes/ywflowers,
|
||||
/obj/structure/flora/ausbushes/palebush,
|
||||
/obj/structure/window/reinforced/fulltile,
|
||||
/turf/open/floor/grass,
|
||||
/area/shuttle/transport)
|
||||
"Ax" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry15"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"AD" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry40"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"AS" = (
|
||||
/obj/machinery/door/airlock/shuttle{
|
||||
name = "ferry storage";
|
||||
req_access_txt = "101"
|
||||
},
|
||||
/obj/effect/turf_decal/delivery/white,
|
||||
/turf/open/floor/plasteel/dark{
|
||||
icon_state = "darkfull_whole_alt"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"CX" = (
|
||||
/obj/structure/shuttle/engine/heater{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 1;
|
||||
pixel_y = 1
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/shuttle/transport)
|
||||
"p" = (
|
||||
/obj/structure/chair/comfy/shuttle{
|
||||
/obj/structure/window/reinforced/survival_pod{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/window/reinforced/survival_pod,
|
||||
/obj/structure/window/reinforced/survival_pod{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/flora/crystal/medium/growth{
|
||||
icon_state = "crystalgrowth2"
|
||||
},
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/shuttle/transport)
|
||||
"q" = (
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/pod/light,
|
||||
"Fq" = (
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
color = "#55391A";
|
||||
dir = 1;
|
||||
icon_state = "siding_wood_line";
|
||||
name = "wood"
|
||||
},
|
||||
/obj/machinery/light{
|
||||
pixel_y = -1
|
||||
},
|
||||
/turf/open/floor/wood{
|
||||
icon_state = "wood_parquet";
|
||||
name = "parquet"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"r" = (
|
||||
/obj/machinery/door/airlock/external,
|
||||
/obj/structure/fans/tiny,
|
||||
/turf/open/floor/pod/light,
|
||||
"Fr" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry16"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"GK" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry30"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"GN" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry31"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"IB" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry12"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"IR" = (
|
||||
/obj/effect/turf_decal/bot,
|
||||
/obj/structure/closet/crate,
|
||||
/obj/item/storage/toolbox/mechanical,
|
||||
/obj/item/toy/plush/lizardplushie/arctaisia,
|
||||
/turf/open/floor/plasteel/dark{
|
||||
icon_state = "darkfull_whole_alt"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"LT" = (
|
||||
/obj/structure/chair/comfy/shuttle{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
color = "#55391A";
|
||||
dir = 1;
|
||||
icon_state = "siding_wood_line";
|
||||
name = "wood"
|
||||
},
|
||||
/turf/open/floor/wood{
|
||||
icon_state = "wood_parquet";
|
||||
name = "parquet"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"Mu" = (
|
||||
/obj/structure/chair/comfy/shuttle{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/window/reinforced/survival_pod{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
color = "#55391A";
|
||||
dir = 9;
|
||||
icon_state = "siding_wood_line";
|
||||
name = "wood"
|
||||
},
|
||||
/turf/open/floor/wood{
|
||||
icon_state = "wood_parquet";
|
||||
name = "parquet"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"MI" = (
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
dir = 8;
|
||||
icon_state = "trim";
|
||||
name = "trim"
|
||||
},
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/dark{
|
||||
dir = 8;
|
||||
icon_state = "darkfull_plate"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"MY" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry11"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"Na" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry5"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"OB" = (
|
||||
/turf/open/floor/plasteel/dark{
|
||||
icon_state = "darkfull_trim"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"Qx" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry4"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"Rt" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry38"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"Sg" = (
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
dir = 8;
|
||||
icon_state = "drain";
|
||||
name = "drain"
|
||||
},
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
dir = 1;
|
||||
icon_state = "drain";
|
||||
name = "drain"
|
||||
},
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
dir = 1;
|
||||
icon_state = "half_stairs";
|
||||
name = "steps"
|
||||
},
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
dir = 4;
|
||||
icon_state = "drain_corner";
|
||||
name = "drain"
|
||||
},
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
dir = 1;
|
||||
icon_state = "steel_decals_central6_corner";
|
||||
name = "maintenance hatch"
|
||||
},
|
||||
/turf/open/floor/plasteel{
|
||||
dir = 1;
|
||||
icon_state = "floor_plate"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"SB" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry26"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"Tb" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/window/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry0"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"Tr" = (
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
dir = 8;
|
||||
icon_state = "trim";
|
||||
name = "trim"
|
||||
},
|
||||
/obj/machinery/light{
|
||||
pixel_y = -1
|
||||
},
|
||||
/turf/open/floor/plasteel/dark{
|
||||
dir = 8;
|
||||
icon_state = "darkfull_plate"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"TT" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry10"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"Uu" = (
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
dir = 8;
|
||||
icon_state = "trim";
|
||||
name = "trim"
|
||||
},
|
||||
/turf/open/floor/plasteel/dark{
|
||||
dir = 8;
|
||||
icon_state = "darkfull_plate"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"UV" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry9"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"Vq" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry18"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"VV" = (
|
||||
/obj/machinery/computer{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/dark{
|
||||
dir = 4;
|
||||
icon_state = "darkfull_whole"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"WS" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry27"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"Yi" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry6"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"Zj" = (
|
||||
/obj/item/radio/intercom{
|
||||
freerange = 1;
|
||||
listening = 0;
|
||||
name = "Custom Channel";
|
||||
pixel_y = 19
|
||||
},
|
||||
/turf/open/floor/plasteel/dark{
|
||||
icon_state = "darkfull_trim"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
"ZJ" = (
|
||||
/turf/closed/wall/mineral/titanium/custom/ferry{
|
||||
dir = 1;
|
||||
icon_state = "ferry39"
|
||||
},
|
||||
/area/shuttle/transport)
|
||||
|
||||
(1,1,1) = {"
|
||||
a
|
||||
a
|
||||
e
|
||||
a
|
||||
a
|
||||
oN
|
||||
oN
|
||||
oN
|
||||
oN
|
||||
oN
|
||||
oN
|
||||
oN
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
a
|
||||
e
|
||||
j
|
||||
e
|
||||
a
|
||||
oN
|
||||
hh
|
||||
WS
|
||||
SB
|
||||
jI
|
||||
Ax
|
||||
oN
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
a
|
||||
f
|
||||
i
|
||||
o
|
||||
a
|
||||
bx
|
||||
Rt
|
||||
VV
|
||||
CX
|
||||
IR
|
||||
Fr
|
||||
Qx
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
a
|
||||
b
|
||||
k
|
||||
b
|
||||
a
|
||||
mw
|
||||
ZJ
|
||||
MI
|
||||
Uu
|
||||
Tr
|
||||
bF
|
||||
Tb
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
b
|
||||
b
|
||||
l
|
||||
b
|
||||
b
|
||||
mA
|
||||
AD
|
||||
qF
|
||||
AS
|
||||
xZ
|
||||
Vq
|
||||
of
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
c
|
||||
g
|
||||
i
|
||||
p
|
||||
c
|
||||
qE
|
||||
hP
|
||||
Sg
|
||||
OB
|
||||
LT
|
||||
IB
|
||||
cB
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
b
|
||||
g
|
||||
i
|
||||
p
|
||||
b
|
||||
pc
|
||||
iS
|
||||
hF
|
||||
OB
|
||||
Fq
|
||||
Na
|
||||
jH
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
b
|
||||
h
|
||||
i
|
||||
i
|
||||
b
|
||||
oN
|
||||
fd
|
||||
ry
|
||||
OB
|
||||
kD
|
||||
Yi
|
||||
oN
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
d
|
||||
i
|
||||
m
|
||||
i
|
||||
r
|
||||
oN
|
||||
GK
|
||||
uw
|
||||
OB
|
||||
Mu
|
||||
oc
|
||||
oN
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
b
|
||||
i
|
||||
i
|
||||
q
|
||||
b
|
||||
oN
|
||||
GN
|
||||
qC
|
||||
OB
|
||||
Fq
|
||||
qx
|
||||
oN
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
b
|
||||
g
|
||||
i
|
||||
p
|
||||
b
|
||||
oN
|
||||
oN
|
||||
vp
|
||||
Zj
|
||||
kh
|
||||
UV
|
||||
oN
|
||||
"}
|
||||
(12,1,1) = {"
|
||||
c
|
||||
g
|
||||
i
|
||||
p
|
||||
c
|
||||
oN
|
||||
oN
|
||||
oZ
|
||||
gv
|
||||
zV
|
||||
TT
|
||||
oN
|
||||
"}
|
||||
(13,1,1) = {"
|
||||
b
|
||||
c
|
||||
n
|
||||
c
|
||||
b
|
||||
oN
|
||||
oN
|
||||
vy
|
||||
wR
|
||||
yR
|
||||
MY
|
||||
oN
|
||||
"}
|
||||
|
||||
@@ -67,6 +67,10 @@
|
||||
#define ACCESS_ENTER_GENPOP 69
|
||||
#define ACCESS_LEAVE_GENPOP 70
|
||||
#define ACCESS_PSYCH 71
|
||||
#define ACCESS_LAMBENT 72
|
||||
#define ACCESS_BARBER 73
|
||||
#define ACCESS_BARISTA 74
|
||||
|
||||
|
||||
//BEGIN CENTCOM ACCESS
|
||||
/*Should leave plenty of room if we need to add more access levels.
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
#define CYBORG (1<<10)
|
||||
#define JR_OFFICER (1<<11)
|
||||
#define JR_ENGINEER (1<<12)
|
||||
#define LAMBENT (1<<13)
|
||||
|
||||
|
||||
#define MEDSCI (1<<1)
|
||||
@@ -46,6 +47,8 @@
|
||||
#define CLOWN (1<<11)
|
||||
#define MIME (1<<12)
|
||||
#define ASSISTANT (1<<13)
|
||||
#define BARBER (1<<14)
|
||||
#define BARISTA (1<<15)
|
||||
|
||||
#define JOB_AVAILABLE 0
|
||||
#define JOB_UNAVAILABLE_GENERIC 1
|
||||
@@ -53,4 +56,4 @@
|
||||
#define JOB_UNAVAILABLE_PLAYTIME 3
|
||||
#define JOB_UNAVAILABLE_ACCOUNTAGE 4
|
||||
#define JOB_UNAVAILABLE_SLOTFULL 5
|
||||
#define JOB_UNAVAILABLE_WHITELIST 6
|
||||
#define JOB_UNAVAILABLE_WHITELIST 6
|
||||
|
||||
@@ -446,7 +446,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
|
||||
/area/crew_quarters/lounge
|
||||
name = "Lounge"
|
||||
icon_state = "yellow"
|
||||
icon_state = "lounge"
|
||||
|
||||
/area/crew_quarters/fitness
|
||||
name = "Fitness Room"
|
||||
@@ -495,6 +495,10 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
name = "Theatre"
|
||||
icon_state = "Theatre"
|
||||
|
||||
/area/crew_quarters/theatre/main
|
||||
name = "Entertainment Theatre"
|
||||
icon_state = "Theatre"
|
||||
|
||||
/area/crew_quarters/theatre/abandoned
|
||||
name = "Abandoned Theatre"
|
||||
icon_state = "Theatre"
|
||||
@@ -1372,7 +1376,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
name = "Xenoarchaeology Medical"
|
||||
icon_state = "xenomed"
|
||||
|
||||
//Pool
|
||||
//Pool and Hyper additions
|
||||
/area/crew_quarters/fitness/pool
|
||||
name = "Pool Area"
|
||||
icon_state = "pool"
|
||||
@@ -1384,11 +1388,25 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
|
||||
/area/arcade
|
||||
name = "Arcade"
|
||||
icon_state = "yellow"
|
||||
icon_state = "arcade"
|
||||
|
||||
/area/artatrium
|
||||
name = "Art Atrium"
|
||||
icon_state = "library"
|
||||
/area/medical/psych/ward
|
||||
name = "Psychology Ward"
|
||||
|
||||
/area/medical/psych/therapy
|
||||
name = "Therapy Office"
|
||||
|
||||
/area/medical/psych/rec
|
||||
name = "Psychology Recreation"
|
||||
|
||||
/area/medical/psych/lobby
|
||||
name = "Psychology Lobby"
|
||||
|
||||
/area/medical/psych/roomA
|
||||
name = "Physchology Dorm A"
|
||||
|
||||
/area/medical/psych/roomB
|
||||
name = "Physchology Dorm A"
|
||||
|
||||
//Diner
|
||||
/area/diner
|
||||
|
||||
@@ -10,6 +10,12 @@ area/layenia
|
||||
atmos = FALSE
|
||||
flags_1 = NONE
|
||||
|
||||
area/layenia/cave
|
||||
name = "Layenia Caves"
|
||||
icon_state = "mining"
|
||||
outdoors = FALSE
|
||||
dynamic_lighting = DYNAMIC_LIGHTING_FORCED
|
||||
|
||||
area/layenia/cloudlayer
|
||||
name = "Layenia clouds"
|
||||
icon_state = "space"
|
||||
|
||||
@@ -102,6 +102,13 @@ GLOBAL_LIST_EMPTY(announcement_systems)
|
||||
else if(message_type == "ARRIVALS_BROKEN")
|
||||
message = "The arrivals shuttle has been damaged. Docking for repairs..."
|
||||
|
||||
//Hyper edit
|
||||
else if (message_type == "ONDUTY")
|
||||
message = CompileText(onduty, user, rank)
|
||||
else if (message_type == "OFFDUTY")
|
||||
message = CompileText(offduty, user, rank)
|
||||
//Hyper edit end
|
||||
|
||||
if(channels.len == 0)
|
||||
radio.talk_into(src, message, null)
|
||||
else
|
||||
|
||||
@@ -11,8 +11,9 @@
|
||||
openSound = 'hyperstation/sound/machines/shutter.ogg'
|
||||
closeSound = 'hyperstation/sound/machines/shutter.ogg'
|
||||
|
||||
// temporarily changing it to open alt so you can see things on tables that also have shutters above them until I can figure some alternatives out.
|
||||
/obj/machinery/door/poddoor/shutters/preopen
|
||||
icon_state = "open"
|
||||
icon_state = "open_alt"
|
||||
density = FALSE
|
||||
opacity = 0
|
||||
|
||||
@@ -68,3 +69,8 @@
|
||||
/obj/machinery/door/poddoor/shutters/window/preopen
|
||||
icon_state = "open"
|
||||
density = FALSE
|
||||
|
||||
//my not so successful attempt to make the new shutters let you see what's under them when above tables.
|
||||
/obj/machinery/door/poddoor/shutters/preopen/alt
|
||||
icon_state = "open_alt"
|
||||
density = FALSE
|
||||
@@ -408,6 +408,21 @@
|
||||
desc = "A poster advertising a movie about some masked men."
|
||||
icon_state = "poster44"
|
||||
|
||||
/obj/structure/sign/poster/contraband/moffuchis_pizza
|
||||
name = "Moffy's Pizzeria"
|
||||
desc = "Moffy's Pizzeria™: family style pizza for 2 centuries."
|
||||
icon_state = "poster45"
|
||||
|
||||
/obj/structure/sign/poster/contraband/donk_co
|
||||
name = "DONK CO. BRAND MICROWAVEABLE FOOD"
|
||||
desc = "DONK CO. BRAND MICROWAVABLE FOOD: MADE BY STARVING COLLEGE STUDENTS, FOR STARVING COLLEGE STUDENTS."
|
||||
icon_state = "poster46"
|
||||
|
||||
/obj/structure/sign/poster/contraband/cybersun_six_hundred
|
||||
name = "Saibāsan: 600 Years Commemorative Poster"
|
||||
desc = "An artistic poster commemorating 600 years of continual business for Cybersun Industries."
|
||||
icon_state = "poster47"
|
||||
|
||||
/obj/structure/sign/poster/official
|
||||
poster_item_name = "motivational poster"
|
||||
poster_item_desc = "An official Nanotrasen-issued poster to foster a compliant and obedient workforce. It comes with state-of-the-art adhesive backing, for easy pinning to any vertical surface."
|
||||
@@ -594,4 +609,29 @@
|
||||
desc = "This informational poster teaches the viewer what carbon dioxide is."
|
||||
icon_state = "poster35_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/moth_hardhat
|
||||
name = "Safety Moth - Hardhats"
|
||||
desc = "This informational poster uses Safety Moth™ to tell the viewer to wear hardhats in cautious areas. \"It's like a lamp for your head!\""
|
||||
icon_state = "poster36_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/moth_piping
|
||||
name = "Safety Moth - Piping"
|
||||
desc = "This informational poster uses Safety Moth™ to tell atmospheric technicians correct types of piping to be used. \"Pipes, not Pumps! Proper pipe placement prevents poor performance!\""
|
||||
icon_state = "poster37_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/moth_meth
|
||||
name = "Safety Moth - Methamphetamine"
|
||||
desc = "This informational poster uses Safety Moth™ to tell the viewer to seek CMO approval before cooking methamphetamine. \"Stay close to the target temperature, and never go over!\" ...You shouldn't ever be making this."
|
||||
icon_state = "poster38_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/moth_epi
|
||||
name = "Safety Moth - Epinephrine"
|
||||
desc = "This informational poster uses Safety Moth™ to inform the viewer to help injured/deceased crewmen with their epinephrine injectors. \"Prevent organ rot with this one simple trick!\""
|
||||
icon_state = "poster39_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/corporate_perks_vacation
|
||||
name = "Nanotrasen Corporate Perks: Vacation"
|
||||
desc = "You wish you were here? You can be, Plan today and get 10% off your next vacation on us."
|
||||
icon_state = "poster40_legit"
|
||||
|
||||
#undef PLACE_SPEED
|
||||
|
||||
@@ -9,4 +9,24 @@
|
||||
/obj/effect/turf_decal/weather/snow/corner
|
||||
name = "snow corner piece"
|
||||
icon = 'icons/turf/snow.dmi'
|
||||
icon_state = "snow_corner"
|
||||
icon_state = "snow_corner"
|
||||
|
||||
/obj/effect/turf_decal/weather/grass
|
||||
name = "grass box piece"
|
||||
icon = 'icons/turf/grass.dmi'
|
||||
icon_state = "grass_box"
|
||||
|
||||
/obj/effect/turf_decal/weather/grass/line
|
||||
name = "grass line piece"
|
||||
icon = 'icons/turf/grass.dmi'
|
||||
icon_state = "grass_line"
|
||||
|
||||
/obj/effect/turf_decal/weather/grass/corner
|
||||
name = "grass corner piece"
|
||||
icon = 'icons/turf/grass.dmi'
|
||||
icon_state = "grass_corner"
|
||||
|
||||
/obj/effect/turf_decal/weather/grass/surround
|
||||
name = "grass surround piece"
|
||||
icon = 'icons/turf/grass.dmi'
|
||||
icon_state = "grass_surround"
|
||||
@@ -126,7 +126,7 @@
|
||||
H.update_body()
|
||||
else
|
||||
..()
|
||||
|
||||
/* SKYRAT EDIT REMOVAL
|
||||
/obj/item/razor
|
||||
name = "electric razor"
|
||||
desc = "The latest and greatest power razor born from the science of shaving."
|
||||
@@ -216,4 +216,5 @@
|
||||
else
|
||||
..()
|
||||
else
|
||||
..()
|
||||
..()
|
||||
*/
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
icon = 'icons/obj/dyespray.dmi'
|
||||
icon_state = "dyespray"
|
||||
|
||||
var/uses = 10 //SKYRAT EDIT ADDITION
|
||||
|
||||
/obj/item/dyespray/attack_self(mob/user)
|
||||
dye(user)
|
||||
|
||||
@@ -21,6 +23,10 @@
|
||||
/obj/item/dyespray/proc/dye(mob/target)
|
||||
if(!ishuman(target))
|
||||
return
|
||||
|
||||
if(!uses) //SKYRAT EDIT ADDITION
|
||||
return //SKYRAT EDIT ADDITION
|
||||
|
||||
var/mob/living/carbon/human/human_target = target
|
||||
|
||||
var/new_hair_color = input(usr, "Choose a base hair color:", "Character Preference","#"+human_target.hair_color) as color|null
|
||||
@@ -42,4 +48,13 @@
|
||||
if(!do_after(usr, 30, target = human_target))
|
||||
return
|
||||
playsound(src, 'sound/effects/spray.ogg', 5, TRUE, 5)
|
||||
human_target.update_hair()
|
||||
human_target.update_hair()
|
||||
|
||||
//SKYRAT EDIT ADDITION
|
||||
uses--
|
||||
|
||||
/obj/item/dyespray/examine(mob/user)
|
||||
. = ..()
|
||||
. += "It has [uses] uses left."
|
||||
|
||||
//SKYRAT EDIT END
|
||||
|
||||
@@ -657,6 +657,34 @@
|
||||
item_state = "moffplush"
|
||||
squeak_override = list('modular_citadel/sound/voice/scream_moth.ogg' = 1)
|
||||
|
||||
/obj/item/toy/plush/mothplushie/moffplush/safetymoth
|
||||
name = "Safety Moth"
|
||||
desc = "A limited edition Safety Moth™ plush, Can you collect them all?"
|
||||
icon_state = "safetymoth"
|
||||
item_state = "safetymoth"
|
||||
squeak_override = list('modular_citadel/sound/voice/scream_moth.ogg' = 1)
|
||||
|
||||
/obj/item/toy/plush/mothplushie/moffplush/safetymoth_engineer
|
||||
name = "Engineer Safety Moth"
|
||||
desc = "A limited edition Engineer Safety Moth™ plush, Can you collect them all?"
|
||||
icon_state = "safetymoth_engineer"
|
||||
item_state = "safetymoth_engineer"
|
||||
squeak_override = list('modular_citadel/sound/voice/scream_moth.ogg' = 1)
|
||||
|
||||
/obj/item/toy/plush/mothplushie/moffplush/safetymoth_doctor
|
||||
name = "Doctor Safety Moth"
|
||||
desc = "A limited edition Doctor Safety Moth™ plush, Can you collect them all?"
|
||||
icon_state = "safetymoth_doctor"
|
||||
item_state = "safetymoth_doctor"
|
||||
squeak_override = list('modular_citadel/sound/voice/scream_moth.ogg' = 1)
|
||||
|
||||
/obj/item/toy/plush/mothplushie/moffplush/Moffy
|
||||
name = "Chef Moffy plushie"
|
||||
desc = "A rebranded Safety Moth™ plush by there sister company Moffy's Pizzeria Entertainment™"
|
||||
icon_state = "Moffy"
|
||||
item_state = "Moffy"
|
||||
squeak_override = list('modular_citadel/sound/voice/scream_moth.ogg' = 1)
|
||||
|
||||
/obj/item/toy/plush/xeno
|
||||
name = "xenohybrid plushie"
|
||||
desc = "An adorable stuffed toy that resmembles a xenomorphic crewmember."
|
||||
@@ -766,6 +794,15 @@
|
||||
item_state = "kenk"
|
||||
squeak_override = list('modular_citadel/sound/voice/merp.ogg' = 1)
|
||||
|
||||
/obj/item/toy/plush/enchanted
|
||||
name = "glowing book plushie"
|
||||
desc = "This book is so powerful, you can't open it."
|
||||
young = TRUE
|
||||
icon_state = "bookenchanted"
|
||||
item_state = "bookenchanted"
|
||||
squeak_override = list('hyperstation/sound/effects/enchant.ogg' = 1)
|
||||
attack_verb = list("enchants", "mystifies", "disenchants", "fails to enchant", "doesn't have enough XP to enchant", "bonks")
|
||||
|
||||
/obj/item/toy/plush/sergal
|
||||
name = "sergal plushie"
|
||||
desc = "An adorable stuffed plushie that resembles a sagaru."
|
||||
@@ -948,6 +985,13 @@
|
||||
icon_state = "marisol"
|
||||
item_state = "marisol"
|
||||
|
||||
/obj/item/toy/plush/mammal/freddy
|
||||
name = "felix fastbear plushie"
|
||||
desc = "An adorable bear plushie that resembles felix fastbear from Moffy's Pizzeria Entertainment™"
|
||||
icon_state = "freddy"
|
||||
item_state = "freddy"
|
||||
squeak_override = list('sound/items/toysqueak1.ogg' = 1)
|
||||
|
||||
/obj/item/toy/plush/catgirl
|
||||
name = "feline plushie"
|
||||
desc = "An adorable stuffed toy that resembles a feline."
|
||||
|
||||
@@ -49,6 +49,13 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \
|
||||
new/datum/stack_recipe("sofa (corner)", /obj/structure/chair/sofa/corner, one_per_turf = TRUE, on_floor = TRUE) \
|
||||
)), \
|
||||
//END OF CIT CHANGES
|
||||
new/datum/stack_recipe_list("bench", \
|
||||
list( \
|
||||
new/datum/stack_recipe("bench (middle)", /obj/structure/chair/bench/metal, one_per_turf = TRUE, on_floor = TRUE), \
|
||||
new/datum/stack_recipe("bench (left)", /obj/structure/chair/bench/metal/left, one_per_turf = TRUE, on_floor = TRUE), \
|
||||
new/datum/stack_recipe("bench (right)", /obj/structure/chair/bench/metal/right, one_per_turf = TRUE, on_floor = TRUE), \
|
||||
)), \
|
||||
null, \
|
||||
new/datum/stack_recipe("bed", /obj/structure/bed, 2, one_per_turf = TRUE, on_floor = TRUE), \
|
||||
null, \
|
||||
//add this when I can find a way to make them easily constructible > new/datum/stack_recipe("sink", /obj/structure/sink, 2, one_per_turf = TRUE, on_floor = TRUE),
|
||||
|
||||
@@ -177,6 +177,24 @@
|
||||
icon_state = "cheeseburgerbackpack"
|
||||
item_state = "cheeseburgerbackpack"
|
||||
|
||||
/obj/item/storage/backpack/lambent
|
||||
name = "holostorage drone"
|
||||
desc = "A small drone capable of digitizing matter and remaking it on the fly for incredibly-compressed storage, beyond the limits of Bluespace. It follows it's owner closeby."
|
||||
icon_state = "lambentbackpack"
|
||||
item_state = "lambentbackpack"
|
||||
//component_type
|
||||
resistance_flags = LAVA_PROOF|FIRE_PROOF|UNACIDABLE
|
||||
alternate_worn_layer = BODY_BEHIND_LAYER //So the drone appears behind the wearer
|
||||
|
||||
/obj/item/storage/backpack/lambent/dropped(mob/user)
|
||||
src.icon_state = "lambentbackpack_off"
|
||||
playsound(user, 'sound/items/fulext_deploy.wav', 50, 1)
|
||||
|
||||
/obj/item/storage/backpack/lambent/pickup(mob/living/user)
|
||||
src.icon_state = "lambentbackpack"
|
||||
playsound(user, 'sound/items/dronedeploy.ogg', 50, 1)
|
||||
|
||||
|
||||
/*
|
||||
* Satchel Types
|
||||
*/
|
||||
@@ -195,6 +213,23 @@
|
||||
/obj/item/storage/backpack/satchel/leather/withwallet/PopulateContents()
|
||||
new /obj/item/storage/wallet/random(src)
|
||||
|
||||
/obj/item/storage/backpack/satchel/lambent
|
||||
name = "holostorage drone"
|
||||
desc = "A small drone capable of digitizing matter and remaking it on the fly for incredibly-compressed storage, beyond the limits of Bluespace. It follows it's owner closeby."
|
||||
icon_state = "lambentsatchel"
|
||||
item_state = "lambentsatchel"
|
||||
//component_type
|
||||
resistance_flags = LAVA_PROOF|FIRE_PROOF|UNACIDABLE
|
||||
alternate_worn_layer = BODY_BEHIND_LAYER //So the drone appears behind the wearer
|
||||
|
||||
/obj/item/storage/backpack/satchel/lambent/dropped(mob/user)
|
||||
src.icon_state = "lambentsatchel_off"
|
||||
playsound(user, 'sound/items/fulext_deploy.wav', 50, 1)
|
||||
|
||||
/obj/item/storage/backpack/satchel/lambent/pickup(mob/living/user)
|
||||
src.icon_state = "lambentsatchel"
|
||||
playsound(user, 'sound/items/dronedeploy.ogg', 50, 1)
|
||||
|
||||
/obj/item/storage/backpack/satchel/eng
|
||||
name = "industrial satchel"
|
||||
desc = "A tough satchel with extra pockets."
|
||||
@@ -340,6 +375,23 @@
|
||||
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
|
||||
STR.max_combined_w_class = 30
|
||||
|
||||
/obj/item/storage/backpack/duffelbag/lambent
|
||||
name = "holostorage drone"
|
||||
desc = "A small drone capable of digitizing matter and remaking it on the fly for incredibly-compressed storage, beyond the limits of Bluespace. It follows it's owner closeby."
|
||||
icon_state = "lambentduffel"
|
||||
item_state = "lambentduffel"
|
||||
//component_type
|
||||
resistance_flags = LAVA_PROOF|FIRE_PROOF|UNACIDABLE
|
||||
alternate_worn_layer = BODY_BEHIND_LAYER //So the drone appears behind the wearer
|
||||
|
||||
/obj/item/storage/backpack/duffelbag/lambent/dropped(mob/user)
|
||||
src.icon_state = "lambentduffel_off"
|
||||
playsound(user, 'sound/items/fulext_deploy.wav', 50, 1)
|
||||
|
||||
/obj/item/storage/backpack/duffelbag/lambent/pickup(mob/living/user)
|
||||
src.icon_state = "lambentduffel"
|
||||
playsound(user, 'sound/items/dronedeploy.ogg', 50, 1)
|
||||
|
||||
/obj/item/storage/backpack/duffelbag/captain
|
||||
name = "captain's duffel bag"
|
||||
desc = "A large duffel bag for holding extra captainly goods."
|
||||
@@ -365,7 +417,7 @@
|
||||
new /obj/item/cautery(src)
|
||||
new /obj/item/surgical_drapes(src)
|
||||
new /obj/item/clothing/mask/surgical(src)
|
||||
new /obj/item/razor(src)
|
||||
//new /obj/item/razor(src)
|
||||
new /obj/item/reagent_containers/medspray/sterilizine(src)
|
||||
|
||||
/obj/item/storage/backpack/duffelbag/sec
|
||||
|
||||
@@ -299,6 +299,7 @@
|
||||
name = "industrial welding tool"
|
||||
desc = "A slightly larger welder with a larger tank."
|
||||
icon_state = "indwelder"
|
||||
item_state = "indwelder"
|
||||
max_fuel = 40
|
||||
materials = list(MAT_GLASS=60)
|
||||
|
||||
@@ -315,6 +316,7 @@
|
||||
name = "emergency welding tool"
|
||||
desc = "A miniature welder used during emergencies."
|
||||
icon_state = "miniwelder"
|
||||
item_state = "miniwelder"
|
||||
max_fuel = 10
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
materials = list(MAT_METAL=30, MAT_GLASS=10)
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
if(icon_state == "mirror_broke" && !broken)
|
||||
obj_break(null, mapload)
|
||||
|
||||
/* SKYRAT EDIT REMOVAL
|
||||
/obj/structure/mirror/attack_hand(mob/user)
|
||||
. = ..()
|
||||
if(.)
|
||||
@@ -44,7 +45,7 @@
|
||||
H.hair_style = new_style
|
||||
|
||||
H.update_hair()
|
||||
|
||||
*/
|
||||
/obj/structure/mirror/examine_status(mob/user)
|
||||
if(broken)
|
||||
return // no message spam
|
||||
|
||||
@@ -133,4 +133,9 @@
|
||||
/obj/structure/sign/logo/kinaris
|
||||
name = "kinaris logo"
|
||||
desc = "The Kinaris corprate logo. Radiant."
|
||||
icon_state = "kinaris_sign1"
|
||||
icon_state = "kinaris_sign1"
|
||||
|
||||
/obj/structure/sign/logo/cpr
|
||||
name = "Challenge Pissing Room"
|
||||
desc = "The league of challenge pissing"
|
||||
icon_state = "CPR_sign1"
|
||||
@@ -129,6 +129,7 @@
|
||||
planetary_atmos = TRUE
|
||||
initial_gas_mix = FROZEN_ATMOS
|
||||
density = FALSE
|
||||
vis_flags = 8
|
||||
|
||||
/turf/open/chasm/cloud/Initialize()
|
||||
. = ..()
|
||||
|
||||
@@ -85,10 +85,16 @@
|
||||
var/ore_type = /obj/item/stack/ore/glass
|
||||
var/turfverb = "uproot"
|
||||
tiled_dirt = FALSE
|
||||
var/floor_variance = 50
|
||||
var/quantity_of_available_tiles = 2
|
||||
var/environment_type = "grass"
|
||||
|
||||
/turf/open/floor/grass/Initialize()
|
||||
var/proper_name = name
|
||||
. = ..()
|
||||
update_icon()
|
||||
name = proper_name
|
||||
if(prob(floor_variance))
|
||||
icon_state = "[environment_type][rand(0,quantity_of_available_tiles)]"
|
||||
|
||||
/turf/open/floor/grass/attackby(obj/item/C, mob/user, params)
|
||||
if((C.tool_behaviour == TOOL_SHOVEL) && params)
|
||||
|
||||
@@ -387,7 +387,7 @@
|
||||
bullet_bounce_sound = null
|
||||
digResult = /obj/item/stack/ore/glass/basalt
|
||||
floor_variance = 50 //This means 50% chance of variating from the default tile.
|
||||
quantity_of_available_tiles = 4
|
||||
quantity_of_available_tiles = 5
|
||||
//light_range = 2
|
||||
//light_power = 0.15
|
||||
//light_color = LIGHT_COLOR_WHITE
|
||||
|
||||
@@ -1336,9 +1336,14 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
if(jobban_isbanned(user, rank))
|
||||
HTML += "<font color=red>[rank]</font></td><td><a href='?_src_=prefs;jobbancheck=[rank]'> BANNED</a></td></tr>"
|
||||
continue
|
||||
//Hyperstation Edit - Whitelisted roles
|
||||
if((rank in GLOB.silly_positions) && (!sillyroles))
|
||||
HTML += "<font color=red>[rank]</font></td><td><a href='?_src_=prefs;jobbancheck=[rank]'> WHITELIST</a></td></tr>"
|
||||
continue
|
||||
if((rank in GLOB.important_positions) && (!importantroles)) //TODO: make whitelists a bit more accurate than "silly" and "important"
|
||||
HTML += "<font color=red>[rank]</font></td><td><a href='?_src_=prefs;jobbancheck=[rank]'> WHITELIST</a></td></tr>"
|
||||
continue
|
||||
//Hyperstation Edit end
|
||||
var/required_playtime_remaining = job.required_playtime_remaining(user.client)
|
||||
if(required_playtime_remaining)
|
||||
HTML += "<font color=red>[rank]</font></td><td><font color=red> \[ [get_exp_format(required_playtime_remaining)] as [job.get_exp_req_type()] \] </font></td></tr>"
|
||||
|
||||
@@ -28,6 +28,46 @@
|
||||
allowed = list (/obj/item/gun/energy/laser/redtag)
|
||||
resistance_flags = NONE
|
||||
|
||||
/*
|
||||
* Posshim's Corpus atire
|
||||
*/
|
||||
/obj/item/clothing/suit/hooded/corpus/
|
||||
name = "Standard Voidsuit"
|
||||
desc = "Standard issue voidsuit in the name of Grofit!"
|
||||
icon_state = "corpus"
|
||||
item_state = "armor"
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS|FEET|HANDS
|
||||
hoodtype = /obj/item/clothing/head/hooded/corpus
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT //"Hide shoes" but digi shoes dont get hidden, too bad!
|
||||
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION //There is no need for a digi variant, it's a costume
|
||||
|
||||
/obj/item/clothing/suit/hooded/corpus/s //sec
|
||||
name = "Enforcer Voidsuit"
|
||||
desc = "Delux issue grofit voidsuit. Let the middle class know You're in charge."
|
||||
icon_state = "corpuss"
|
||||
hoodtype = /obj/item/clothing/head/hooded/corpus/s //Enjoy this nice red outfit Kinaris! There is NO NEED for a pink one! xoxo -VivI Fanteriso
|
||||
|
||||
/obj/item/clothing/suit/hooded/corpus/c //command
|
||||
name = "Commander Voidsuit"
|
||||
desc = "Premium issue correctional worker attire. Grease the gears of production."
|
||||
icon_state = "corpusc"
|
||||
hoodtype = /obj/item/clothing/head/hooded/corpus/c
|
||||
|
||||
/obj/item/clothing/head/hooded/corpus
|
||||
name = "Voidsuit helmet"
|
||||
desc = "galvanized reinforced helm to protect against the elements"
|
||||
icon_state = "corpus"
|
||||
body_parts_covered = HEAD
|
||||
flags_inv = HIDEHAIR|HIDEEARS|HIDEFACIALHAIR|HIDEFACE|HIDEMASK|HIDESNOUT|HIDENECK //hide your ugly face with this one simple trick!
|
||||
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
|
||||
|
||||
/obj/item/clothing/head/hooded/corpus/s //sec
|
||||
icon_state = "corpuss"
|
||||
|
||||
/obj/item/clothing/head/hooded/corpus/c //command
|
||||
icon_state = "corpusc"
|
||||
|
||||
/*
|
||||
* Costume
|
||||
*/
|
||||
|
||||
@@ -127,13 +127,13 @@
|
||||
return list(ACCESS_CENT_GENERAL, ACCESS_CENT_LIVING, ACCESS_CENT_BAR)
|
||||
|
||||
/proc/get_all_accesses()
|
||||
return list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_FORENSICS_LOCKERS, ACCESS_COURT, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP,
|
||||
return list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_FORENSICS_LOCKERS, ACCESS_COURT, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP, ACCESS_LAMBENT,
|
||||
ACCESS_MEDICAL, ACCESS_GENETICS, ACCESS_MORGUE, ACCESS_RD,
|
||||
ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_CHEMISTRY, ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_MAINT_TUNNELS,
|
||||
ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD,
|
||||
ACCESS_TELEPORTER, ACCESS_EVA, ACCESS_HEADS, ACCESS_CAPTAIN, ACCESS_ALL_PERSONAL_LOCKERS,
|
||||
ACCESS_TECH_STORAGE, ACCESS_CHAPEL_OFFICE, ACCESS_ATMOSPHERICS, ACCESS_KITCHEN,
|
||||
ACCESS_BAR, ACCESS_JANITOR, ACCESS_CREMATORIUM, ACCESS_ROBOTICS, ACCESS_CARGO, ACCESS_CONSTRUCTION,
|
||||
ACCESS_BAR, ACCESS_JANITOR, ACCESS_CREMATORIUM, ACCESS_ROBOTICS, ACCESS_CARGO, ACCESS_CONSTRUCTION, ACCESS_BARISTA, ACCESS_BARBER,
|
||||
ACCESS_HYDROPONICS, ACCESS_LIBRARY, ACCESS_LAWYER, ACCESS_VIROLOGY, ACCESS_CMO, ACCESS_QM, ACCESS_SURGERY,
|
||||
ACCESS_THEATRE, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_MAILSORTING, ACCESS_WEAPONS,
|
||||
ACCESS_VAULT, ACCESS_MINING_STATION, ACCESS_XENOBIOLOGY, ACCESS_CE, ACCESS_HOP, ACCESS_HOS, ACCESS_RC_ANNOUNCE,
|
||||
@@ -161,9 +161,9 @@
|
||||
if(0)
|
||||
return get_all_accesses()
|
||||
if(1) //station general
|
||||
return list(ACCESS_KITCHEN,ACCESS_BAR, ACCESS_HYDROPONICS, ACCESS_JANITOR, ACCESS_CHAPEL_OFFICE, ACCESS_CREMATORIUM, ACCESS_LIBRARY, ACCESS_THEATRE, ACCESS_LAWYER)
|
||||
return list(ACCESS_KITCHEN,ACCESS_BAR, ACCESS_HYDROPONICS, ACCESS_JANITOR, ACCESS_CHAPEL_OFFICE, ACCESS_CREMATORIUM, ACCESS_LIBRARY, ACCESS_THEATRE, ACCESS_LAWYER, ACCESS_BARISTA, ACCESS_BARBER)
|
||||
if(2) //security
|
||||
return list(ACCESS_SEC_DOORS, ACCESS_WEAPONS, ACCESS_SECURITY, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_FORENSICS_LOCKERS, ACCESS_COURT, ACCESS_HOS, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP)
|
||||
return list(ACCESS_SEC_DOORS, ACCESS_WEAPONS, ACCESS_SECURITY, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_FORENSICS_LOCKERS, ACCESS_COURT, ACCESS_HOS, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP, ACCESS_LAMBENT)
|
||||
if(3) //medbay
|
||||
return list(ACCESS_MEDICAL, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MORGUE, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_SURGERY, ACCESS_CMO, ACCESS_PSYCH)
|
||||
if(4) //research
|
||||
@@ -224,6 +224,10 @@
|
||||
return "RD Office"
|
||||
if(ACCESS_BAR)
|
||||
return "Bar"
|
||||
if(ACCESS_BARBER)
|
||||
return "Barber"
|
||||
if(ACCESS_BARISTA)
|
||||
return "Barista"
|
||||
if(ACCESS_JANITOR)
|
||||
return "Custodial Closet"
|
||||
if(ACCESS_ENGINE)
|
||||
@@ -322,6 +326,8 @@
|
||||
return "Prison Turnstile Entrance"
|
||||
if(ACCESS_LEAVE_GENPOP)
|
||||
return "Prison Turnstile Exit"
|
||||
if(ACCESS_LAMBENT)
|
||||
return "Lambent's Quarters"
|
||||
if(ACCESS_MINERAL_STOREROOM)
|
||||
return "Mineral Storage"
|
||||
if(ACCESS_MINISAT)
|
||||
@@ -357,10 +363,10 @@
|
||||
return "Code Scotch"
|
||||
|
||||
/proc/get_all_jobs()
|
||||
return list("Assistant", "Captain", "Head of Personnel", "Bartender", "Cook", "Botanist", "Quartermaster", "Cargo Technician",
|
||||
return list("Assistant", "Captain", "Head of Personnel", "Bartender", "Barista", "Barber", "Cook", "Botanist", "Quartermaster", "Cargo Technician",
|
||||
"Shaft Miner", "Clown", "Mime", "Janitor", "Curator", "Lawyer", "Chaplain", "Chief Engineer", "Station Engineer", "Engineering Intern",
|
||||
"Atmospheric Technician", "Chief Medical Officer", "Medical Doctor", "Chemist", "Geneticist", "Virologist", "Psychologist", "Medical Resident",
|
||||
"Research Director", "Scientist", "Roboticist", "Research Student", "Head of Security", "Warden", "Detective", "Security Officer", "Rookie")
|
||||
"Research Director", "Scientist", "Roboticist", "Research Student", "Head of Security", "Warden", "Detective", "Security Officer", "Rookie", "Lambent")
|
||||
|
||||
/proc/get_all_job_icons() //For all existing HUD icons
|
||||
return get_all_jobs() + list("Prisoner")
|
||||
|
||||
@@ -100,13 +100,13 @@ Head of Personnel
|
||||
outfit = /datum/outfit/job/hop
|
||||
|
||||
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_WEAPONS,
|
||||
ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS,
|
||||
ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS, ACCESS_BARISTA, ACCESS_BARBER,
|
||||
ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE,
|
||||
ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_LAWYER,
|
||||
ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_VAULT, ACCESS_MINING_STATION,
|
||||
ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM, ACCESS_PSYCH)
|
||||
minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_WEAPONS,
|
||||
ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS,
|
||||
ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS, ACCESS_BARISTA, ACCESS_BARBER,
|
||||
ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE,
|
||||
ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_LAWYER,
|
||||
ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_VAULT, ACCESS_MINING_STATION,
|
||||
|
||||
@@ -170,7 +170,7 @@ Bartender
|
||||
|
||||
outfit = /datum/outfit/job/bartender
|
||||
|
||||
access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM)
|
||||
access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM)
|
||||
minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM)
|
||||
|
||||
|
||||
@@ -183,7 +183,7 @@ Bartender
|
||||
ears = /obj/item/radio/headset/headset_srv
|
||||
uniform = /obj/item/clothing/under/rank/bartender
|
||||
suit = /obj/item/clothing/suit/armor/vest
|
||||
backpack_contents = list(/obj/item/storage/box/beanbag=1,/obj/item/book/granter/action/drink_fling=1)
|
||||
backpack_contents = list(/obj/item/book/granter/action/drink_fling=1)
|
||||
shoes = /obj/item/clothing/shoes/laceup
|
||||
|
||||
/*
|
||||
@@ -195,7 +195,7 @@ Cook
|
||||
department_head = list("Head of Personnel")
|
||||
department_flag = CIVILIAN
|
||||
faction = "Station"
|
||||
total_positions = 2
|
||||
total_positions = 1
|
||||
spawn_positions = 1
|
||||
supervisors = "the head of personnel"
|
||||
selection_color = "#bbe291"
|
||||
|
||||
@@ -27,11 +27,11 @@ Head of Security
|
||||
outfit = /datum/outfit/job/hos
|
||||
|
||||
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP,
|
||||
ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS,
|
||||
ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_BARISTA, ACCESS_BARBER,
|
||||
ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING,
|
||||
ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM)
|
||||
minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP,
|
||||
ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS,
|
||||
ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_BARISTA, ACCESS_BARBER,
|
||||
ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING,
|
||||
ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM)
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
GLOBAL_LIST_INIT(command_positions, list(
|
||||
"Captain",
|
||||
"Lambent",
|
||||
"Head of Personnel",
|
||||
"Head of Security",
|
||||
"Chief Engineer",
|
||||
@@ -37,6 +38,8 @@ GLOBAL_LIST_INIT(supply_positions, list(
|
||||
|
||||
GLOBAL_LIST_INIT(civilian_positions, list(
|
||||
"Head of Personnel",
|
||||
"Barista",
|
||||
"Barber",
|
||||
"Bartender",
|
||||
"Botanist",
|
||||
"Cook",
|
||||
@@ -60,6 +63,9 @@ GLOBAL_LIST_INIT(nonhuman_positions, list(
|
||||
"Cyborg",
|
||||
ROLE_PAI))
|
||||
|
||||
GLOBAL_LIST_INIT(important_positions, list(
|
||||
"Lambent"))
|
||||
|
||||
GLOBAL_LIST_INIT(silly_positions, list(
|
||||
"Clown",
|
||||
"Mime"))
|
||||
|
||||
@@ -5,24 +5,30 @@
|
||||
icon_state = "caucasian_m"
|
||||
appearance_flags = KEEP_TOGETHER|TILE_BOUND|PIXEL_SCALE|LONG_GLIDE
|
||||
|
||||
|
||||
/mob/living/carbon/human/Initialize()
|
||||
add_verb(src, /mob/living/proc/mob_sleep)
|
||||
add_verb(src, /mob/living/proc/lay_down)
|
||||
time_initialized = world.time
|
||||
|
||||
//initialize limbs first
|
||||
create_bodyparts()
|
||||
|
||||
//initialize dna. for spawned humans; overwritten by other code
|
||||
create_dna(src)
|
||||
randomize_human(src)
|
||||
dna.initialize_dna()
|
||||
|
||||
if(dna.species)
|
||||
set_species(dna.species.type)
|
||||
|
||||
//initialise organs
|
||||
create_internal_organs() //most of it is done in set_species now, this is only for parent call
|
||||
physiology = new()
|
||||
|
||||
AddComponent(/datum/component/personal_crafting)
|
||||
|
||||
. = ..()
|
||||
|
||||
RegisterSignal(src, COMSIG_COMPONENT_CLEAN_ACT, /mob/living/carbon/human/clean_blood)
|
||||
|
||||
|
||||
|
||||
@@ -77,7 +77,8 @@
|
||||
var/mob/living/carbon/human/B = src
|
||||
if(HAS_TRAIT(B, TRAIT_CHOKE_SLUT))
|
||||
B.adjustArousalLoss(7)
|
||||
B.mob_climax_instant()
|
||||
if (B.getArousalLoss() >= 100 && ishuman(B) && B.has_dna())
|
||||
B.mob_climax(forced_climax=TRUE)
|
||||
else
|
||||
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "suffocation", /datum/mood_event/suffocation)
|
||||
else
|
||||
|
||||
@@ -463,7 +463,7 @@
|
||||
/obj/item/paint/anycolor,
|
||||
/obj/item/cookiesynth,
|
||||
/obj/item/pneumatic_cannon/pie/selfcharge/cyborg,
|
||||
/obj/item/razor, //killbait material
|
||||
///obj/item/razor, //killbait material
|
||||
/obj/item/lipstick/purple,
|
||||
/obj/item/soap/nanotrasen,
|
||||
/obj/item/reagent_containers/spray/waterflower/cyborg,
|
||||
@@ -497,7 +497,7 @@
|
||||
/obj/item/toy/crayon/spraycan/borg,
|
||||
/obj/item/extinguisher/mini,
|
||||
/obj/item/hand_labeler/borg,
|
||||
/obj/item/razor,
|
||||
///obj/item/razor,
|
||||
/obj/item/crowbar/cyborg,
|
||||
/obj/item/instrument/violin,
|
||||
/obj/item/soap/nanotrasen,
|
||||
|
||||
@@ -132,7 +132,7 @@
|
||||
if(inventory_back)
|
||||
armorval += inventory_back.armor.getRating(type)
|
||||
return armorval*0.5
|
||||
|
||||
/*
|
||||
/mob/living/simple_animal/pet/dog/corgi/attackby(obj/item/O, mob/user, params)
|
||||
if (istype(O, /obj/item/razor))
|
||||
if (shaved)
|
||||
@@ -155,7 +155,7 @@
|
||||
return
|
||||
..()
|
||||
update_corgi_fluff()
|
||||
|
||||
*/
|
||||
/mob/living/simple_animal/pet/dog/corgi/Topic(href, href_list)
|
||||
if(!(iscarbon(usr) || iscyborg(usr)) || !usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
usr << browse(null, "window=mob[REF(src)]")
|
||||
|
||||
@@ -282,16 +282,16 @@
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
if(chalice_taken)
|
||||
if(chalice_taken == 1)
|
||||
to_chat(user, "<i>You hear a voice in your head... <b>\"My chalice has already been taken, dear. I cannot give you another...\"</i></b>")
|
||||
return
|
||||
if(user.getArousalLoss() < 100)
|
||||
to_chat(user, "<i>You hear a voice in your head... <b>\"You are not horny enough to receive my blessing, dear~\"</i></b>")
|
||||
return
|
||||
var/mob/living/carbon/user_carbon = user
|
||||
user_carbon.mob_climax_instant()
|
||||
to_chat(user, "<i>You hear a voice in your head... <b>\"You are worthy of my blessing, dear~\"</i></b>")
|
||||
to_chat(user, "<span class='userdanger'>You feel overpowering pleasure surge through your entire body.</span>")
|
||||
var/A = new /obj/item/reagent_containers/chalice/lust
|
||||
user.put_in_hands(A)
|
||||
chalice_taken = TRUE
|
||||
if (ishuman(user) && user.has_dna())
|
||||
user.mob_climax(forced_climax=TRUE)
|
||||
to_chat(user, "<i>You hear a voice in your head... <b>\"You are worth of my blessing dear~\"</i></b>")
|
||||
to_chat(user, "<span class='userdanger'>You feel overpowering pleasure surge through your entire body.</span>")
|
||||
var/A = new /obj/item/reagent_containers/chalice/lust
|
||||
user.put_in_hands(A)
|
||||
chalice_taken = 1
|
||||
@@ -5,6 +5,8 @@ $include dbconfig.txt
|
||||
$include comms.txt
|
||||
$include antag_rep.txt
|
||||
$include donator_groupings.txt
|
||||
# Hyperstation Configs...
|
||||
$include hyperstation/jobs.txt
|
||||
|
||||
# You can use the @ character at the beginning of a config option to lock it from being edited in-game
|
||||
# Example usage:
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
# Allow time off to be enabled
|
||||
## Uncomment to allow players to use their accrued time off
|
||||
## Defaults to off because this requires the database unless you want them to
|
||||
## use only what they accrued during the current round
|
||||
#TIME_OFF
|
||||
|
||||
# Allow PTO job changes
|
||||
## Currently this is required if using the previous to allow users to change
|
||||
## jobs. This may be changed in the future and can be used to expand the functionality
|
||||
## for something such as on-the-go job changing within the department, without heads.
|
||||
## Thus it remains here.
|
||||
#PTO_JOB_CHANGE
|
||||
@@ -3,6 +3,7 @@
|
||||
#Job names must be identical to the title var of each job datum
|
||||
#Positions can be set to -1 to allow unlimited slots
|
||||
Captain=1,1
|
||||
Lambent=1,1
|
||||
Head of Personnel=1,1
|
||||
Head of Security=1,1
|
||||
Chief Engineer=1,1
|
||||
@@ -16,7 +17,9 @@ Cargo Technician=3,2
|
||||
Shaft Miner=3,3
|
||||
|
||||
Bartender=1,1
|
||||
Cook=2,1
|
||||
Barista=1,1
|
||||
Barber=2,1
|
||||
Cook=1,1
|
||||
Botanist=3,2
|
||||
Janitor=2,1
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 1.9 KiB |
@@ -0,0 +1,11 @@
|
||||
///////////////
|
||||
// PTO Types //
|
||||
///////////////
|
||||
#define PTO_COMMAND "Command"
|
||||
#define PTO_SECURITY "Security"
|
||||
#define PTO_MEDICAL "Medical"
|
||||
#define PTO_ENGINEERING "Engineering"
|
||||
#define PTO_SCIENCE "Science"
|
||||
#define PTO_CARGO "Cargo"
|
||||
#define PTO_CIVILIAN "Civilian"
|
||||
#define PTO_CYBORG "Silicon"
|
||||
@@ -0,0 +1,11 @@
|
||||
/// Toggles time off for jobs
|
||||
/datum/config_entry/flag/time_off
|
||||
|
||||
/// Toggles changing jobs with PTO
|
||||
/datum/config_entry/flag/pto_job_change
|
||||
|
||||
/// PTO hour cap
|
||||
/datum/config_entry/number/pto_cap
|
||||
config_entry_value = 100 /// Total hours
|
||||
min_val = 0 /// Minimum hourly value
|
||||
integer = FALSE /// We can be a float for partial hours
|
||||
@@ -0,0 +1,18 @@
|
||||
/**
|
||||
* Some modifications to the jobs subsystem, courtesy of SandPoot.
|
||||
* If we pull from upstream we should have this somewhere at some point, so it's shoehorned
|
||||
* in here for the moment.
|
||||
* Insert unhelpful comment here.
|
||||
*/
|
||||
|
||||
/datum/controller/subsystem/job/proc/get_job_name(job_name)
|
||||
if (!job_name)
|
||||
return "Unknown" // Invalid job
|
||||
//var/all_alt_titles = get_all_alt_titles()
|
||||
//if (job_name in all_alt_titles) // Check if the name is an alt title
|
||||
//return get_job_name(all_alt_titles[job_name]) // Locate the original job title and return it
|
||||
if (job_name in get_all_job_icons()) // Check if the job has a HUD icon
|
||||
return job_name
|
||||
if (job_name in get_all_centcom_jobs()) // Return the NT logo if it is a CentCom job
|
||||
return "CentCom"
|
||||
return "Unknown" // Return unknown if none of the above apply
|
||||
@@ -0,0 +1,467 @@
|
||||
/area/barber
|
||||
name = "Barber's Shop"
|
||||
icon_state = "barber"
|
||||
|
||||
/area/kinarisrep
|
||||
name = "Kinaris Representative Office"
|
||||
|
||||
/area/crew_quarters/bar/cafe
|
||||
name = "Cafe"
|
||||
icon_state = "cafe"
|
||||
|
||||
/area/crew_quarters/bar/cafe/backroom
|
||||
name = "Cafe Backroom"
|
||||
icon_state = "bar"
|
||||
|
||||
/area/crew_quarters/bar/cafe/storage
|
||||
name = "Cafe Storage"
|
||||
icon_state = "bar"
|
||||
|
||||
/area/artatrium
|
||||
name = "Art Atrium"
|
||||
icon_state = "library"
|
||||
|
||||
/area/crew_quarters/spa
|
||||
name = "Spa"
|
||||
icon_state = "sauna"
|
||||
|
||||
/area/crew_quarters/spa/sauna
|
||||
name = "Sauna"
|
||||
|
||||
/area/security/lambent
|
||||
name = "Lambent's Quarters"
|
||||
icon_state = "detective"
|
||||
|
||||
//In hindsight a lot of how this set up was stupid and I should probably redo it -Dahl
|
||||
//Upper Hallways
|
||||
/area/hallway/primary/aft/upper
|
||||
name = "Upper Aft Primary Hallway"
|
||||
icon_state = "hallA"
|
||||
|
||||
/area/hallway/primary/fore/upper
|
||||
name = "Upper Fore Primary Hallway"
|
||||
icon_state = "hallF"
|
||||
|
||||
/area/hallway/primary/starboard/upper
|
||||
name = "Upper Starboard Primary Hallway"
|
||||
icon_state = "hallS"
|
||||
|
||||
/area/hallway/primary/starboard/aft/upper
|
||||
name = "Upper Starboard Quarter Primary Hallway"
|
||||
icon_state = "hallAS"
|
||||
|
||||
/area/hallway/primary/starboard/fore/upper
|
||||
name = "Upper Starboard Bow Primary Hallway"
|
||||
icon_state = "hallFS"
|
||||
|
||||
/area/hallway/primary/port/upper
|
||||
name = "Upper Port Primary Hallway"
|
||||
icon_state = "hallP"
|
||||
|
||||
/area/hallway/primary/port/aft/upper
|
||||
name = "Upper Port Quarter Primary Hallway"
|
||||
icon_state = "hallAP"
|
||||
|
||||
/area/hallway/primary/port/fore/upper
|
||||
name = "Upper Port Bow Primary Hallway"
|
||||
icon_state = "hallFP"
|
||||
|
||||
/area/hallway/primary/central/upper
|
||||
name = "Upper Central Primary Hallway"
|
||||
icon_state = "hallC"
|
||||
|
||||
/area/hallway/secondary/command/upper
|
||||
name = "Upper Command Hallway"
|
||||
icon_state = "bridge_hallway"
|
||||
|
||||
/area/hallway/secondary/construction/upper
|
||||
name = "Upper Construction Area"
|
||||
icon_state = "construction"
|
||||
|
||||
/area/hallway/secondary/exit/upper
|
||||
name = "Upper Escape Shuttle Hallway"
|
||||
icon_state = "escape"
|
||||
|
||||
/area/hallway/secondary/exit/departure_lounge/upper
|
||||
name = "Upper Departure Lounge"
|
||||
icon_state = "escape_lounge"
|
||||
|
||||
/area/hallway/secondary/entry/upper
|
||||
name = "Upper Arrival Shuttle Hallway"
|
||||
icon_state = "entry"
|
||||
|
||||
/area/hallway/secondary/service/upper
|
||||
name = "Upper Service Hallway"
|
||||
icon_state = "hall_service"
|
||||
|
||||
//Upper Dorms
|
||||
/area/crew_quarters/dorms/upper
|
||||
name = "Upper Dormitories"
|
||||
icon_state = "Sleep"
|
||||
safe = TRUE
|
||||
|
||||
/area/crew_quarters/toilet/upper
|
||||
name = "Upper Dormitory Toilets"
|
||||
icon_state = "toilet"
|
||||
|
||||
/area/crew_quarters/locker/upper
|
||||
name = "Upper Locker Room"
|
||||
icon_state = "locker"
|
||||
|
||||
//Upper Medbay
|
||||
/area/medical/medbay/upper
|
||||
name = "Upper Medbay"
|
||||
icon_state = "medbay"
|
||||
music = 'sound/ambience/signal.ogg'
|
||||
|
||||
//Upper Maints
|
||||
//Departments
|
||||
|
||||
/area/maintenance/department/chapel/upper
|
||||
name = "Upper Chapel Maintenance"
|
||||
icon_state = "maint_chapel"
|
||||
|
||||
/area/maintenance/department/chapel/monastery/upper
|
||||
name = "Upper Monastery Maintenance"
|
||||
icon_state = "maint_monastery"
|
||||
|
||||
/area/maintenance/department/crew_quarters/bar/upper
|
||||
name = "Upper Bar Maintenance"
|
||||
icon_state = "maint_bar"
|
||||
|
||||
/area/maintenance/department/crew_quarters/dorms/upper
|
||||
name = "Upper Dormitory Maintenance"
|
||||
icon_state = "maint_dorms"
|
||||
|
||||
/area/maintenance/department/crew_quarters/locker/upper
|
||||
name = "Upper Locker Room Maintenance"
|
||||
icon_state = "maint_locker"
|
||||
|
||||
/area/maintenance/department/eva/upper
|
||||
name = "Upper EVA Maintenance"
|
||||
icon_state = "maint_eva"
|
||||
|
||||
/area/maintenance/department/electrical/upper
|
||||
name = "Upper Electrical Maintenance"
|
||||
icon_state = "maint_electrical"
|
||||
|
||||
/area/maintenance/department/engine/atmos/upper
|
||||
name = "Upper Atmospherics Maintenance"
|
||||
icon_state = "maint_atmos"
|
||||
|
||||
/area/maintenance/department/security/upper
|
||||
name = "Upper Security Maintenance"
|
||||
icon_state = "maint_sec"
|
||||
|
||||
/area/maintenance/department/security/brig/upper
|
||||
name = "Upper Brig Maintenance"
|
||||
icon_state = "maint_brig"
|
||||
|
||||
/area/maintenance/department/medical/upper
|
||||
name = "Upper Medbay Maintenance"
|
||||
icon_state = "medbay_maint"
|
||||
|
||||
/area/maintenance/department/medical/morgue/upper
|
||||
name = "Upper Morgue Maintenance"
|
||||
icon_state = "morgue_maint"
|
||||
|
||||
/area/maintenance/department/science/upper
|
||||
name = "Upper Science Maintenance"
|
||||
icon_state = "maint_sci"
|
||||
|
||||
/area/maintenance/department/cargo/upper
|
||||
name = "Upper Cargo Maintenance"
|
||||
icon_state = "maint_cargo"
|
||||
|
||||
/area/maintenance/department/bridge/upper
|
||||
name = "Upper Bridge Maintenance"
|
||||
icon_state = "maint_bridge"
|
||||
|
||||
/area/maintenance/department/engine/upper
|
||||
name = "Upper Engineering Maintenance"
|
||||
icon_state = "maint_engi"
|
||||
|
||||
/area/maintenance/department/science/xenobiology/upper
|
||||
name = "Upper Xenobiology Maintenance"
|
||||
icon_state = "xenomaint"
|
||||
xenobiology_compatible = TRUE
|
||||
|
||||
|
||||
//Generic
|
||||
|
||||
/area/maintenance/arrivals/north/upper
|
||||
name = "Upper Arrivals North Maintenance"
|
||||
icon_state = "fpmaint"
|
||||
|
||||
/area/maintenance/arrivals/north_2/upper
|
||||
name = "Upper Arrivals North Maintenance"
|
||||
icon_state = "fpmaint"
|
||||
|
||||
/area/maintenance/aft/upper
|
||||
name = "Upper Aft Maintenance"
|
||||
icon_state = "amaint"
|
||||
|
||||
/area/maintenance/aft/secondary/upper
|
||||
name = "Upper Aft Maintenance"
|
||||
icon_state = "amaint_2"
|
||||
|
||||
/area/maintenance/central/upper
|
||||
name = "Upper Central Maintenance"
|
||||
icon_state = "maintcentral"
|
||||
|
||||
/area/maintenance/central/secondary/upper
|
||||
name = "Upper Central Maintenance"
|
||||
icon_state = "maintcentral"
|
||||
|
||||
/area/maintenance/fore/upper
|
||||
name = "Upper Fore Maintenance"
|
||||
icon_state = "fmaint"
|
||||
|
||||
/area/maintenance/fore/secondary/upper
|
||||
name = "Upper Fore Maintenance"
|
||||
icon_state = "fmaint_2"
|
||||
|
||||
/area/maintenance/starboard/upper
|
||||
name = "Upper Starboard Maintenance"
|
||||
icon_state = "smaint"
|
||||
|
||||
/area/maintenance/starboard/central/upper
|
||||
name = "Upper Central Starboard Maintenance"
|
||||
icon_state = "smaint"
|
||||
|
||||
/area/maintenance/starboard/aft/upper
|
||||
name = "Upper Starboard Quarter Maintenance"
|
||||
icon_state = "asmaint"
|
||||
|
||||
/area/maintenance/starboard/fore/upper
|
||||
name = "Upper Starboard Bow Maintenance"
|
||||
icon_state = "fsmaint"
|
||||
|
||||
/area/maintenance/port/upper
|
||||
name = "Upper Port Maintenance"
|
||||
icon_state = "pmaint"
|
||||
|
||||
/area/maintenance/port/central/upper
|
||||
name = "Upper Central Port Maintenance"
|
||||
icon_state = "maintcentral"
|
||||
|
||||
/area/maintenance/port/aft/upper
|
||||
name = "Upper Port Quarter Maintenance"
|
||||
icon_state = "apmaint"
|
||||
|
||||
/area/maintenance/port/fore/upper
|
||||
name = "Upper Port Bow Maintenance"
|
||||
icon_state = "fpmaint"
|
||||
|
||||
/area/maintenance/disposal/upper
|
||||
name = "Upper Waste Disposal"
|
||||
icon_state = "disposal"
|
||||
|
||||
/area/maintenance/disposal/incinerator/upper
|
||||
name = "Upper Incinerator"
|
||||
icon_state = "disposal"
|
||||
|
||||
//Misc Maint
|
||||
/area/maintenance/theatre
|
||||
name = "Theatre Maintenance"
|
||||
icon_state = "maintcentral"
|
||||
|
||||
/area/maintenance/theatre/upper
|
||||
name = "Upper Theatre Maintenance"
|
||||
icon_state = "maintcentral"
|
||||
|
||||
//Solar Maint
|
||||
|
||||
/area/maintenance/solars/upper
|
||||
name = "Upper Solar Maintenance"
|
||||
icon_state = "yellow"
|
||||
|
||||
/area/maintenance/solars/port/upper
|
||||
name = "Upper Port Solar Maintenance"
|
||||
icon_state = "SolarcontrolP"
|
||||
|
||||
/area/maintenance/solars/port/aft/upper
|
||||
name = "Upper Port Quarter Solar Maintenance"
|
||||
icon_state = "SolarcontrolAP"
|
||||
|
||||
/area/maintenance/solars/port/fore/upper
|
||||
name = "Upper Port Bow Solar Maintenance"
|
||||
icon_state = "SolarcontrolFP"
|
||||
|
||||
/area/maintenance/solars/starboard/upper
|
||||
name = "Upper Starboard Solar Maintenance"
|
||||
icon_state = "SolarcontrolS"
|
||||
|
||||
/area/maintenance/solars/starboard/aft/upper
|
||||
name = "Upper Starboard Quarter Solar Maintenance"
|
||||
icon_state = "SolarcontrolAS"
|
||||
|
||||
/area/maintenance/solars/starboard/fore/upper
|
||||
name = "Upper Starboard Bow Solar Maintenance"
|
||||
icon_state = "SolarcontrolFS"
|
||||
|
||||
/area/maintenance/solars/aux/port/upper
|
||||
name = "Upper Port Auxiliary Solar Maintenance"
|
||||
icon_state = "SolarcontrolA"
|
||||
|
||||
/area/maintenance/solars/aux/port/aft/upper
|
||||
name = "Upper Port Quarter Auxiliary Solar Maintenance"
|
||||
icon_state = "SolarcontrolAP"
|
||||
|
||||
/area/maintenance/solars/aux/port/fore/upper
|
||||
name = "Upper Port Bow Auxiliary Solar Maintenance"
|
||||
icon_state = "SolarcontrolA"
|
||||
|
||||
/area/maintenance/solars/aux/starboard/upper
|
||||
name = "Upper Starboard Auxiliary Solar Maintenance"
|
||||
icon_state = "SolarcontrolA"
|
||||
|
||||
/area/maintenance/solars/aux/starboard/aft/upper
|
||||
name = "Upper Starboard Quarter Auxiliary Solar Maintenance"
|
||||
icon_state = "SolarcontrolA"
|
||||
|
||||
/area/maintenance/solars/aux/starboard/fore/upper
|
||||
name = "Upper Starboard Bow Auxiliary Solar Maintenance"
|
||||
icon_state = "SolarcontrolA"
|
||||
|
||||
//Upper Security
|
||||
/area/security/upper
|
||||
name = "Upper Security"
|
||||
icon_state = "security"
|
||||
ambientsounds = HIGHSEC
|
||||
|
||||
/area/security/main/upper
|
||||
name = "Upper Security Office"
|
||||
icon_state = "security"
|
||||
|
||||
/area/security/brig/upper
|
||||
name = "Upper Brig"
|
||||
icon_state = "brig"
|
||||
|
||||
/area/security/courtroom/upper
|
||||
name = "Upper Courtroom"
|
||||
icon_state = "courtroom"
|
||||
|
||||
/area/security/prison/upper
|
||||
name = "Upper Prison Wing"
|
||||
icon_state = "sec_prison"
|
||||
|
||||
/area/security/processing/upper
|
||||
name = "Upper Labor Shuttle Dock"
|
||||
icon_state = "sec_prison"
|
||||
|
||||
/area/security/processing/cremation/upper
|
||||
name = "Upper Security Crematorium"
|
||||
icon_state = "sec_prison"
|
||||
|
||||
/area/security/warden/upper
|
||||
name = "Upper Brig Control"
|
||||
icon_state = "Warden"
|
||||
|
||||
/area/security/armory/upper
|
||||
name = "Upper Armory"
|
||||
icon_state = "armory"
|
||||
|
||||
/area/security/detectives_office/upper
|
||||
name = "Detective's Office"
|
||||
icon_state = "detective"
|
||||
ambientsounds = list('sound/ambience/ambidet1.ogg','sound/ambience/ambidet2.ogg')
|
||||
|
||||
/area/security/detectives_office/private_investigators_office/upper
|
||||
name = "Upper Private Investigator's Office"
|
||||
icon_state = "detective"
|
||||
|
||||
/area/security/range/upper
|
||||
name = "Upper Firing Range"
|
||||
icon_state = "firingrange"
|
||||
|
||||
//Misc security
|
||||
/area/security/locker
|
||||
name = "Security Locker Room"
|
||||
icon_state = "brig"
|
||||
|
||||
/area/security/visitation
|
||||
name = "Security Visitation"
|
||||
icon_state = "brig"
|
||||
|
||||
//Misc Dorms
|
||||
/area/crew_quarters/dorms/A
|
||||
name = "Dormitories A"
|
||||
icon_state = "Sleep"
|
||||
safe = TRUE
|
||||
|
||||
/area/crew_quarters/dorms/B
|
||||
name = "Dormitories B"
|
||||
icon_state = "Sleep"
|
||||
safe = TRUE
|
||||
|
||||
/area/crew_quarters/dorms/C
|
||||
name = "Dormitories C"
|
||||
icon_state = "Sleep"
|
||||
safe = TRUE
|
||||
|
||||
/area/crew_quarters/dorms/D
|
||||
name = "Dormitories D"
|
||||
icon_state = "Sleep"
|
||||
safe = TRUE
|
||||
|
||||
/area/crew_quarters/dorms/E
|
||||
name = "Dormitories E"
|
||||
icon_state = "Sleep"
|
||||
safe = TRUE
|
||||
|
||||
/area/crew_quarters/dorms/F
|
||||
name = "Dormitories F"
|
||||
icon_state = "Sleep"
|
||||
safe = TRUE
|
||||
|
||||
/area/crew_quarters/dorms/G
|
||||
name = "Dormitories G"
|
||||
icon_state = "Sleep"
|
||||
safe = TRUE
|
||||
|
||||
/area/crew_quarters/dorms/H
|
||||
name = "Dormitories H"
|
||||
icon_state = "Sleep"
|
||||
safe = TRUE
|
||||
|
||||
/area/crew_quarters/park
|
||||
name = "Park"
|
||||
icon_state = "park"
|
||||
|
||||
/area/janitor/upper
|
||||
name = "Upper Custodial Closet"
|
||||
|
||||
/area/storage/A
|
||||
name = "Storage Office A"
|
||||
icon_state = "storage"
|
||||
|
||||
/area/storage/B
|
||||
name = "Storage Office B"
|
||||
icon_state = "storage"
|
||||
|
||||
/area/storage/C
|
||||
name = "Storage Office C"
|
||||
icon_state = "storage"
|
||||
|
||||
/area/storage/D
|
||||
name = "Storage Office D"
|
||||
icon_state = "storage"
|
||||
|
||||
/area/theatre/blackbox
|
||||
name = "Theatre Blackbox"
|
||||
icon_state = "Theatre"
|
||||
|
||||
//Misc cargo
|
||||
/area/quartermaster/mail
|
||||
name = "Mail Office"
|
||||
icon_state = "cargo_mail"
|
||||
|
||||
//Misc Engineering
|
||||
/area/engine/custom
|
||||
name = "Custom Engine Room"
|
||||
icon_state = "engine"
|
||||
|
||||
/area/engine/tether
|
||||
name = "Sky Tether Control"
|
||||
icon_state = "engine"
|
||||
@@ -0,0 +1,3 @@
|
||||
/obj/machinery/announcement_system
|
||||
var/onduty = "%PERSON has moved On-Duty as %RANK."
|
||||
var/offduty = "%PERSON, %RANK, has moved Off-Duty."
|
||||
@@ -0,0 +1,310 @@
|
||||
/// Timeclock terminal, ported from VOREStation
|
||||
/obj/machinery/computer/timeclock
|
||||
name = "timeclock terminal" // Name of the object
|
||||
icon = 'hyperstation/icons/obj/machinery/timeclock.dmi' // Spritesheet for the object's icon
|
||||
icon_state = "timeclock" // Icon state from the spritesheet
|
||||
icon_keyboard = null // Keyboard state because this is a computer and we need to tell it to not have a keyboard
|
||||
light_color = "#0099ff" // TODO: Adjust this // Color for the light coming from the object
|
||||
light_power = 0.5 // Brightness of the light coming from the object
|
||||
layer = ABOVE_WINDOW_LAYER // Layer for the object
|
||||
density = FALSE // Density of the object, so we can walk through it
|
||||
circuit = /obj/item/circuitboard/computer/timeclock // Circuitboard for the object in case it gets destroyed
|
||||
|
||||
var/obj/item/card/id/card // Inserted ID card
|
||||
|
||||
/// For when we create a new timeclock
|
||||
/obj/machinery/computer/timeclock/New()
|
||||
..() // Let's do this just to be safe.
|
||||
|
||||
// For when a timeclock is destroyed
|
||||
/obj/machinery/computer/timeclock/Destroy()
|
||||
if (card) // If we're holding an ID and get destroyed
|
||||
card.forceMove(get_turf(src)) // Get rid of the fucker
|
||||
card = null // And make sure we know it's gone
|
||||
. = ..() // Someone's gonna ask later, refer them here.
|
||||
// This shit just sets our return value to our parent proc's return value.
|
||||
|
||||
// Determines what icon to used based on a couple factors
|
||||
/obj/machinery/computer/timeclock/update_icon()
|
||||
if (!process()) // If we can't process
|
||||
icon_state = "[initial(icon_state)]_off" // we must be offline.
|
||||
else if (card) // If we have an ID
|
||||
icon_state = "[initial(icon_state)]_card" // display it!
|
||||
else // All else fails?
|
||||
icon_state = "[initial(icon_state)]" // We're just a clock.
|
||||
|
||||
/// Allows the timeclock to update its icon and lighting on power change, should power go out
|
||||
/obj/machinery/computer/timeclock/power_change()
|
||||
var/old_stat = stat // Save our old stats for later
|
||||
..() // Call the parent proc to handle the actual powernet shit
|
||||
if (old_stat != stat) // If our stat changed
|
||||
update_icon() // update our icon
|
||||
if (stat & NOPOWER) // If we no longer have power
|
||||
set_light(0) // turn off our lights
|
||||
else // Otherwise
|
||||
set_light(brightness_on) // turn on our lights
|
||||
|
||||
/// Handle clicking with an object
|
||||
/obj/machinery/computer/timeclock/attackby(obj/I, mob/user)
|
||||
if (istype(I, /obj/item/card/id)) // If the user clicked with an ID in hand
|
||||
if (!card && user.canUnEquip(I)) // Check if we already have an ID and that the user can drop the ID
|
||||
I.forceMove(src) // Move the ID into our own location
|
||||
card = I // Set our card to the ID
|
||||
SStgui.update_uis(src) // Update all open UIs for us
|
||||
update_icon() // Update our icon to reflect the new ID
|
||||
else if (card) // There must've already been an ID inserted
|
||||
to_chat(user, "<span class='warning'>There is already an ID card inside.</span>")
|
||||
return // Quit doing shit so we don't hit the timeclock
|
||||
. = ..() // Set our return value to that of the parent proc
|
||||
|
||||
/// Handle user clicking
|
||||
/obj/machinery/computer/timeclock/attack_hand(var/mob/user as mob)
|
||||
if (..()) // If for some reason the parent proc returns true
|
||||
return // We won't do anything
|
||||
user.set_machine(src) // Otherwise, set the mob's machine to us
|
||||
ui_interact(user) // Provide a UI to the user
|
||||
|
||||
/// Handle UI interactions with this arcane shit known as tee gee yew eye
|
||||
/obj/machinery/computer/timeclock/ui_interact(mob/user, datum/tgui/ui)
|
||||
ui = SStgui.try_update_ui(user, src, ui) // Attempt to update the UI
|
||||
if (!ui) // If the UI doesn't exist
|
||||
ui = new(user, src, "TimeClock", name) // Make a new one
|
||||
ui.open() // And open it for the user
|
||||
|
||||
/// Handle UI data
|
||||
/obj/machinery/computer/timeclock/ui_data(mob/user)
|
||||
var/list/data = ..() // Call the parent object's data proc and assign that to the data list
|
||||
|
||||
// Data for showing user's own PTO
|
||||
if (user.client) // If the client exists
|
||||
data["department_hours"] = \
|
||||
SANITIZE_LIST(user.client.department_hours) // Add the department hours list into data
|
||||
data["user_name"] = "[user]" // Set the username to the user
|
||||
|
||||
// Data about the card we put into the timeclock
|
||||
data["card"] = null // Add card data,
|
||||
data["assignment"] = null // Assignment data,
|
||||
data["job_datum"] = null // The job datum,
|
||||
data["allow_change_job"] = null // Whether or not we can change jobs,
|
||||
data["job_choices"] = null // And the possible jobs
|
||||
if (card) // If we have a card
|
||||
data["card"] = "[card]" // Set card data,
|
||||
data["assignment"] = card.assignment // Assignment data,
|
||||
var/datum/job/job = \
|
||||
SSjob.GetJob(SSjob.get_job_name(card.assignment)) // Create a new job datum,
|
||||
if (job) // If the job exists
|
||||
data["job_datum"] = list( // Set job datum to a list with
|
||||
"title" = job.title, // The job title,
|
||||
"departments" = \
|
||||
flags_to_english(job.department_flag, job.flag), // The job department,
|
||||
"selection_color" = job.selection_color, // The selection color,
|
||||
"timeoff_factor" = job.timeoff_factor, // The timeoff factor,
|
||||
"pto_department" = job.pto_type // And the PTO type
|
||||
)
|
||||
if (CONFIG_GET(flag/time_off) \
|
||||
&& CONFIG_GET(flag/pto_job_change)) // If we allow timeoff and job changing
|
||||
data["allow_change_job"] = TRUE // Add that to the data
|
||||
if (job && job.timeoff_factor < 0) // They're off duty so we have to lookup available jobs
|
||||
data["job_choices"] = \
|
||||
get_open_on_duty_jobs(user, job.pto_type) // Set the job choices
|
||||
|
||||
return data // Give back the data list for subprocs
|
||||
|
||||
/// The user interacted with me? owo!
|
||||
/obj/machinery/computer/timeclock/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
|
||||
if (..()) // Check if the parent UI had anything to say
|
||||
return TRUE // If so, we don't care to do anything
|
||||
|
||||
add_fingerprint(usr) // Add the user's fingerprint to the list so sec can find them
|
||||
|
||||
switch (action) // Check the action completed
|
||||
if ("id") // If the ID slot was clicked
|
||||
if (card) // Check if we have an ID already
|
||||
usr.put_in_hands(card) // If so, give the user the card
|
||||
card = null // And make sure we don't have it
|
||||
else // Otherwise
|
||||
var/obj/item/I = usr.get_active_held_item() // Get the item in their active hand
|
||||
if (istype(I, /obj/item/card/id) && usr.canUnEquip(I)) // Check if it's an ID and they can unequip the ID
|
||||
I.forceMove(src) // If so, move it into us
|
||||
card = I // And make sure we know we have it
|
||||
update_icon() // Update our icon too because we did something
|
||||
return TRUE // And stop handling any UI in this run
|
||||
if ("switch-to-on-duty-rank") // If they switched to on-duty
|
||||
if (check_face()) // Check that their face is visible
|
||||
if (check_card_cooldown()) // And their card isn't on cooldown
|
||||
make_on_duty(params["switch-to-on-duty-rank"], \
|
||||
params["switch-to-on-duty-assignment"]) // Finally make them on-duty with the requested rank+assignment
|
||||
usr.put_in_hands(card) // Give them their new card
|
||||
card = null // And get it out of us
|
||||
update_icon() // Update our icon in case the card was removed
|
||||
return TRUE // And stop handling UI in this run
|
||||
if ("switch-to-off-duty") // If they switched to off-duty
|
||||
if (check_face()) // Check that their face is visible
|
||||
if (check_card_cooldown()) // And that their card isn't on cooldown
|
||||
make_off_duty() // Finally make them off-duty
|
||||
usr.put_in_hands(card) // Shit out their ID into their hand
|
||||
card = null // And get rid of that card
|
||||
update_icon() // Update our icon in case the card was removed
|
||||
return TRUE // And stop handling any UI in this run
|
||||
|
||||
/// Gets the open on-duty jobs available to a user in a specified department
|
||||
/obj/machinery/computer/timeclock/proc/get_open_on_duty_jobs(var/mob/user, var/department)
|
||||
var/list/available_jobs = list() // Make a list of available jobs
|
||||
for (var/datum/job/job in SSjob.occupations) // For all jobs in existing occupations
|
||||
if (is_open_onduty_job(user, department, job)) // Check if the job is open and on-duty for a user and given department
|
||||
available_jobs[job.title] = list(job.title) // If it is, add it to the list of available jobs
|
||||
if (job.alt_titles) // If the job has alt-titles (Like Station Engineer->Mechanic)
|
||||
for (var/alt_job in job.alt_titles) // Go through all the alt titles
|
||||
if (alt_job != job.title) // And if it isn't the current job's title (Station Engineer's alt title of Station Engineer)
|
||||
available_jobs[job.title] += alt_job // Add it to the list under that job title
|
||||
return available_jobs // Return the newly-filled list of available jobs
|
||||
|
||||
/// How does xenobio work again? Oh right, we're checking the user's face here to allow access and prevent ne'er-do-wells from using someone's PTO
|
||||
/obj/machinery/computer/timeclock/proc/check_face()
|
||||
if (!card) // If no card is inserted (why are we checking their face?)
|
||||
to_chat(usr, "<span class='notice'>No ID is inserted.</span>")
|
||||
return FALSE // Face check failed
|
||||
var/mob/living/carbon/human/H = usr // Get the usr as a human data type
|
||||
if (!(istype(H))) // If they somehow aren't a human??
|
||||
to_chat(usr, "<span class='warning'>Invalid user detected. Access denied.</span>")
|
||||
return FALSE // Face check failed
|
||||
else if ((H.wear_mask && (H.wear_mask.flags_inv & HIDEFACE)) \
|
||||
|| (H.head && (H.head.flags_inv & HIDEFACE))) // No, you can't hide your face
|
||||
to_chat(usr, "<span class='warning'>Facial recognition scan failed due to physical obstruction. Access denied.</span>")
|
||||
return FALSE // Face check failed
|
||||
else if (H.get_face_name() == "Unknown" \
|
||||
|| !(H.real_name == card.registered_name)) // If they're unknown or their real name isn't the name on the ID
|
||||
to_chat(usr, "<span class='warning'>Facial recognition scan failed. Access denied.</span>")
|
||||
return FALSE // Face check failed
|
||||
else // Otherwise
|
||||
return TRUE // Face check success!
|
||||
|
||||
/// Force users to wait 10 minutes between clocking in and out
|
||||
/obj/machinery/computer/timeclock/proc/check_card_cooldown()
|
||||
if (!card) // If we don't have a card
|
||||
return FALSE // We can't check cooldown, fail the check
|
||||
var/time_left = 10 MINUTES - (world.time - card.last_job_switch) // Determine how much time is left before the next switch
|
||||
if (time_left > 0) // If there's any time left at all
|
||||
to_chat(usr, "You need to wait another [round((time_left / 10) / 60, 1)] minute\s before you can switch.")
|
||||
return FALSE // Fail the check
|
||||
return TRUE // Otherwise pass the check
|
||||
|
||||
/// Makes the active card on-duty with a set rank and assignment
|
||||
/obj/machinery/computer/timeclock/proc/make_on_duty(var/new_rank, var/new_assignment)
|
||||
var/datum/job/old_job = \
|
||||
SSjob.GetJob(SSjob.get_job_name(card.assignment)) // Get their old job from the card
|
||||
var/datum/job/new_job = SSjob.GetJob(new_rank) // And their new job from the rank
|
||||
|
||||
if (!old_job \
|
||||
|| !is_open_onduty_job(usr, old_job.pto_type, new_job)) // If there's no old job or it's not an open and on-duty job
|
||||
return // Do nothing
|
||||
if (new_assignment != new_job.title \
|
||||
&& !(new_assignment in new_job.alt_titles)) // If the new assignment isn't the new job's title or alt-title
|
||||
return // Do nothing
|
||||
if (new_job) // As long as there's a new job
|
||||
card.access = new_job.get_access() // Set the card's access to the new job's access
|
||||
card.assignment = new_assignment // And the card's assignment to the new assignment
|
||||
card.name = text(\
|
||||
"[card.registered_name]'s ID Card ([card.assignment])") // And change the card's name
|
||||
GLOB.data_core.manifest_modify(card.registered_name, \
|
||||
card.assignment) // Apply the changes to the crew manifest
|
||||
card.last_job_switch = world.time // Set the last job switch on the card to the current world time
|
||||
new_job.current_positions++ // Add one to the current positions for the new job
|
||||
var/mob/living/carbon/human/H = usr // Get the caller as a human data type
|
||||
H.mind.assigned_role = card.assignment // Set the assigned role of the caller's mind to the assignment on the card
|
||||
if (GLOB.announcement_systems.len) // If there are any announcement systems
|
||||
var/obj/machinery/announcement_system/announcer = \
|
||||
pick(GLOB.announcement_systems) // Pick an announcer, any announcer!
|
||||
announcer.announce("ONDUTY", card.registered_name, \
|
||||
card.assignment, list()) // Make the announcement for now on-duty personnel
|
||||
|
||||
/// Makes the active card off-duty
|
||||
/obj/machinery/computer/timeclock/proc/make_off_duty()
|
||||
var/datum/job/found_job = \
|
||||
SSjob.GetJob(SSjob.get_job_name(card.assignment)) // Get the current job from the inserted card
|
||||
if (!found_job) // If the card somehow doesn't have a job
|
||||
return // https://www.youtube.com/watch?v=2k0SmqbBIpQ
|
||||
var/new_dept = found_job.pto_type || PTO_CIVILIAN // New department is either the department's PTO type or civilian PTO
|
||||
var/datum/job/pto_job = null // Create a new PTO job
|
||||
for (var/datum/job/job in SSjob.occupations) // For all jobs in the list of occupations
|
||||
if (job.pto_type == new_dept \
|
||||
&& job.timeoff_factor < 0) // If the job is the department's PTO type and has a negative timeoff factor
|
||||
pto_job = job // That's the new PTO job
|
||||
break // And stop looking
|
||||
if (pto_job) // If a PTO job was found
|
||||
// Apparently we aren't using this? I don't fucking know
|
||||
// var/old_title = card.assignment
|
||||
card.access = pto_job.get_access() // Assign the PTO job's access to the ID
|
||||
card.assignment = pto_job.title // And the PTO job's title to the ID
|
||||
card.name = text(\
|
||||
"[card.registered_name]'s ID Card ([card.assignment])") // Set the card's new name
|
||||
GLOB.data_core.manifest_modify(card.registered_name, \
|
||||
card.assignment) // And apply that change to the crew manifest
|
||||
card.last_job_switch = world.time // Set the last job switch on the card to the world's current time
|
||||
var/mob/living/carbon/human/H = usr // Get the caller as a human data type
|
||||
H.mind.assigned_role = pto_job.title // Set their mind's assigned role to the PTO job's title
|
||||
found_job.current_positions-- // Remove one from the found job's position count since they no longer have that job
|
||||
if (GLOB.announcement_systems.len) // If there are any announcement systems
|
||||
var/obj/machinery/announcement_system/announcer = \
|
||||
pick(GLOB.announcement_systems) // Pick an announcement system, any announcement system!
|
||||
announcer.announce("OFFDUTY", card.registered_name, \
|
||||
card.assignment, list()) // Make an off-duty announcement with that system
|
||||
return // I really don't know why this return exists we always return anyways lol
|
||||
|
||||
/// Check if a job is open and on-duty for a given user and department
|
||||
/obj/machinery/computer/timeclock/proc/is_open_onduty_job(var/mob/user, var/department, var/datum/job/job)
|
||||
return job \
|
||||
&& job.current_positions <= job.total_positions \
|
||||
&& !jobban_isbanned(user, SSjob.get_job_name(job.title)) \
|
||||
&& job.player_old_enough(user.client) \
|
||||
&& job.pto_type == department \
|
||||
&& job.timeoff_factor > 0 // I feel like this requires some HEAVY explanation so here we go.
|
||||
// First we check if the job exists
|
||||
// Then we check that there are enough open slots
|
||||
// Then we check if the user is jobbanned or not and negate that because it'll return positive if they're banned
|
||||
// Then we have to check that they have enough playtime to actually join as that job
|
||||
// Then we have to check that the PTO type matches the department requested (can't join security with a PTO type of medical)
|
||||
// Then we have to check that there's a timeoff value so you can actually accrue hours of PTO by playing as that role
|
||||
|
||||
/// Convert a department and job flag to an english phrase
|
||||
/obj/machinery/computer/timeclock/proc/flags_to_english(var/department,var/flag)
|
||||
if (department == ENGSEC) // If the department flag is engineering or security (or silicon apparently?)
|
||||
switch (flag) // Switch based on the flag
|
||||
if (CAPTAIN, HOS, WARDEN, CHIEF) // Captain, Head of Security, Warden or Chief Engineer
|
||||
return "Command" // Are all command
|
||||
if (DETECTIVE, OFFICER) // Detectives and Officers
|
||||
return "Security" // Are all security
|
||||
//if (BRIGDOC) // Brig Docs
|
||||
//return "Medsec" // Are medical and science
|
||||
if (LAMBENT) // Lambent
|
||||
return "Lambent" // Are obviously Lambent. Dunno what you expected fam
|
||||
if (ENGINEER, ATMOSTECH) // Engineers and Atmos Technicians
|
||||
return "Engineering" // Are engineering
|
||||
if (ROBOTICIST) // Roboticist is defined here but I think it was supposed to be with medsci? Just in case.
|
||||
return "Science" // They're science
|
||||
else // Technically this won't always be silicon
|
||||
return "Silicon" // But we're listing your ass as silicon anyways. Cope.
|
||||
else if (department == MEDSCI) // Otherwise, if the department flag is medical or science
|
||||
switch (flag) // Switch based on the flag (again)
|
||||
if (RD_JF, CMO_JF) // Research Director or Chief Medical Officer
|
||||
return "Command" // Are both command
|
||||
if (SCIENTIST, ROBOTICIST) // Scientists and Roboticists (this is where I think this was meant to be but it's still with ENGSEC just in case)
|
||||
return "Science" // Are obviously science
|
||||
if (CHEMIST, DOCTOR, VIROLOGIST) // Chemists, Doctors, Virologists and Paramedics
|
||||
return "Medical" // Are medical
|
||||
if (GENETICIST) // Geneticists
|
||||
return "Medsci" // Are kind of a special, middle of the road medical and science case
|
||||
else // If you're landing here you're fucked
|
||||
return "What the fuck?" // So what the fuck?
|
||||
else if (department == CIVILIAN) // Otherwise you must be civilian, right? Right???
|
||||
switch (flag) // Once again a switch based on the flag
|
||||
if (HOP, QUARTERMASTER) // Head of Personnel and Quartermaster
|
||||
return "Command" // Are command
|
||||
//if (PRISONER) // Prisoners
|
||||
//return "Prisoner" // Are... prisoners? They shouldn't be able to PTO but if they manage to break out they can access a console so no fuck you here
|
||||
if (CARGOTECH, MINER) // Cargo Technicians and Miners
|
||||
return "Cargo" // Are cargonians
|
||||
else // Otherwise
|
||||
return "Civilian" // You must be a civilian. You could be an assisstant or a clown or a bartender, I don't really care.
|
||||
else // New department combo? Wack.
|
||||
return "What the fuck?" // what the fuck?
|
||||
@@ -0,0 +1,11 @@
|
||||
/obj/effect/landmark/start/lambent
|
||||
name = "Lambent"
|
||||
icon_state = "Lambent"
|
||||
|
||||
/obj/effect/landmark/start/barber
|
||||
name = "Barber"
|
||||
icon_state = "Barber"
|
||||
|
||||
/obj/effect/landmark/start/barista
|
||||
name = "Barista"
|
||||
icon_state = "Barista"
|
||||
@@ -0,0 +1,2 @@
|
||||
/obj/item/card/id
|
||||
var/last_job_switch /// Last job switch for card's owner
|
||||
@@ -0,0 +1,3 @@
|
||||
/obj/item/circuitboard/computer/timeclock
|
||||
name = "Timeclock (Computer Board)"
|
||||
build_path = /obj/machinery/computer/timeclock
|
||||
@@ -1,3 +1,4 @@
|
||||
//Farm things
|
||||
/turf/open/floor/
|
||||
var/farm_quality = 0 //all tiles have a farm quality, which is for farm animals to enjoy. 0 = worse 100 = best!
|
||||
|
||||
@@ -26,3 +27,11 @@
|
||||
icon_state = "hay"
|
||||
farm_quality = 100 //the best for farming!
|
||||
floor_tile = /obj/item/stack/tile/hay
|
||||
|
||||
//Carpets
|
||||
/obj/item/stack/tile/carpet/kinaris
|
||||
name = "gilded carpet"
|
||||
icon = 'hyperstation/icons/obj/tiles.dmi'
|
||||
icon_state = "tile-carpet-kinaris"
|
||||
turf_type = /turf/open/floor/carpet/kinaris
|
||||
tableVariant = /obj/structure/table/wood/fancy/kinaris
|
||||
|
||||
@@ -9,3 +9,15 @@
|
||||
icon_state = "bench_left"
|
||||
/obj/structure/chair/bench/right
|
||||
icon_state = "bench_right"
|
||||
|
||||
/obj/structure/chair/bench/metal
|
||||
name = "bench"
|
||||
icon_state = "bench_metal_middle"
|
||||
icon = 'hyperstation/icons/obj/bench.dmi'
|
||||
buildstackamount = 1
|
||||
buildstacktype = /obj/item/stack/sheet/metal
|
||||
|
||||
/obj/structure/chair/bench/metal/left
|
||||
icon_state = "bench_metal_left"
|
||||
/obj/structure/chair/bench/metal/right
|
||||
icon_state = "bench_metal_right"
|
||||
@@ -165,3 +165,35 @@
|
||||
|
||||
/obj/effect/mob_spawn/human/villager/special(mob/living/carbon/human/new_spawn)
|
||||
ADD_TRAIT(new_spawn,TRAIT_EXEMPT_HEALTH_EVENTS,GHOSTROLE_TRAIT)
|
||||
|
||||
|
||||
//Prisoner
|
||||
/obj/effect/mob_spawn/human/prisoner
|
||||
name = "prisoner transfer cryoteleporter"
|
||||
mob_name = "prisoner transfer"
|
||||
icon = 'icons/obj/machines/sleeper.dmi'
|
||||
icon_state = "sleeper"
|
||||
job_description = "Prisoner Transfer"
|
||||
outfit = /datum/outfit/prisoner
|
||||
id_job = "Prisoner Transfer"
|
||||
assignedrole = "Prisoner Transfer"
|
||||
short_desc = "You are a transferred prisoner to Layenia. Don't break out or otherwise act like an antag."
|
||||
flavour_text = "For one reason or another, you are a prisoner. Kinaris has chosen to temporarily hold you within Layenia Station's holding area, \
|
||||
until the end of the shift. You do not permanently reside here, but you may end up in this place from shift to shift. It is highly recommended to \
|
||||
make a unique character slot for this role. Kinaris would not neuter or otherwise remove identifying features that make you who you are; such as \
|
||||
altering your name, features, or physical appearance. As a prisoner, you still uphold a decent amount of rights."
|
||||
important_info = "Do NOT attempt to break out, antagonize, or otherwise treat your role as anything to grief with. Should you find a scenario where you want to, AHELP."
|
||||
objectives = "Do NOT attempt to break out or act like an antag. Serve your time until end of shift."
|
||||
mirrorcanloadappearance = TRUE
|
||||
roundstart = FALSE
|
||||
death = FALSE
|
||||
|
||||
/datum/outfit/prisoner
|
||||
name = "Prisoner"
|
||||
uniform = /obj/item/clothing/under/rank/prisoner
|
||||
shoes = /obj/item/clothing/shoes/sneakers/orange
|
||||
id = /obj/item/card/id/prisoner
|
||||
implants = list(/obj/item/implant/exile, /obj/item/implant/tracking)
|
||||
|
||||
/obj/effect/mob_spawn/human/prisoner/special(mob/living/carbon/human/new_spawn)
|
||||
ADD_TRAIT(new_spawn,TRAIT_EXEMPT_HEALTH_EVENTS,GHOSTROLE_TRAIT)
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
/obj/structure/table/wood/fancy/kinaris
|
||||
icon = 'hyperstation/icons/obj/structures.dmi'
|
||||
icon_state = "fancy_table_kinaris"
|
||||
buildstack = /obj/item/stack/tile/carpet/kinaris
|
||||
canSmoothWith = list(/obj/structure/table/wood/fancy/kinaris)
|
||||
|
||||
/obj/structure/table/wood/fancy/kinaris/New()
|
||||
. = ..()
|
||||
icon = 'hyperstation/icons/obj/smooth_structures/fancy_table_kinaris.dmi'
|
||||
@@ -0,0 +1,14 @@
|
||||
/turf/open/indestructible/layenia/sand
|
||||
name = "\improper crimson sand"
|
||||
desc = "A reddish sand."
|
||||
icon = 'hyperstation/icons/turf/floors/layeniasand.dmi'
|
||||
icon_state = "mapping"
|
||||
baseturfs = /turf/open/indestructible/layenia/crystal
|
||||
slowdown = 1
|
||||
barefootstep = FOOTSTEP_SAND
|
||||
clawfootstep = FOOTSTEP_SAND
|
||||
heavyfootstep = FOOTSTEP_GENERIC_HEAVY
|
||||
initial_gas_mix = FROZEN_ATMOS
|
||||
planetary_atmos = TRUE
|
||||
smooth = SMOOTH_TRUE | SMOOTH_BORDER | SMOOTH_MORE
|
||||
canSmoothWith = list(/turf/open/indestructible/layenia/sand)
|
||||
@@ -0,0 +1,4 @@
|
||||
/turf/open/floor/carpet/kinaris
|
||||
icon = 'hyperstation/icons/turf/floors/carpet_kinaris.dmi'
|
||||
floor_tile = /obj/item/stack/tile/carpet/kinaris
|
||||
canSmoothWith = list(/turf/open/floor/carpet/kinaris)
|
||||
@@ -0,0 +1,78 @@
|
||||
/turf/closed/wall/mineral/titanium/custom //For spicy custom shuttles
|
||||
name = "whoops!"
|
||||
desc = "Scream at Dahl please!"
|
||||
icon = 'hyperstation/icons/turf/walls/customshuttles.dmi'
|
||||
icon_state = "amogus"
|
||||
explosion_block = 10
|
||||
smooth = SMOOTH_FALSE
|
||||
canSmoothWith = null
|
||||
|
||||
/turf/closed/wall/mineral/titanium/custom/window
|
||||
opacity = FALSE
|
||||
|
||||
/turf/closed/wall/mineral/titanium/custom/AfterChange(flags, oldType)
|
||||
. = ..()
|
||||
// Manually add space underlay, in a way similar to turf_z_transparency,
|
||||
// but we actually show the old content of the same z-level, as desired for shuttles
|
||||
|
||||
var/turf/underturf_path
|
||||
|
||||
// Grab previous turf icon
|
||||
if(!ispath(oldType, /turf/closed/wall/mineral/titanium/custom))
|
||||
underturf_path = oldType
|
||||
else
|
||||
// Else use whatever SSmapping tells us, like transparent open tiles do
|
||||
underturf_path = SSmapping.level_trait(z, ZTRAIT_BASETURF) || /turf/open/space
|
||||
|
||||
var/mutable_appearance/underlay_appearance = mutable_appearance(
|
||||
initial(underturf_path.icon),
|
||||
initial(underturf_path.icon_state),
|
||||
layer = TURF_LAYER - 0.02, plane = initial(underturf_path.plane))
|
||||
underlay_appearance.appearance_flags = RESET_ALPHA | RESET_COLOR
|
||||
underlays += underlay_appearance
|
||||
|
||||
/turf/closed/wall/mineral/titanium/custom/ferry
|
||||
name = "\improper ferry wall"
|
||||
desc = "A low tech hull for Layenia flight."
|
||||
icon_state = "ferry"
|
||||
|
||||
/turf/closed/wall/mineral/titanium/custom/window/ferry
|
||||
name = "\improper ferry wall"
|
||||
desc = "A low tech hull for Layenia flight."
|
||||
icon_state = "ferry"
|
||||
|
||||
/turf/closed/wall/mineral/titanium/custom/arrivals
|
||||
name = "\improper shuttle wall"
|
||||
desc = "A low tech hull for Layenia and space-flight"
|
||||
icon = 'hyperstation/icons/turf/walls/customarrivals.dmi'
|
||||
icon_state = "amogus"
|
||||
|
||||
/turf/closed/wall/mineral/titanium/custom/window/arrivals
|
||||
name = "\improper shuttle wall"
|
||||
desc = "A low tech hull for Layenia and space-flight"
|
||||
icon = 'hyperstation/icons/turf/walls/customarrivals.dmi'
|
||||
icon_state = "amogus"
|
||||
|
||||
/turf/closed/wall/mineral/titanium/custom/pod
|
||||
name = "\improper pod wall"
|
||||
desc = "A low tech hull for Layenia and space-flight"
|
||||
icon = 'hyperstation/icons/turf/walls/custompod.dmi'
|
||||
icon_state = "amogus"
|
||||
|
||||
/turf/closed/wall/mineral/titanium/custom/window/pod
|
||||
name = "\improper pod wall"
|
||||
desc = "A low tech hull for Layenia and space-flight"
|
||||
icon = 'hyperstation/icons/turf/walls/custompod.dmi'
|
||||
icon_state = "amogus"
|
||||
|
||||
/turf/closed/wall/mineral/titanium/custom/departures
|
||||
name = "\improper pod wall"
|
||||
desc = "A low tech hull for Layenia and space-flight"
|
||||
icon = 'hyperstation/icons/turf/walls/customdepartures.dmi'
|
||||
icon_state = "amogus"
|
||||
|
||||
/turf/closed/wall/mineral/titanium/custom/window/departures
|
||||
name = "\improper pod wall"
|
||||
desc = "A low tech hull for Layenia and space-flight"
|
||||
icon = 'hyperstation/icons/turf/walls/customdepartures.dmi'
|
||||
icon_state = "amogus"
|
||||
@@ -0,0 +1,9 @@
|
||||
/**
|
||||
* Additional client defines. I needed somewhere to put these so here it is!
|
||||
*/
|
||||
/client
|
||||
//////////////////////////////////////
|
||||
// Things that require the database //
|
||||
//////////////////////////////////////
|
||||
var/list/department_hours = list() // Track hours of leave accrued for each department
|
||||
var/list/play_hours = list() // Tracks total playtime hours for each department
|
||||
@@ -10,4 +10,4 @@
|
||||
strip_delay = 40
|
||||
equip_delay_other = 20
|
||||
cold_protection = HANDS
|
||||
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
|
||||
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
/datum/job
|
||||
var/timeoff_factor = 3
|
||||
var/pto_type
|
||||
@@ -0,0 +1,52 @@
|
||||
/datum/job/barista
|
||||
title = "Barista"
|
||||
flag = BARISTA
|
||||
department_head = list("Head of Personnel")
|
||||
department_flag = CIVILIAN
|
||||
faction = "Station"
|
||||
total_positions = 1
|
||||
spawn_positions = 1
|
||||
supervisors = "the head of personnel"
|
||||
selection_color = "#bbe291"
|
||||
|
||||
outfit = /datum/outfit/job/barista
|
||||
|
||||
access = list(ACCESS_HYDROPONICS, ACCESS_BARISTA, ACCESS_KITCHEN, ACCESS_MINERAL_STOREROOM)
|
||||
minimal_access = list(ACCESS_BARISTA, ACCESS_MINERAL_STOREROOM)
|
||||
|
||||
/datum/outfit/job/barista
|
||||
name = "Barista"
|
||||
jobtype = /datum/job/barista
|
||||
|
||||
belt = /obj/item/pda/bar
|
||||
ears = /obj/item/radio/headset/headset_srv
|
||||
uniform = /obj/item/clothing/under/lawyer/blacksuit
|
||||
suit = /obj/item/clothing/suit/toggle/lawyer/black
|
||||
backpack_contents = list(/obj/item/book/granter/action/drink_fling=1, /obj/item/clothing/accessory/waistcoat)
|
||||
shoes = /obj/item/clothing/shoes/laceup
|
||||
|
||||
/datum/job/barber
|
||||
title = "Barber"
|
||||
flag = BARBER
|
||||
department_head = list("Head of Personnel")
|
||||
department_flag = CIVILIAN
|
||||
faction = "Station"
|
||||
total_positions = 2
|
||||
spawn_positions = 1
|
||||
supervisors = "the head of personnel"
|
||||
selection_color = "#bbe291"
|
||||
|
||||
outfit = /datum/outfit/job/barber
|
||||
|
||||
access = list(ACCESS_BARBER)
|
||||
minimal_access = list(ACCESS_BARBER)
|
||||
|
||||
/datum/outfit/job/barber
|
||||
name = "Barber"
|
||||
jobtype = /datum/job/barber
|
||||
|
||||
glasses = /obj/item/clothing/glasses/sunglasses
|
||||
ears = /obj/item/radio/headset/headset_srv
|
||||
belt = /obj/item/pda
|
||||
uniform = /obj/item/clothing/under/barber
|
||||
shoes = /obj/item/clothing/shoes/laceup
|
||||
@@ -0,0 +1,8 @@
|
||||
/datum/job/lambent
|
||||
alt_titles = list("Kinaris Protectorate", "Hardshield", "Asset Specialist", "Luminal")
|
||||
|
||||
/datum/job/barber
|
||||
alt_titles = list("Cosmetologist", "Beautician", "Hairdresser", "Hair Stylist")
|
||||
|
||||
/datum/job/barista
|
||||
alt_titles = list("Cafe Attendant", "Cafe Server")
|
||||
@@ -0,0 +1,56 @@
|
||||
/*
|
||||
Lambent
|
||||
*/
|
||||
/datum/job/lambent
|
||||
title = "Lambent"
|
||||
flag = LAMBENT
|
||||
department_head = list("CentCom")
|
||||
department_flag = ENGSEC
|
||||
faction = "Station"
|
||||
total_positions = 1
|
||||
spawn_positions = 1
|
||||
supervisors = "Central Command and Kinaris officials"
|
||||
selection_color = "#ffedcc"
|
||||
req_admin_notify = 1
|
||||
minimal_player_age = 30
|
||||
exp_requirements = 9000
|
||||
exp_type = EXP_TYPE_COMMAND
|
||||
exp_type_department = EXP_TYPE_COMMAND
|
||||
whitelist_type = "important"
|
||||
custom_spawn_text = "You are a Kinaris Lambent; a person hired directly by Kinaris who has a high interest in asset security and the protection of the station. Unlike the station, your gear is official Kinaris items, not replicated Milky-Way Engrams. As such, you should keep them safe due to the power they hold. You answer directly to Central Command and Kinaris, and security matters should not involve you for the most part, unless staffing is low or there is a problem with securing assets. Thankfully, Layenia Station is one of Kinaris's most low-tech stations with hardly anything important to secure; not even the items in the vault are noteworthy due to the falsified, low-tech Engram they're under. Just ensure peace is kept and the station is functioning in a calm manner."
|
||||
|
||||
outfit = /datum/outfit/job/lambent
|
||||
|
||||
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP, ACCESS_LAMBENT,
|
||||
ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_BARISTA, ACCESS_BARBER,
|
||||
ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING,
|
||||
ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM)
|
||||
minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP, ACCESS_LAMBENT,
|
||||
ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_BARISTA, ACCESS_BARBER,
|
||||
ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING,
|
||||
ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM)
|
||||
|
||||
mind_traits = list(TRAIT_CAPTAIN_METABOLISM)
|
||||
|
||||
blacklisted_quirks = list(/datum/quirk/brainproblems, /datum/quirk/insanity, /datum/quirk/nonviolent)
|
||||
|
||||
/datum/outfit/job/lambent
|
||||
name = "Lambent"
|
||||
jobtype = /datum/job/lambent
|
||||
|
||||
id = /obj/item/card/id/silver
|
||||
belt = /obj/item/pda/captain
|
||||
glasses = /obj/item/clothing/glasses/hud/toggle/zao
|
||||
ears = /obj/item/radio/headset/heads/captain/alt
|
||||
gloves = /obj/item/clothing/gloves/lambent
|
||||
uniform = /obj/item/clothing/under/rank/lambent
|
||||
suit = /obj/item/clothing/suit/lambent
|
||||
shoes = /obj/item/clothing/shoes/lambent
|
||||
backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1, /obj/item/modular_computer/tablet/preset/advanced = 1)
|
||||
|
||||
backpack = /obj/item/storage/backpack/lambent
|
||||
satchel = /obj/item/storage/backpack/satchel/lambent
|
||||
duffelbag = /obj/item/storage/backpack/duffelbag/lambent
|
||||
box = /obj/item/storage/box/security
|
||||
|
||||
implants = list(/obj/item/implant/mindshield)
|
||||
@@ -0,0 +1,31 @@
|
||||
/obj/item/wallframe/light_fixture/fairy
|
||||
name = "fairy lights frame"
|
||||
icon_state = "fairy-construct-item"
|
||||
result_path = /obj/structure/light_construct/fairy
|
||||
materials = list(MAT_METAL=MINERAL_MATERIAL_AMOUNT)
|
||||
|
||||
/obj/structure/light_construct/fairy
|
||||
name = "fairy lights frame"
|
||||
icon_state = "fairy-construct-stage1"
|
||||
fixture_type = "fairy"
|
||||
sheets_refunded = 1
|
||||
|
||||
/obj/machinery/light/fairy
|
||||
icon_state = "fairy"
|
||||
base_state = "fairy"
|
||||
fitting = "fairy"
|
||||
brightness = 3
|
||||
desc = "Small fairy lights."
|
||||
//light_type = /obj/item/light/fairy
|
||||
|
||||
/obj/machinery/light/fairy/broken
|
||||
status = LIGHT_BROKEN
|
||||
icon_state = "fairy-broken"
|
||||
|
||||
/obj/machinery/light/fairy/built
|
||||
icon_state = "bulb-empty"
|
||||
|
||||
/obj/machinery/light/fairy/built/Initialize()
|
||||
. = ..()
|
||||
status = LIGHT_EMPTY
|
||||
update(0)
|
||||
@@ -0,0 +1,541 @@
|
||||
//Proper modularity to come at a later date
|
||||
/obj/structure/chair/barber_chair
|
||||
name = "barbers chair"
|
||||
desc = "You sit in this, and your hair shall be cut."
|
||||
icon = 'icons/obj/chairs.dmi'
|
||||
icon_state = "barber_chair"
|
||||
|
||||
/obj/structure/closet/secure_closet/barber
|
||||
name = "Barber's locker"
|
||||
icon_state = "barber"
|
||||
icon = 'icons/obj/closet.dmi'
|
||||
req_access = list(ACCESS_BARBER)
|
||||
|
||||
/obj/structure/closet/secure_closet/barber/PopulateContents()
|
||||
new /obj/item/clothing/mask/surgical(src) // These three are here, so the barber can pick and choose what he's painting.
|
||||
new /obj/item/clothing/under/rank/medical/blue(src)
|
||||
new /obj/item/clothing/suit/apron/surgical(src)
|
||||
new /obj/item/clothing/accessory/waistcoat(src)
|
||||
//new /obj/item/clothing/under/rank/civilian/lawyer/purpsuit(src)
|
||||
new /obj/item/clothing/suit/toggle/lawyer/purple(src)
|
||||
new /obj/item/razor(src)
|
||||
//new /obj/item/straight_razor(src)
|
||||
new /obj/item/hairbrush/comb(src)
|
||||
new /obj/item/scissors(src)
|
||||
new /obj/item/fur_dyer(src)
|
||||
new /obj/item/dyespray(src)
|
||||
new /obj/item/storage/box/lipsticks(src)
|
||||
new /obj/item/reagent_containers/spray/quantum_hair_dye(src)
|
||||
new /obj/item/reagent_containers/spray/barbers_aid(src)
|
||||
new /obj/item/reagent_containers/spray/cleaner(src)
|
||||
new /obj/item/reagent_containers/rag(src)
|
||||
new /obj/item/storage/firstaid/regular(src)
|
||||
|
||||
/obj/machinery/vending/barbervend
|
||||
name = "Fab-O-Vend"
|
||||
desc = "It would seem it vends dyes, and other stuff to make you pretty."
|
||||
icon = 'hyperstation/icons/obj/barber.dmi'
|
||||
icon_state = "barbervend"
|
||||
product_slogans = "Spread the colour, like butter, onto toast... Onto their hair.; Sometimes, I dream about dyes...; Paint 'em up and call me Mr. Painter.; Look brother, I'm a vendomat, I solve practical problems."
|
||||
product_ads = "Cut 'em all!; To sheds!; Hair be gone!; Prettify!; Beautify!"
|
||||
vend_reply = "Come again!; Buy another!; Dont you love your new look?"
|
||||
req_access = list(ACCESS_BARBER)
|
||||
refill_canister = /obj/item/vending_refill/barbervend
|
||||
products = list(
|
||||
/obj/item/reagent_containers/spray/quantum_hair_dye = 3,
|
||||
// /obj/item/reagent_containers/spray/baldium = 3,
|
||||
/obj/item/reagent_containers/spray/barbers_aid = 3,
|
||||
/obj/item/dyespray = 5,
|
||||
/obj/item/hairbrush = 3,
|
||||
/obj/item/hairbrush/comb = 3,
|
||||
/obj/item/fur_dyer = 1,
|
||||
)
|
||||
premium = list(
|
||||
/obj/item/scissors = 3,
|
||||
/obj/item/reagent_containers/spray/super_barbers_aid = 3,
|
||||
/obj/item/storage/box/lipsticks = 3,
|
||||
/obj/item/lipstick/quantum = 1,
|
||||
/obj/item/razor = 1,
|
||||
// /obj/item/storage/box/perfume = 1,
|
||||
)
|
||||
refill_canister = /obj/item/vending_refill/barbervend
|
||||
|
||||
/obj/item/vending_refill/barbervend
|
||||
machine_name = "barber vend resupply"
|
||||
icon_state = "refill_snack" //generic item refill because there isnt one sprited yet.
|
||||
|
||||
/obj/effect/landmark/start/barber
|
||||
name = "Barber"
|
||||
icon_state = "Barber"
|
||||
//icon = 'modular_skyrat/master_files/icons/mob/landmarks.dmi'
|
||||
|
||||
//Brush
|
||||
/obj/item/hairbrush
|
||||
name = "hairbrush"
|
||||
desc = "A small, circular brush with an ergonomic grip for efficient brush application."
|
||||
icon = 'hyperstation/icons/obj/barber.dmi'
|
||||
icon_state = "brush"
|
||||
//Put lefthand and righthand files here
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
var/brush_speed = 3 SECONDS
|
||||
|
||||
/obj/item/hairbrush/comb
|
||||
name = "comb"
|
||||
desc = "A rather simple tool, used to straighten out hair and knots in it."
|
||||
icon_state = "blackcomb"
|
||||
|
||||
/obj/item/hairbrush/attack(mob/target, mob/user)
|
||||
if(target.stat == DEAD)
|
||||
to_chat(usr, "<span class='warning'>There isn't much point in brushing someone who can't appreciate it!</span>")
|
||||
return
|
||||
brush(target, user)
|
||||
return COMPONENT_CANCEL_ATTACK_CHAIN
|
||||
|
||||
//Brushes someone
|
||||
/obj/item/hairbrush/proc/brush(mob/living/target, mob/user)
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/human/human_target = target
|
||||
var/obj/item/bodypart/head = human_target.get_bodypart(BODY_ZONE_HEAD)
|
||||
|
||||
//Don't brush if you can't reach their head or cancel the action
|
||||
if(!head) //No head? No bitches?
|
||||
to_chat(usr, "<span class='warning'>[human_target] has no head!</span>")
|
||||
return
|
||||
if(human_target.is_mouth_covered(head_only = 1))
|
||||
to_chat(usr, "<span class='warning'>You can't brush [human_target]'s hair while [human_target.p_their()] head is covered!</span>")
|
||||
return
|
||||
if(!do_after(user, brush_speed, human_target))
|
||||
return
|
||||
|
||||
// Do 1 brute to their head if they're bald. Should've been more careful.
|
||||
if(human_target.hair_style == "Bald" || human_target.hair_style == "Skinhead" && is_species(human_target, /datum/species/human)) //It can be assumed most anthros have hair on them!
|
||||
human_target.visible_message("<span class='warning'>[usr] scrapes the bristles uncomfortably over [human_target]'s scalp.</span>","<span class='warning'>You scrape the bristles uncomfortably over [human_target]'s scalp.</span>")
|
||||
playsound(target, 'hyperstation/sound/misc/bonk.ogg', 100, 1) //Until I fix it
|
||||
return
|
||||
|
||||
//Brush their hair
|
||||
if(human_target == user)
|
||||
human_target.visible_message("<span class='notice'>[usr] brushes [usr.p_their()] hair!</span>","<span class='notice'>You brush your hair.</span>")
|
||||
//SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "brushed", /datum/mood/brushed/self)
|
||||
else
|
||||
user.visible_message("<span class='notice'>[usr] brushes [human_target]'s hair!</span>","<span class='notice'>You brush [human_target]'s hair.</span>")
|
||||
//SEND_SIGNAL(human_target, COMISG_ADD_MOOD_EVENT, "brushed", /datum/mood_event/brushed, user)
|
||||
|
||||
|
||||
|
||||
//fur dyer
|
||||
#define COLOR_MODE_SPECIFIC "Specific Marking"
|
||||
#define COLOR_MODE_GENERAL "General Color"
|
||||
|
||||
/obj/item/fur_dyer
|
||||
name = "electric fur dyer"
|
||||
desc = "Dye that is capable of recoloring fur in a mostly permanent way."
|
||||
icon = 'hyperstation/icons/obj/barber.dmi'
|
||||
icon_state = "fur_sprayer"
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
|
||||
var/mode = COLOR_MODE_GENERAL
|
||||
/*
|
||||
/obj/item/fur_dyer/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/cell)
|
||||
*/
|
||||
/obj/item/fur_dyer/attack_self(mob/user, modifiers)
|
||||
. = ..()
|
||||
if(mode == COLOR_MODE_SPECIFIC)
|
||||
mode = COLOR_MODE_GENERAL
|
||||
else
|
||||
mode = COLOR_MODE_SPECIFIC
|
||||
|
||||
to_chat(user, "Set to [mode]!")
|
||||
|
||||
/obj/item/fur_dyer/attack(mob/living/M, mob/living/user, params)
|
||||
if(!ishuman(M))
|
||||
return ..()
|
||||
|
||||
var/mob/living/carbon/human/target_human = M
|
||||
|
||||
switch(mode)
|
||||
if(COLOR_MODE_SPECIFIC)
|
||||
to_chat(user, "The device resonates ominously, and stops. It seems to be interfered by an Engram.")
|
||||
//dye_marking(target_human, user)
|
||||
if(COLOR_MODE_GENERAL)
|
||||
dye_general(target_human, user)
|
||||
|
||||
/obj/item/fur_dyer/proc/dye_general(mob/living/carbon/human/target_human, mob/living/user)
|
||||
var/selected_mutant_color = tgalert(user, "Please select which mutant color you'd like to change", "Select Color", "One", "Two", "Three")
|
||||
|
||||
if(!selected_mutant_color)
|
||||
return
|
||||
|
||||
var/selected_color = input(
|
||||
user,
|
||||
"Select marking color",
|
||||
null,
|
||||
"#FFFFFF"
|
||||
) as color | null
|
||||
|
||||
if(!selected_color)
|
||||
return
|
||||
|
||||
selected_color = sanitize_hexcolor(selected_color)
|
||||
|
||||
visible_message("<span class='notice'>[user] starts to masterfully paint [target_human]!</span>")
|
||||
|
||||
if(do_after(user, 20 SECONDS, target_human))
|
||||
switch(selected_mutant_color)
|
||||
if("One")
|
||||
target_human.dna.features["mcolor"] = selected_color
|
||||
if("Two")
|
||||
target_human.dna.features["mcolor2"] = selected_color
|
||||
if("Three")
|
||||
target_human.dna.features["mcolor3"] = selected_color
|
||||
|
||||
target_human.regenerate_icons()
|
||||
//use power
|
||||
|
||||
visible_message("<span class='notice'>[user] finishes painting [target_human]!</span>")
|
||||
|
||||
playsound(src.loc, 'sound/effects/spray2.ogg', 50, TRUE)
|
||||
|
||||
|
||||
/* We don't have markings that can be colored separately yet, so this is not needed
|
||||
/obj/item/fur_dyer/proc/dye_marking(mob/living/carbon/human/target_human, mob/living/user)
|
||||
|
||||
var/list/list/current_markings = target_human.dna.body_markings.Copy()
|
||||
|
||||
if(!current_markings.len)
|
||||
to_chat(user, "<span class='warning'>[target_human] has no markings!</span>")
|
||||
return
|
||||
|
||||
//power stuff here
|
||||
|
||||
/var/selected_marking_area = user.zone_selected
|
||||
|
||||
if(!current_markings[selected_marking_area])
|
||||
to_chat(user, "<span class='danger'>[target_human] has no bodymarkings on this limb!</span>")
|
||||
return
|
||||
|
||||
var/selected_marking_id = input(user, "Please select which marking you'd like to color!", "Select marking", current_markings[selected_marking_area])
|
||||
|
||||
if(!selected_marking_id)
|
||||
return
|
||||
|
||||
var/selected_color = input(
|
||||
user,
|
||||
"Select marking color",
|
||||
null,
|
||||
"#FFFFFF"
|
||||
) as color | null
|
||||
|
||||
if(!selected_color)
|
||||
return
|
||||
|
||||
selected_color = sanitize_hexcolor(selected_color)
|
||||
|
||||
visible_message("<span class='notice'>[user] starts to masterfully paint [target_human]!</span>")
|
||||
|
||||
if(do_after(user, 20 SECONDS, target_human))
|
||||
current_markings[selected_marking_area][selected_marking_id] = selected_color
|
||||
|
||||
target_human.dna.body_markings = current_markings.Copy()
|
||||
|
||||
target_human.regenerate_icons()
|
||||
|
||||
//item_use_power(power_use_amount, user)
|
||||
|
||||
visible_message("<span class='notice'>[user] finishes painting [target_human]!</span>")
|
||||
|
||||
playsound(src.loc, 'sound/effects/spray2.ogg', 50, TRUE)
|
||||
*/
|
||||
|
||||
/obj/machinery/dryer
|
||||
name = "hand dryer"
|
||||
desc = "The Breath Of Lizards-3000, an experimental dryer."
|
||||
icon = 'hyperstation/icons/obj/dryer.dmi'
|
||||
icon_state = "dryer"
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
var/busy = FALSE
|
||||
|
||||
/obj/machinery/dryer/attack_hand(mob/user)
|
||||
if(iscyborg(user) || isAI(user))
|
||||
return
|
||||
|
||||
if(!can_interact(user))
|
||||
return
|
||||
|
||||
if(busy)
|
||||
to_chat(user, "<span class='warning'>Someone is already drying here.</span>")
|
||||
return
|
||||
|
||||
to_chat(user, "<span class='notice'>You start drying your hands.</span>")
|
||||
playsound(src, 'hyperstation/sound/salon/drying.ogg', 50)
|
||||
add_fingerprint(user)
|
||||
busy = TRUE
|
||||
if(do_after(user, 4 SECONDS, src))
|
||||
busy = FALSE
|
||||
user.visible_message("[user] dried their hands using \the [src].")
|
||||
else
|
||||
busy = FALSE
|
||||
|
||||
/obj/item/reagent_containers/dropper/precision
|
||||
name = "pipette"
|
||||
desc = "A high precision pippette. Holds 1 unit."
|
||||
icon = 'hyperstation/icons/obj/barber.dmi'
|
||||
icon_state = "pipette1"
|
||||
amount_per_transfer_from_this = 1
|
||||
possible_transfer_amounts = list(0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1)
|
||||
volume = 1
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
|
||||
/obj/item/storage/box/lipsticks
|
||||
name = "lipstick box"
|
||||
|
||||
/obj/item/storage/box/lipsticks/PopulateContents()
|
||||
..()
|
||||
new /obj/item/lipstick(src)
|
||||
new /obj/item/lipstick/purple(src)
|
||||
new /obj/item/lipstick/jade(src)
|
||||
new /obj/item/lipstick/black(src)
|
||||
|
||||
/obj/item/lipstick/quantum
|
||||
name = "quantum lipstick"
|
||||
|
||||
/obj/item/lipstick/quantum/attack(mob/attacked_mob, mob/user)
|
||||
if(!open || !ismob(attacked_mob))
|
||||
return
|
||||
|
||||
if(!ishuman(attacked_mob))
|
||||
to_chat(user, "<span class='warning'>Where are the lips on that?</span>")
|
||||
return
|
||||
|
||||
var/new_color = input(
|
||||
user,
|
||||
"Select lipstick color",
|
||||
null,
|
||||
"#FFFFFF"
|
||||
) as color | null
|
||||
|
||||
var/mob/living/carbon/human/target = attacked_mob
|
||||
if(target.is_mouth_covered())
|
||||
to_chat(user, "<span class='warning'>Remove [ target == user ? "your" : "[target.p_their()]" ] mask!</span>")
|
||||
return
|
||||
if(target.lip_style) //if they already have lipstick on
|
||||
to_chat(user, "<span class'warning'>You need to wipe off the old lipstick first!</span>")
|
||||
return
|
||||
|
||||
if(target == user)
|
||||
visible_message("<span class='notice'>[user] does [user.p_their()] lips with \the [src].</span>","<span class='notice'>You take a moment to apply \the [src]. Perfect!</span>")
|
||||
target.lip_style = "lipstick"
|
||||
target.lip_color = new_color
|
||||
target.update_body()
|
||||
return
|
||||
|
||||
visible_message("<span class='warning'>[user] begins to do [target]'s lips with \the [src].</span>","<span class='notice'>You begin to apply \the [src] on [target]'s lips...</span>")
|
||||
if(!do_after(user, 2 SECONDS, target = target))
|
||||
return
|
||||
visible_message("<span class='notice'>[user] does [target]'s lips with \the [src].</span>","<span class='notice'>You apply \the [src] on [target]'s lips.</span>")
|
||||
target.lip_style = "lipstick"
|
||||
target.lip_color = new_color
|
||||
target.update_body()
|
||||
|
||||
/obj/effect/decal/cleanable/hair
|
||||
name = "hair cuttings"
|
||||
icon = 'hyperstation/icons/obj/barber.dmi'
|
||||
icon_state = "cut_hair"
|
||||
|
||||
/obj/item/razor
|
||||
name = "electric razor"
|
||||
desc = "The latest and greatest power razor born from the science of shaving."
|
||||
icon = 'hyperstation/icons/obj/barber.dmi'
|
||||
icon_state = "razor"
|
||||
flags_1 = CONDUCT_1
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
// How long do we take to shave someone's (facial) hair?
|
||||
var/shaving_time = 10 SECONDS
|
||||
|
||||
/obj/item/razor/proc/shave(mob/living/carbon/human/target_human, location = BODY_ZONE_PRECISE_MOUTH)
|
||||
if(location == BODY_ZONE_PRECISE_MOUTH)
|
||||
target_human.facial_hair_style = "Shaved"
|
||||
else
|
||||
target_human.hair_style = "Bald"
|
||||
|
||||
target_human.update_hair()
|
||||
playsound(loc, 'sound/items/unsheath.ogg', 20, TRUE)
|
||||
|
||||
/obj/item/razor/attack(mob/attacked_mob, mob/living/user)
|
||||
if(ishuman(attacked_mob))
|
||||
var/mob/living/carbon/human/target_human = attacked_mob
|
||||
var/location = user.zone_selected
|
||||
if(!(location in list(BODY_ZONE_PRECISE_MOUTH, BODY_ZONE_HEAD)))
|
||||
to_chat(user, "<span class='warning'>You stop, look down at what you're currently holding and ponder to yourself, \"This is probably to be used on their hair or their facial hair.\"</span>")
|
||||
return
|
||||
if((location in list(BODY_ZONE_PRECISE_MOUTH, BODY_ZONE_HEAD)) && !target_human.get_bodypart(BODY_ZONE_HEAD))
|
||||
to_chat(user, "<span class='warning'>[target_human] doesn't have a head!</span>")
|
||||
return
|
||||
|
||||
if(location == BODY_ZONE_PRECISE_MOUTH)
|
||||
if(!(FACEHAIR in target_human.dna.species.species_traits))
|
||||
to_chat(user, "<span class='warning'>There is no facial hair to shave!</span>")
|
||||
return
|
||||
if(!get_location_accessible(target_human, location))
|
||||
to_chat(user, "<span class'warning'>The mask is in the way!</span>")
|
||||
return
|
||||
if(target_human.facial_hair_style == "Shaved")
|
||||
to_chat(user, "<span class='warning'>Already clean-shaven!</span>")
|
||||
return
|
||||
|
||||
var/self_shaving = target_human == user // Shaving yourself?
|
||||
visible_message("<span class='notice'>[user] starts to shave [self_shaving ? user.p_their() : "[target_human]'s"] hair with [src].</span>","<span class='notice'>You take a moment to shave [self_shaving ? "your" : "[target_human]'s" ] hair with [src]...</span>")
|
||||
if(do_after(user, shaving_time, target = target_human))
|
||||
visible_message("<span class='notice'>[user] shaves [self_shaving ? user.p_their() : "[target_human]'s"] hair clean with [src].</span>","<span class='notice'>You finish shaving [self_shaving ? "your" : " [target_human]'s"] hair with [src]. Fast and clean!</span>")
|
||||
shave(target_human, location)
|
||||
|
||||
else if(location == BODY_ZONE_HEAD)
|
||||
if(!(HAIR in target_human.dna.species.species_traits))
|
||||
to_chat(user, "<span class='warning'>There is no hair to shave!</span>")
|
||||
return
|
||||
if(!get_location_accessible(target_human, location))
|
||||
to_chat(user, "<span class='warning'>Their headgear is in the way!</span>")
|
||||
return
|
||||
if(target_human.hair_style == "Bald" || target_human.hair_style == "Balding Hair" || target_human.hair_style == "Skinhead")
|
||||
to_chat(user, "<span class='warning'>There is not enough hair left to shave!</span>")
|
||||
return
|
||||
|
||||
var/self_shaving = target_human == user // Shaving yourself?
|
||||
visible_message("<span class='notice'>[user] starts to shave [self_shaving ? user.p_their() : "[target_human]'s"] hair with [src].</span>","<span class='notice'>You take a moment to shave [self_shaving ? "your" : "[target_human]'s" ] hair with [src]...</span>")
|
||||
if(do_after(user, shaving_time, target = target_human))
|
||||
visible_message("<span class='notice'>[user] shaves [self_shaving ? user.p_their() : "[target_human]'s"] hair clean with [src].</span>","<span class='notice'>You finish shaving [self_shaving ? "your" : " [target_human]'s"] hair with [src]. Fast and clean!</span>")
|
||||
shave(target_human, location)
|
||||
else
|
||||
..()
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/structure/sign/barber
|
||||
name = "barbershop sign"
|
||||
desc = "A glowing red-blue-white stripe you won't mistake for any other!"
|
||||
icon = 'hyperstation/icons/obj/barber.dmi'
|
||||
icon_state = "barber"
|
||||
buildable_sign = FALSE // Don't want them removed, they look too jank.
|
||||
|
||||
/obj/item/scissors
|
||||
name = "barber's scissors"
|
||||
desc = "Some say a barbers best tool is his electric razor, that is not the case. These are used to cut hair in a professional way!"
|
||||
icon = 'hyperstation/icons/obj/barber.dmi'
|
||||
icon_state = "scissors"
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
sharpness = TRUE
|
||||
// How long does it take to change someone's hairstyle?
|
||||
var/haircut_duration = 1 MINUTES
|
||||
// How long does it take to change someone's facial hair style?
|
||||
var/facial_haircut_duration = 20 SECONDS
|
||||
|
||||
/obj/item/scissors/attack(mob/living/attacked_mob, mob/living/user, params)
|
||||
if(!ishuman(attacked_mob))
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/target_human = attacked_mob
|
||||
|
||||
var/location = user.zone_selected
|
||||
if(!(location in list(BODY_ZONE_PRECISE_MOUTH, BODY_ZONE_HEAD)))
|
||||
to_chat(user, "<span class='warning'>You stop, look down at what you're currently holding and ponder to yourself, \"This is probably to be used on their hair or their facial hair.\"</span>")
|
||||
return
|
||||
|
||||
if(target_human.hair_style == "Bald" && target_human.facial_hair_style == "Shaved")
|
||||
to_chat(user, "<span class='warning'>What hair? They have none!</span>")
|
||||
return
|
||||
|
||||
if(user.zone_selected != BODY_ZONE_HEAD)
|
||||
return ..()
|
||||
|
||||
var/selected_part = tgalert(user, "Please select which part of [target_human] you would like to sculpt!", "It's sculpting time!", "Hair", "Facial Hair", "Cancel")
|
||||
|
||||
if(!selected_part || selected_part == "Cancel")
|
||||
return
|
||||
|
||||
if(selected_part == "Hair")
|
||||
if(!target_human.hair_style == "Bald" && target_human.head)
|
||||
to_chat(user, "<span class='warning'>There is no hair to cut!</span>")
|
||||
return
|
||||
|
||||
var/hair_id = input(user, "Please select what hairstyle you'd like to sculpt!", "Select masterpiece") as null|anything in GLOB.hair_styles_list //dear god help me please
|
||||
if(!hair_id)
|
||||
return
|
||||
|
||||
if(hair_id == "Bald")
|
||||
to_chat(target_human, "<span class='warning'>[user] seems to be cutting all your hair off!</span>")
|
||||
|
||||
to_chat(user, "<span class='notice'>You begin to masterfully sculpt [target_human]'s hair!</span>")
|
||||
|
||||
playsound(target_human, 'hyperstation/sound/salon/haircut.ogg', 100)
|
||||
|
||||
if(do_after(user, haircut_duration, target_human))
|
||||
target_human.hair_style = hair_id
|
||||
target_human.update_hair()
|
||||
visible_message("<span class='notice'>[user] successfully cuts [target_human]'s hair!</span>","<span class='notice'>You successfully cut [target_human]'s hair!</span>")
|
||||
new /obj/effect/decal/cleanable/hair(get_turf(src))
|
||||
else
|
||||
if(!target_human.facial_hair_style == "Shaved" && target_human.wear_mask)
|
||||
to_chat(user, "<span class='warning'>There is no hair to cut!</span>")
|
||||
return
|
||||
|
||||
var/facial_hair_id = input(user, "Please select what facial hairstyle you'd like to sculpt!", "Select masterpiece") as null|anything in GLOB.facial_hair_styles_list
|
||||
if(!facial_hair_id)
|
||||
return
|
||||
|
||||
if(facial_hair_id == "Shaved")
|
||||
to_chat(target_human, "<span class='warning'>[user] seems to be cutting all your facial hair off!</span>")
|
||||
|
||||
to_chat(user, "<span class='notice'>You begin to masterfully sculpt [target_human]'s facial hair!</span>")
|
||||
|
||||
playsound(target_human, 'hyperstation/sound/salon/haircut.ogg', 100)
|
||||
|
||||
if(do_after(user, facial_haircut_duration, target_human))
|
||||
target_human.facial_hair_style = facial_hair_id
|
||||
target_human.update_hair()
|
||||
visible_message("<span class='notice'>[user] successfully cuts [target_human]'s facial hair!</span>","<span class='notice'>You successfully cut [target_human]'s facial hair!</span>")
|
||||
new /obj/effect/decal/cleanable/hair(get_turf(src))
|
||||
|
||||
|
||||
//reagents
|
||||
/obj/item/reagent_containers/spray/quantum_hair_dye
|
||||
name = "quantum hair dye"
|
||||
desc = "Changes hair colour RANDOMLY! Don't forget to read the label!"
|
||||
icon = 'hyperstation/icons/obj/barber.dmi'
|
||||
icon_state = "hairspraywhite"
|
||||
amount_per_transfer_from_this = 1
|
||||
possible_transfer_amounts = list(5,10)
|
||||
list_reagents = list(/datum/reagent/hair_dye = 30)
|
||||
volume = 50
|
||||
/*
|
||||
/obj/item/reagent_containers/spray/baldium
|
||||
name = "baldium spray"
|
||||
desc = "Causes baldness, exessive use may cause customer disatisfaction."
|
||||
icon = 'hyperstation/icons/obj/barber.dmi'
|
||||
icon_state = "hairremoval"
|
||||
amount_per_transfer_from_this = 1
|
||||
possible_transfer_amounts = list(5,10)
|
||||
list_reagents = list(/datum/reagent/baldium = 30)
|
||||
volume = 50
|
||||
*/
|
||||
/obj/item/reagent_containers/spray/barbers_aid
|
||||
name = "barber's aid"
|
||||
desc = "Causes rapid hair and facial hair growth!"
|
||||
icon = 'hyperstation/icons/obj/barber.dmi'
|
||||
icon_state = "hairaccelerator"
|
||||
amount_per_transfer_from_this = 1
|
||||
possible_transfer_amounts = list(5,10)
|
||||
list_reagents = list(/datum/reagent/barbers_aid = 50)
|
||||
volume = 50
|
||||
|
||||
/obj/item/reagent_containers/spray/super_barbers_aid
|
||||
name = "super barber's aid"
|
||||
desc = "Causes SUPER rapid hair and facial hair growth!"
|
||||
icon = 'hyperstation/icons/obj/barber.dmi'
|
||||
icon_state = "hairaccelerator"
|
||||
amount_per_transfer_from_this = 1
|
||||
possible_transfer_amounts = list(5,10)
|
||||
list_reagents = list(/datum/reagent/concentrated_barbers_aid = 30)
|
||||
volume = 50
|
||||
@@ -0,0 +1,32 @@
|
||||
/obj/machinery/vending/teavendomatic
|
||||
name = "\improper Tea Vend-O-Matic"
|
||||
desc = "A technological marvel, supposedly able to mix just the mixture you'd like to drink the moment you ask for one, this one is branded for tea and non-alcoholic beverages... Mostly."
|
||||
icon_state = "boozeomat"
|
||||
icon_deny = "boozeomat-deny"
|
||||
products = list(
|
||||
/obj/item/reagent_containers/food/drinks/mug/tea = 30,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/wine = 5,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/cognac = 5,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/grappa = 5,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/sake = 5,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/orangejuice = 8,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/tomatojuice = 8,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/limejuice = 8,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/grenadine = 4,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/cream = 8,
|
||||
/obj/item/reagent_containers/food/drinks/soda_cans/tonic = 8,
|
||||
/obj/item/reagent_containers/food/drinks/soda_cans/cola = 8,
|
||||
/obj/item/reagent_containers/food/drinks/soda_cans/sodawater = 15,
|
||||
/obj/item/reagent_containers/food/drinks/drinkingglass = 30,
|
||||
/obj/item/reagent_containers/food/drinks/ice = 10,
|
||||
/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass = 12,
|
||||
/obj/item/reagent_containers/food/drinks/flask = 3)
|
||||
contraband = list(/obj/item/reagent_containers/food/drinks/mug/tea = 12,)
|
||||
premium = list(/obj/item/reagent_containers/glass/bottle/ethanol = 4,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/champagne = 5,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/trappist = 5)
|
||||
product_slogans = "Keep a clear head and drink on.;It is a quite fine day to sit down and have a drink.;Remember to drink responsibly.;Products are assured to be GMO free."
|
||||
product_ads = "Stay Radiant.;Remember to balance your intake.;Radiikist brands are not permitted in sectors 34-A through 59-B.;Keep a level head.;Refreshments are to be taken in modicum.;Let the day's stress melt away.;Please, enjoy.;In-service since the sixth Era."
|
||||
req_access = list(ACCESS_BARISTA)
|
||||
//refill_canister = /obj/item/vending_refill/teavendomatic
|
||||
free = TRUE
|
||||
@@ -0,0 +1,11 @@
|
||||
/obj/machinery/reagentgrinder/reagentblender
|
||||
name = "Stand mixer"
|
||||
desc = "a stationary electric mixer for heavy-duty mixing various foods and other reagents."
|
||||
icon = 'hyperstation/icons/obj/machinery/reagentblender.dmi'
|
||||
icon_state = "mixer1"
|
||||
|
||||
/obj/machinery/reagentgrinder/reagentblender/update_icon()
|
||||
if(beaker)
|
||||
icon_state = "mixer1"
|
||||
else
|
||||
icon_state = "mixer0"
|
||||
@@ -0,0 +1,16 @@
|
||||
/obj/item/clothing/gloves/lambent
|
||||
name = "Lambent's sleeves"
|
||||
desc = "An elegant sleeve worn from the shoulder down. Despite missing anything on the palm and fingers, it seems to cast small hardlight protections over the hands, like a glove."
|
||||
icon_state = "lambent"
|
||||
item_state = "lambent"
|
||||
icon = 'hyperstation/icons/obj/clothing/gloves.dmi'
|
||||
alternate_worn_icon = 'hyperstation/icons/mobs/gloves.dmi'
|
||||
armor = list("melee" = 50, "bullet" = 50, "laser" = 30, "energy" = 30, "bomb" = 30, "bio" = 30, "rad" = 30, "fire" = 20, "acid" = 60)
|
||||
resistance_flags = LAVA_PROOF|FIRE_PROOF|UNACIDABLE
|
||||
transfer_prints = FALSE
|
||||
strip_delay = 40
|
||||
body_parts_covered = ARMS|HANDS
|
||||
cold_protection = ARMS|HANDS
|
||||
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
|
||||
siemens_coefficient = 0
|
||||
permeability_coefficient = 0.05
|
||||
@@ -0,0 +1,14 @@
|
||||
/obj/item/clothing/shoes/lambent
|
||||
name = "Lambent's heels"
|
||||
desc = "A sleek pair of leggings with high heels, gilded in golden strips. It seems to have an autobalancing matrix installed."
|
||||
icon_state = "lambent"
|
||||
item_state = "lambent"
|
||||
icon = 'hyperstation/icons/obj/clothing/shoes.dmi'
|
||||
alternate_worn_icon = 'hyperstation/icons/mobs/feet.dmi'
|
||||
body_parts_covered = LEGS|FEET
|
||||
cold_protection = LEGS|FEET
|
||||
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
|
||||
strip_delay = 70
|
||||
resistance_flags = LAVA_PROOF|FIRE_PROOF|UNACIDABLE
|
||||
armor = list("melee" = 50, "bullet" = 50, "laser" = 30, "energy" = 30, "bomb" = 30, "bio" = 30, "rad" = 30, "fire" = 20, "acid" = 60)
|
||||
clothing_flags = NOSLIP
|
||||
@@ -0,0 +1,13 @@
|
||||
/obj/item/clothing/suit/lambent
|
||||
name = "Lambent's coat"
|
||||
desc = "A regal-esque coat outfitted with inert nanites, waiting to be activated at a moment's notice."
|
||||
icon = 'hyperstation/icons/obj/clothing/suits.dmi'
|
||||
//alternate_worn_icon = 'hyperstation/icons/mobs/suits.dmi'
|
||||
icon_state = "lambent"
|
||||
item_state = "lambent"
|
||||
body_parts_covered = CHEST|LEGS
|
||||
cold_protection = CHEST|GROIN|LEGS|ARMS
|
||||
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
|
||||
strip_delay = 70
|
||||
resistance_flags = LAVA_PROOF|FIRE_PROOF|UNACIDABLE
|
||||
armor = list("melee" = 50, "bullet" = 50, "laser" = 30, "energy" = 30, "bomb" = 30, "bio" = 30, "rad" = 30, "fire" = 20, "acid" = 60)
|
||||
@@ -0,0 +1,14 @@
|
||||
/obj/item/clothing/under/rank/lambent
|
||||
name = "Lambent's outfitting"
|
||||
desc = "A Hyperwoven outfitting meant for a Kinaris Lambent. It's gilded colors and ultratech weaving speak highly about status."
|
||||
icon = 'hyperstation/icons/obj/clothing/uniforms.dmi'
|
||||
//alternate_worn_icon = 'hyperstation/icons/mobs/uniforms.dmi'
|
||||
icon_state = "lambent"
|
||||
item_state = "lambent"
|
||||
armor = list("melee" = 50, "bullet" = 50, "laser" = 30, "energy" = 30, "bomb" = 30, "bio" = 30, "rad" = 30, "fire" = 20, "acid" = 60)
|
||||
resistance_flags = LAVA_PROOF|FIRE_PROOF|UNACIDABLE
|
||||
strip_delay = 50
|
||||
sensor_mode = SENSOR_COORDS
|
||||
random_sensor = FALSE
|
||||
|
||||
//We'll add more alternative outfits here later. For now this'll be how it is!
|
||||
@@ -0,0 +1,7 @@
|
||||
/obj/item/clothing/under/barber
|
||||
name = "barber's uniform"
|
||||
desc = "A fancy pink shirt paired with light-catching white pants. Yet to be blood- and puke-stained."
|
||||
icon = 'hyperstation/icons/obj/clothing/uniforms.dmi'
|
||||
//alternate_worn_icon = 'hyperstation/icons/mobs/uniforms.dmi'
|
||||
icon_state = "barber"
|
||||
item_state = "barber"
|
||||
@@ -160,6 +160,9 @@ obj/item/clothing/neck/stole/black
|
||||
var/firstpickup = TRUE
|
||||
var/pickupsound = TRUE
|
||||
|
||||
/obj/item/clothing/under/vaultsuit/no_sound
|
||||
pickupsound = FALSE
|
||||
|
||||
/obj/item/clothing/under/vaultsuit/equipped(mob/user, slot)
|
||||
. = ..()
|
||||
if(!pickupsound)
|
||||
|
||||
@@ -74,4 +74,11 @@
|
||||
item_state = "enzor"
|
||||
attack_verb = list("tail bapped", "whomped", "squeaked")
|
||||
squeak_override = list('sound/effects/mousesqueek.ogg'= 1)
|
||||
//End
|
||||
|
||||
//Arc is amazing and has helped Hyper in terms of spriting a ton. They deserve this
|
||||
/obj/item/toy/plush/lizardplushie/arctaisia
|
||||
name = "fat lizard plushie"
|
||||
desc = "This lizard is a heckin' chonker!"
|
||||
icon = 'hyperstation/icons/obj/plushes.dmi'
|
||||
icon_state = "arc"
|
||||
squeak_override = list('modular_citadel/sound/voice/weh.ogg' = 1)
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
/obj/structure/beacon
|
||||
name = "beacon"
|
||||
desc = "A small marker beacon"
|
||||
anchored = TRUE
|
||||
density = FALSE
|
||||
icon = 'hyperstation/icons/obj/structures/beacons.dmi'
|
||||
icon_state = "beacon"
|
||||
@@ -132,13 +132,14 @@ Code:
|
||||
if(2) //med, can make you cum
|
||||
to_chat(U, "<span class='love'>You feel intense pleasure surge through your [G.name]</span>")
|
||||
U.do_jitter_animation()
|
||||
U.mob_climax_instant()
|
||||
if (U.getArousalLoss() >= 100 && ishuman(U) && U.has_dna())
|
||||
U.mob_climax(forced_climax=TRUE)
|
||||
if(3) //high, makes you stun
|
||||
to_chat(U, "<span class='userdanger'>You feel overpowering pleasure surge through your [G.name]</span>")
|
||||
U.Jitter(3)
|
||||
U.Stun(30)
|
||||
if (U.can_orgasm())
|
||||
U.mob_climax_instant()
|
||||
if (U.getArousalLoss() >= 100 && ishuman(U) && U.has_dna())
|
||||
U.mob_climax(forced_climax=TRUE)
|
||||
if(prob(50))
|
||||
U.emote("moan")
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 727 B After Width: | Height: | Size: 767 B |
|
Before Width: | Height: | Size: 763 B After Width: | Height: | Size: 984 B |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 7.1 KiB |
|
Before Width: | Height: | Size: 600 B After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 894 B After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 550 B After Width: | Height: | Size: 603 B |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 984 B |
|
After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 7.2 KiB |
|
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 2.7 KiB |
|
After Width: | Height: | Size: 565 B |
|
After Width: | Height: | Size: 5.5 KiB |
|
Before Width: | Height: | Size: 7.2 KiB After Width: | Height: | Size: 7.7 KiB |
|
Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 6.8 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 524 B |
|
After Width: | Height: | Size: 696 B |
|
Before Width: | Height: | Size: 649 B After Width: | Height: | Size: 359 B |