@@ -0,0 +1,2 @@
|
||||
|
||||
tgstation.int
|
||||
@@ -382,7 +382,7 @@
|
||||
"ahr" = (/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,/obj/structure/cable{icon_state = "1-4"},/turf/open/floor/plasteel/showroomfloor,/area/security/warden)
|
||||
"ahs" = (/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{icon_state = "2-4"},/turf/open/floor/plasteel/showroomfloor,/area/security/warden)
|
||||
"aht" = (/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plasteel/showroomfloor,/area/security/warden)
|
||||
"ahu" = (/obj/machinery/door/airlock/security/glass{name = "Brig Control"; req_access_txt = "3"},/obj/structure/cable{icon_state = "4-8"},/obj/structure/cable{icon_state = "1-4"},/obj/structure/cable{icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plasteel/showroomfloor,/area/security/warden)
|
||||
"ahu" = (/obj/machinery/door/airlock/security/glass{dir = 4; name = "Brig Control"; req_access_txt = "3"},/obj/structure/cable{icon_state = "4-8"},/obj/structure/cable{icon_state = "1-4"},/obj/structure/cable{icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plasteel/showroomfloor,/area/security/warden)
|
||||
"ahv" = (/obj/structure/disposalpipe/segment{dir = 6},/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/effect/turf_decal/tile/red{dir = 1},/obj/effect/turf_decal/tile/red{dir = 8},/turf/open/floor/plasteel,/area/security/main)
|
||||
"ahw" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{icon_state = "4-8"},/obj/structure/cable{icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plasteel,/area/security/main)
|
||||
"ahx" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden,/turf/open/floor/plasteel,/area/security/main)
|
||||
@@ -949,7 +949,7 @@
|
||||
"asm" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plasteel,/area/security/vacantoffice/b)
|
||||
"asn" = (/obj/machinery/atmospherics/components/unary/vent_scrubber/on,/turf/open/floor/plating,/area/security/vacantoffice/b)
|
||||
"aso" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8},/turf/open/floor/plating,/area/maintenance/fore)
|
||||
"asp" = (/obj/machinery/door/airlock/maintenance{name = "Law Office Maintenance"; req_access_txt = "38"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plating,/area/maintenance/fore)
|
||||
"asp" = (/obj/machinery/door/airlock/maintenance{dir = 4; name = "Law Office Maintenance"; req_access_txt = "38"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plating,/area/maintenance/fore)
|
||||
"asq" = (/obj/machinery/atmospherics/components/unary/vent_scrubber/on{dir = 8},/turf/open/floor/wood,/area/lawoffice)
|
||||
"asr" = (/obj/structure/chair/office/dark,/obj/effect/landmark/start/lawyer,/turf/open/floor/wood,/area/lawoffice)
|
||||
"ass" = (/obj/machinery/light{dir = 4},/obj/effect/turf_decal/tile/red{dir = 4},/turf/open/floor/plasteel,/area/hallway/primary/fore)
|
||||
@@ -1568,7 +1568,7 @@
|
||||
"aEh" = (/obj/machinery/atmospherics/components/unary/vent_scrubber/on{dir = 8},/turf/open/floor/plasteel,/area/security/checkpoint/auxiliary)
|
||||
"aEi" = (/obj/effect/turf_decal/tile/red,/obj/effect/turf_decal/tile/red{dir = 4},/turf/open/floor/plasteel,/area/security/checkpoint/auxiliary)
|
||||
"aEj" = (/obj/structure/table/glass,/obj/item/reagent_containers/food/snacks/grown/wheat,/obj/item/reagent_containers/food/snacks/grown/watermelon,/obj/item/reagent_containers/food/snacks/grown/watermelon,/obj/item/reagent_containers/food/snacks/grown/watermelon,/obj/item/reagent_containers/food/snacks/grown/citrus/orange,/obj/item/reagent_containers/food/snacks/grown/grapes,/obj/item/reagent_containers/food/snacks/grown/cocoapod,/obj/effect/turf_decal/tile/green,/obj/effect/turf_decal/tile/green{dir = 4},/turf/open/floor/plasteel,/area/hydroponics/garden)
|
||||
"aEk" = (/obj/machinery/door/airlock{name = "Garden"},/turf/open/floor/plasteel,/area/hydroponics/garden)
|
||||
"aEk" = (/obj/machinery/door/airlock{dir = 4; name = "Garden"},/turf/open/floor/plasteel,/area/hydroponics/garden)
|
||||
"aEl" = (/turf/open/floor/plasteel,/area/storage/primary)
|
||||
"aEm" = (/obj/effect/landmark/event_spawn,/turf/open/floor/plasteel,/area/storage/primary)
|
||||
"aEn" = (/obj/effect/turf_decal/bot_white/right,/obj/structure/closet/crate/goldcrate,/obj/effect/turf_decal/tile/neutral{dir = 1},/obj/effect/turf_decal/tile/neutral,/obj/effect/turf_decal/tile/neutral{dir = 4},/obj/effect/turf_decal/tile/neutral{dir = 8},/turf/open/floor/plasteel/dark,/area/ai_monitored/nuke_storage)
|
||||
@@ -2535,7 +2535,7 @@
|
||||
"aWM" = (/obj/structure/cable{icon_state = "1-2"},/obj/structure/disposalpipe/sorting/mail/flip{dir = 2; sortType = 16},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8},/turf/open/floor/plasteel,/area/hallway/primary/starboard)
|
||||
"aWN" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/airalarm{pixel_y = 25},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plasteel,/area/hallway/primary/starboard)
|
||||
"aWO" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plasteel,/area/hallway/primary/starboard)
|
||||
"aWP" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/public/glass{name = "Library"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/carpet,/area/library)
|
||||
"aWP" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/public/glass{dir = 4; name = "Library"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/carpet,/area/library)
|
||||
"aWQ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/carpet,/area/library)
|
||||
"aWR" = (/obj/structure/disposalpipe/segment{dir = 9},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/carpet,/area/library)
|
||||
"aWS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/carpet,/area/library)
|
||||
@@ -2624,7 +2624,7 @@
|
||||
"aYx" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 8},/turf/closed/wall,/area/hydroponics)
|
||||
"aYy" = (/obj/structure/disposalpipe/segment,/obj/machinery/light{dir = 8},/obj/structure/cable{icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plasteel,/area/hallway/primary/starboard)
|
||||
"aYz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plasteel,/area/hallway/primary/starboard)
|
||||
"aYA" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/public/glass{name = "Library"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/carpet,/area/library)
|
||||
"aYA" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/public/glass{dir = 4; name = "Library"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/carpet,/area/library)
|
||||
"aYB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/carpet,/area/library)
|
||||
"aYC" = (/obj/machinery/atmospherics/components/unary/vent_pump/on{dir = 8},/turf/open/floor/carpet,/area/library)
|
||||
"aYD" = (/obj/machinery/holopad,/turf/open/floor/carpet,/area/library)
|
||||
@@ -3193,7 +3193,7 @@
|
||||
"bju" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/radio/intercom{pixel_y = 20},/turf/open/floor/plasteel,/area/quartermaster/storage)
|
||||
"bjv" = (/obj/machinery/camera{c_tag = "Cargo Bay North"},/obj/machinery/vending/wardrobe/cargo_wardrobe,/turf/open/floor/plasteel,/area/quartermaster/storage)
|
||||
"bjw" = (/turf/open/floor/plasteel,/area/quartermaster/storage)
|
||||
"bjx" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = 30},/obj/machinery/light{dir = 1; pixel_y = 16},/turf/open/floor/plasteel,/area/quartermaster/storage)
|
||||
"bjx" = (/obj/machinery/light{dir = 1; pixel_y = 16},/turf/open/floor/plasteel,/area/quartermaster/storage)
|
||||
"bjy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plasteel,/area/quartermaster/storage)
|
||||
"bjz" = (/obj/machinery/button/door{id = "qm_warehouse"; name = "Warehouse Door Control"; pixel_x = -1; pixel_y = 24; req_access_txt = "31"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plasteel,/area/quartermaster/storage)
|
||||
"bjA" = (/obj/machinery/photocopier,/obj/item/radio/intercom{pixel_y = 20},/turf/open/floor/plasteel,/area/quartermaster/office)
|
||||
@@ -3267,7 +3267,7 @@
|
||||
"bkQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/turf_decal/tile/brown{dir = 8},/turf/open/floor/plasteel,/area/quartermaster/office)
|
||||
"bkR" = (/obj/structure/disposalpipe/segment{dir = 5},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plasteel,/area/quartermaster/office)
|
||||
"bkS" = (/obj/structure/disposalpipe/sorting/mail/flip{dir = 1; sortType = 2},/obj/structure/noticeboard{pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{icon_state = "2-4"},/turf/open/floor/plasteel,/area/quartermaster/office)
|
||||
"bkT" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/mining/glass{name = "Cargo Office"; req_access_txt = "50"},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 1},/obj/structure/cable{icon_state = "4-8"},/turf/open/floor/plasteel,/area/quartermaster/sorting)
|
||||
"bkT" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = 30},/turf/open/floor/plasteel,/area/quartermaster/storage)
|
||||
"bkU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{icon_state = "4-8"},/turf/open/floor/plasteel,/area/quartermaster/sorting)
|
||||
"bkV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{icon_state = "4-8"},/turf/open/floor/plasteel,/area/quartermaster/sorting)
|
||||
"bkW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/structure/cable{icon_state = "4-8"},/turf/open/floor/plasteel,/area/quartermaster/sorting)
|
||||
@@ -3650,7 +3650,7 @@
|
||||
"bsj" = (/obj/effect/turf_decal/delivery,/turf/open/floor/plasteel,/area/quartermaster/storage)
|
||||
"bsk" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; dir = 8; freq = 1400; location = "QM #1"},/obj/effect/turf_decal/bot,/mob/living/simple_animal/bot/mulebot{beacon_freq = 1400; home_destination = "QM #1"; suffix = "#1"},/turf/open/floor/plasteel,/area/quartermaster/storage)
|
||||
"bsl" = (/obj/structure/table,/obj/machinery/requests_console{department = "Cargo Bay"; departmentType = 2; pixel_x = -30},/obj/item/multitool,/obj/machinery/camera{c_tag = "Cargo Office"; dir = 4},/turf/open/floor/plasteel,/area/quartermaster/office)
|
||||
"bsm" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/mining/glass{dir = 4; name = "Cargo Office"; req_access_txt = "50"},/turf/open/floor/plasteel,/area/quartermaster/office)
|
||||
"bsm" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/mining/glass{dir = 4; name = "Cargo Office"; req_access_txt = "50"},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 1},/obj/structure/cable{icon_state = "4-8"},/turf/open/floor/plasteel,/area/quartermaster/sorting)
|
||||
"bsn" = (/obj/effect/landmark/event_spawn,/turf/open/floor/plasteel,/area/quartermaster/office)
|
||||
"bso" = (/obj/effect/landmark/event_spawn,/obj/effect/turf_decal/bot,/turf/open/floor/plasteel,/area/hallway/primary/central)
|
||||
"bsp" = (/obj/structure/sign/warning/electricshock{pixel_y = -32},/obj/structure/cable{icon_state = "0-4"},/obj/structure/cable,/obj/machinery/door/poddoor/shutters/preopen{id = "hop"; name = "Privacy Shutters"},/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/plating,/area/crew_quarters/heads/hop)
|
||||
@@ -4205,6 +4205,7 @@
|
||||
"bCS" = (/obj/machinery/door/airlock{name = "Custodial Closet"; req_access_txt = "26"},/obj/structure/disposalpipe/segment,/obj/effect/landmark/event_spawn,/turf/open/floor/plasteel,/area/janitor)
|
||||
"bCT" = (/turf/closed/wall,/area/maintenance/aft)
|
||||
"bCU" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/open/floor/plating,/area/maintenance/aft)
|
||||
"bCV" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/mining/glass{dir = 4; name = "Cargo Office"; req_access_txt = "50"},/turf/open/floor/plasteel,/area/quartermaster/office)
|
||||
"bCW" = (/obj/structure/disposalpipe/segment,/obj/structure/table,/obj/item/surgicaldrill,/turf/open/floor/plasteel,/area/medical/sleeper)
|
||||
"bCX" = (/obj/structure/table,/obj/item/hemostat,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plasteel/white/side{dir = 2},/area/medical/sleeper)
|
||||
"bCY" = (/obj/structure/table,/obj/item/scalpel{pixel_y = 12},/obj/item/circular_saw,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plasteel/white,/area/medical/sleeper)
|
||||
@@ -4542,7 +4543,7 @@
|
||||
"bJs" = (/obj/structure/chair,/obj/effect/turf_decal/stripes/line{dir = 5},/turf/open/floor/plating/airless,/area/science/test_area)
|
||||
"bJt" = (/obj/docking_port/stationary{dir = 8; dwidth = 3; height = 5; id = "mining_home"; name = "mining shuttle bay"; roundstart_template = /datum/map_template/shuttle/mining/box; width = 7},/turf/open/space/basic,/area/space)
|
||||
"bJu" = (/obj/effect/mapping_helpers/airlock/cyclelink_helper{dir = 4},/obj/machinery/door/airlock/external{name = "Mining Dock Airlock"; req_access_txt = "48"; shuttledocked = 1},/turf/open/floor/plating,/area/quartermaster/miningdock)
|
||||
"bJv" = (/obj/effect/mapping_helpers/airlock/cyclelink_helper{dir = 8},/obj/machinery/door/airlock/mining/glass{name = "Mining Dock"; req_access_txt = "48"},/turf/open/floor/plasteel,/area/quartermaster/miningdock)
|
||||
"bJv" = (/obj/effect/mapping_helpers/airlock/cyclelink_helper{dir = 8},/obj/machinery/door/airlock/mining/glass{dir = 4; name = "Mining Dock"; req_access_txt = "48"},/turf/open/floor/plasteel,/area/quartermaster/miningdock)
|
||||
"bJw" = (/obj/machinery/atmospherics/components/unary/vent_scrubber/on{dir = 1},/turf/open/floor/plasteel,/area/quartermaster/miningdock)
|
||||
"bJx" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plating,/area/maintenance/port/aft)
|
||||
"bJy" = (/obj/structure/closet/firecloset,/turf/open/floor/plating,/area/maintenance/port/aft)
|
||||
@@ -5001,7 +5002,7 @@
|
||||
"bSj" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 8},/turf/open/floor/plasteel,/area/engine/atmos)
|
||||
"bSk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{dir = 6},/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/plasteel,/area/engine/atmos)
|
||||
"bSl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{dir = 4},/turf/open/floor/plasteel,/area/engine/atmos)
|
||||
"bSm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/atmos/glass{name = "Distribution Loop"; req_access_txt = "24"},/turf/open/floor/plasteel,/area/engine/atmos)
|
||||
"bSm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/atmos/glass{dir = 4; name = "Distribution Loop"; req_access_txt = "24"},/turf/open/floor/plasteel,/area/engine/atmos)
|
||||
"bSn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{dir = 9},/turf/open/floor/plasteel,/area/engine/atmos)
|
||||
"bSo" = (/obj/machinery/atmospherics/pipe/simple/yellow/visible{dir = 9},/turf/open/floor/plasteel,/area/engine/atmos)
|
||||
"bSp" = (/obj/machinery/atmospherics/components/binary/pump{dir = 1; name = "Pure to Mix"},/turf/open/floor/plasteel,/area/engine/atmos)
|
||||
@@ -5154,7 +5155,7 @@
|
||||
"bVg" = (/obj/machinery/atmospherics/pipe/simple/cyan/visible{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/effect/turf_decal/tile/yellow{dir = 8},/turf/open/floor/plasteel/dark/corner{dir = 1},/area/engine/atmos)
|
||||
"bVh" = (/obj/machinery/atmospherics/pipe/simple/cyan/visible{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plasteel,/area/engine/atmos)
|
||||
"bVi" = (/obj/machinery/atmospherics/pipe/simple/cyan/visible{dir = 4},/obj/effect/turf_decal/tile/yellow{dir = 4},/turf/open/floor/plasteel/dark/corner,/area/engine/atmos)
|
||||
"bVj" = (/obj/machinery/atmospherics/pipe/simple/cyan/visible{dir = 4},/obj/machinery/door/firedoor/heavy,/obj/machinery/door/airlock/atmos{name = "Atmospherics"; req_access_txt = "24"},/turf/open/floor/plasteel,/area/engine/atmos)
|
||||
"bVj" = (/obj/machinery/atmospherics/pipe/simple/cyan/visible{dir = 4},/obj/machinery/door/firedoor/heavy,/obj/machinery/door/airlock/atmos{dir = 4; name = "Atmospherics"; req_access_txt = "24"},/turf/open/floor/plasteel,/area/engine/atmos)
|
||||
"bVk" = (/obj/machinery/atmospherics/components/binary/pump/on{dir = 8; name = "Air to External"},/turf/open/floor/plasteel,/area/engine/atmos)
|
||||
"bVl" = (/obj/structure/cable{icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,/obj/machinery/atmospherics/pipe/simple/cyan/visible{dir = 4},/turf/open/floor/plasteel,/area/engine/atmos)
|
||||
"bVm" = (/obj/machinery/atmospherics/pipe/simple/cyan/visible{dir = 9},/turf/open/floor/plasteel,/area/engine/atmos)
|
||||
@@ -6476,7 +6477,7 @@
|
||||
"cuC" = (/obj/structure/piano{icon_state = "piano"},/turf/open/floor/wood,/area/crew_quarters/bar)
|
||||
"cuD" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/open/floor/plasteel,/area/engine/engineering)
|
||||
"cuE" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plasteel,/area/engine/engineering)
|
||||
"cuF" = (/obj/machinery/door/airlock/command{name = "MiniSat Access"; req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plasteel,/area/engine/engineering)
|
||||
"cuF" = (/obj/machinery/door/airlock/command{dir = 4; name = "MiniSat Access"; req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plasteel,/area/engine/engineering)
|
||||
"cuG" = (/obj/machinery/atmospherics/components/unary/vent_scrubber/on{dir = 8},/turf/open/floor/plasteel,/area/engine/engineering)
|
||||
"cuH" = (/obj/structure/transit_tube_pod,/obj/structure/transit_tube/station/reverse/flipped{dir = 4},/obj/effect/turf_decal/stripes/line{dir = 8},/turf/open/floor/plating,/area/engine/engineering)
|
||||
"cuI" = (/obj/structure/cable{icon_state = "2-4"},/obj/structure/cable{icon_state = "1-4"},/obj/structure/lattice/catwalk,/turf/open/space,/area/solar/starboard/aft)
|
||||
@@ -7036,13 +7037,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaweayUbexayUayWaxBaxBayXayUbeyayUayYbezbeAbeAbdrbeBbeCbeDbeEbeFbdtbeGbeHbeIbeIbeJbeKaXpaXpaXpbeLbeMaXpaPjaPjaPjaPjbeNbeObePbeQbeObeRaZibeSbeTaZjaZlaZmbeUbeVbeWbeXbeXbeXbeXbeYbeZbeVbBKaIPbbZaZvbaJbfbbfcbfdbfebffbcQbfgbfhaXYbfibfjbfkbfkbfkbflbfmaYdbfnbfobfpbfqbfrbfsbftbbabfuaZDbsJaIPcCcbfvbfvbfvbfvbfvbfvbfvbfwbfxbfxbfxbfybfzbfwbfAbfAbfAbfAbfAbfBbfBbfBbfCbfBbfBbfBbfBbfDbaaberbfEbfFbfGbfHbfIbfJbfJbfJbfKbfLbfLbfLbfLbfLbfMbfNbfNbBPbBQbfNbBRbBSbfNbfNbfRbfSbfSbfSbfSbfTbfUbfVbfWaMzaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaAaauSaAbaxyayUaAcaAdbfXbfYayUaxyaAbayUauSaAaawebdrbfZbgabgabgabgbbgcbgdbgebeObeObgfbggaXpaYWbghbeLbgiaXpbgjbgjaRTbgkbglbgmbgnbgmbgmbgobgpbgqaZkbgrbgsaZmaRTbgtbgubeVbgvbgwbgxbgyaPNbgAbBTbgCbBUaZvbgEaZybgFbgGbgHbgIbcQbgJaZvaadbgKbgLbgLbgLbgLbgLbgMaadaZDbgNbgObgPbgQbbabgRbbabgSaZDbsJaIPbBWbfvbgUbgVbgWbgXbgYbfvbgZbrtbrtbrtbhbbhccBMbhdbhebhfbhgbfAbhhbhibhjbhkbhibhlbhmbfBbfFbhnbfFbfFbfFbhobhpbhqbhrbhsbhtbhubhvbhwbhxbhybfLbhzbhAbhzbfLbhBbhCbhBbfSbhDbhEbhDbfSbhFbhGbfSbhHbhIaMzaMzaMzaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaadaadaadaadayUbhJayUayUayUayUayUayUbhKayUaadaadaadaaabdrbhLbdrbhMbgabhNbhObdraRTaTfbhPbhQbhRbhSbhSbhSbhSbhSbhSbhTbhUbhVbhWbhXbhYbhYbhYbhYbhYbhYaZmbhZaZiaZmbhYbhYbiabibbicbidbiebifbiebigbihbfaaIPbBXaZvbijaZyaZyaZyaZybgIbcQbikaZvaadbgKbgLbilbimbinbgLbgMaadaZDbiobbObipbiqbbabftbbabbaaZDbsJaIPcCcbfvbirbisbitbitbiubivbhcbiwbhcbhcbhbbhcbhcbhdbixbiybizbfAbiAbhibhibiBbiAbiCbhibfBbiDbiEbiFbfFbiGbiHbfHbiIbiJbiKbiLbiMbiNbiObiPbiQbiRbiSbiTbiUbfLbiVbiWbiXbfSbiYbiZbiYbjabjbbjbbfSbjcbhIaaaaadaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoBaaabdrbjebjfbjgbjhbjhbjibjjbjkbjlaPjbjmbjnbjobjobjobjpbjpbjpbjpbjpbjpbjqbjrbhYbjsbjtbjubjvbjwbjxbjybjzbhYbjAbjBbjCbeVbeVbjDbjEbjFbjEbjGbjHbjIbjJbbZbjKbjLbjMbjNbjOaZybjPbcQaZvaZvaadbgKbgLbimbgLbimbgLbgMaadaZDaZDbjQbbPbjRbbabjSbjTbjUaZDbsJaIPcCcbfvbjVbisbjWbjXbjYbjZbhcbkabkbbkcbkdbkebkfbhdbkgbkhbkibfAbiAbhibhibiBbiAbiCbkjbfBbkkbklbkmbfFbknbkobfHbkpbkqbkrbksbkpbiNbktbkubiPbiPbiPbiPbkvbfLbkwbkxbkybfSbkzbjbbjbbkAbkBbkCbfSbjcbhIbkDbkDbkDbkDaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdrbkEbdrbkFbkGbkGbkHbdrbkIbkIaPjbkJbkKbkJbkJbkJbkKbkJaPjaPjbhYbhYbkLbkMbhYbjwbjwbjwbjwbjwbjwbkNbkObkPbkQbkRbkSbkTbkUbkVbkUbkWbkXbkYbihbfabkZblablbblcbldbleblfaZybgIbcQaZvaadaadblgblhbinblibilbljblkaadaadaZDbllblmaZDaZDaZDaZDblnaZDburaIPcBJbfvblpblqblrbitbiublsbhcbltblublvblwblxblybfAblzblAblBbfAbiAbhibhibiBbiAblCblDbfBbfFbfFbfFbfFblEbkobfHblFbiJblGbiLblHbiNblIblJblKblLblMblNblObfLblPbkxblQbfSblRblSblTblUblVblWbfSbjcblXblYblZbmabmbaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoBaaabdrbjebjfbjgbjhbjhbjibjjbjkbjlaPjbjmbjnbjobjobjobjpbjpbjpbjpbjpbjpbjqbjrbhYbjsbjtbjubjvbjxbkTbjybjzbhYbjAbjBbjCbeVbeVbjDbjEbjFbjEbjGbjHbjIbjJbbZbjKbjLbjMbjNbjOaZybjPbcQaZvaZvaadbgKbgLbimbgLbimbgLbgMaadaZDaZDbjQbbPbjRbbabjSbjTbjUaZDbsJaIPcCcbfvbjVbisbjWbjXbjYbjZbhcbkabkbbkcbkdbkebkfbhdbkgbkhbkibfAbiAbhibhibiBbiAbiCbkjbfBbkkbklbkmbfFbknbkobfHbkpbkqbkrbksbkpbiNbktbkubiPbiPbiPbiPbkvbfLbkwbkxbkybfSbkzbjbbjbbkAbkBbkCbfSbjcbhIbkDbkDbkDbkDaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdrbkEbdrbkFbkGbkGbkHbdrbkIbkIaPjbkJbkKbkJbkJbkJbkKbkJaPjaPjbhYbhYbkLbkMbhYbjwbjwbjwbjwbjwbjwbkNbkObkPbkQbkRbkSbsmbkUbkVbkUbkWbkXbkYbihbfabkZblablbblcbldbleblfaZybgIbcQaZvaadaadblgblhbinblibilbljblkaadaadaZDbllblmaZDaZDaZDaZDblnaZDburaIPcBJbfvblpblqblrbitbiublsbhcbltblublvblwblxblybfAblzblAblBbfAbiAbhibhibiBbiAblCblDbfBbfFbfFbfFbfFblEbkobfHblFbiJblGbiLblHbiNblIblJblKblLblMblNblObfLblPbkxblQbfSblRblSblTblUblVblWbfSbjcblXblYblZbmabmbaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdrbmcbjfbmdbkGbmebmfbdraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabmgbmhbmibmjbmkbmlbjwbjwbjwbmmbjwbjwbmnbwgbmpbmqbmrbmsbmtbmubihbmvbeVbeVbeVbmwbmxaLzbjKbmybmzbmzbmzbmzbmAbmBbmCaadaaabgKbmDbgLbgLbgLbmEbgMaaaaadbmFbmGbmHbmIbufbmKaZDbmLaZDbrlaIPcBKbfvbmObmPbmQbmRbmSbfvbmTbltblubmUbmVbhcbmWbfAbmXbmYbmZbfAbnabnbbncbndbnebnfbnebngbnhbnibnhbnhbnhbnjbfHbnkbnlbnmbnnbnobnpbnqbnrbnsbntbnubnvaRhbfLbnxbnybnzbfSbnAbnBbnCbnDbjbaSvbfSbnFbnGbnHbnIbnIbnIbnIbnIbnIbnJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdrbnKbjfbjfbjfbdrbdrbdraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabmgbnLbnMbnNbnObnObnObnObnObnObnObnObnObnPbnQbnRbnSbnTbnUbnVbnWbnXbnYbnZboabfabobbocbjKbjKbmCbodboebofbogbohbmCaaaaaabgKboibojbokbojbolbgMaaaaaabmFbombonboobmFbopaZDboqaZDbrlaIPcCdcCDbosbmPbotbitboubfvbovbowboxboybozbhcboAbfAbhdboBboCbfAbfBboDbfBboEboFboGboHboHboHboHboHboHboHboIboJbfIbfIbfIbfIbfIboKboLbiPboMbnvbnvboNboOboKboPboQboRboSboTboUboVboWboXboYbfSboZbpabpbbpcbpcbpcbpcbpcbpdbhIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpebmgbmgbpfbnMbjybjwbpgbpgbpgbpgbjwbjwbjwbjwbphbpibpjbpkbplbpmbpnbpobppbnXbnXboabpqbprbpsbptbpubpvbpwbpxbpybpzbpAbmCaadaaabgKbpBbpCbpCbpCbpDbgMaaaaadbmFbpEbpFbpGbmFbpHaZDbmLaZDbrlaIPcCdbfvbpJbmPbpKbpLbpMbfvbpNbltbhbboybpObpPbovbovbpQbpRbpSbpTbpUbpVbpWbpXbpYbpZbqabqbbqcbqdbqebqfbqgbkobqhbqibqjbqkbqlbqmbqnbqobqpbqqbqrbqsbnvbqtbqubqvbqwaSxboSbqybqzbqAbqBbjbbqCbqDbqEbfSbqFbqFbqFbqFbqFbqFbjcbhIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqGbqHbqGbqIbqJbqKbqLbqMbjwbjwbjwbjwbjwbqNbhYbhYbqObnXbqPbqQbqRbnVbqSbnXbqTbnXbqUbmMbobbqVbqWbqXbqYbqZbrabrbbpzbrcbmCaaaaaabgKbrdbrebrfbrebrgbgMaaaaaabrhbribrjbrhbrhbrhbrhbrkbrhcBUaLzcCebfvbfvbrnbrobrpbfvbfvbrqbrrbrsbsebsgbsebuqbsebrubrvbrwbrwbrwbrxbrwbrybpYbpZbrzbrAbrBbrCbrDbrEbqgbrFbrGbrHbrIbrIbrIbrJbrKbrLbrMbrNbrObrPbrQbrRbrSbrTbkxbrUboSboSbrVbrWbrXbrVboSbfSbfSbfSbrYbrZbsabsbbscbqFbsdbhIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrfbsfbutbshbjwbjybjwbpgbpgbsibpgbjwbjwbsjbskbhYbslbnXbqPbqQbnXbsmbnXbnXbsnbnXbqUbmMbobaIPbqWbsobspbsqbsrbsrbssbstbmCaadaadbsubsvbswbsxbsybszbsAaadaadbsBbsCbsDbsEbsFbsGbsHbsIbrhcBVaIPbsKbsLbsMbsNbsObsPbsQbsRbsSbsTbsUbsVbsVbsVbsVbsVbsWbsXbsVbsVbsVbsYbkfbsZbtabpZbtbbtcbtdbtdbtebqfbqgbkobqhbtfbtgbthbtibtjbtkbtlbiPbtmbiPbiPbiPbtnboKbtobtpbtqbtrbtsbttbtubtvbtwbtxbtybtzbtAbtBbtCbtCbtCbtDbtEbtFbhIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrfbsfbutbshbjwbjybjwbpgbpgbsibpgbjwbjwbsjbskbhYbslbnXbqPbqQbnXbCVbnXbnXbsnbnXbqUbmMbobaIPbqWbsobspbsqbsrbsrbssbstbmCaadaadbsubsvbswbsxbsybszbsAaadaadbsBbsCbsDbsEbsFbsGbsHbsIbrhcBVaIPbsKbsLbsMbsNbsObsPbsQbsRbsSbsTbsUbsVbsVbsVbsVbsVbsWbsXbsVbsVbsVbsYbkfbsZbtabpZbtbbtcbtdbtdbtebqfbqgbkobqhbtfbtgbthbtibtjbtkbtlbiPbtmbiPbiPbiPbtnboKbtobtpbtqbtrbtsbttbtubtvbtwbtxbtybtzbtAbtBbtCbtCbtCbtDbtEbtFbhIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpebmgbmgbtGbjwbjybjwbjwbjwbjwbjwbjwbjwbsjbtHbhYbtIbtJbtKbtLbtMbtNbtObtPbnXbtQboabtRbobaIPbqWbqXbmCbtSbtTbtUbtVbtWbmCaaaaaaaadbgKbtXbtYbtXbgMaadaaaaaabsBbtZbuabubbucbudbudbuebydbugbuhaMXbuibujbukbulbumbunbuobunbunbupbzBbApbAubAubAuckqcksbhcbhcbuubuvbuvbuwbpZbpZbpZbuxbuybuzbrDbqfbqgbuAbqhbfLboKboKboKboKboKboKboKboKboKbuBbuCbuBboKbuDbuEbuFbuGbuGbuGbuHbuIbuJbuKbuLbuMbuNbuObuPbuQbuRbuSbuTbuUbuVbkDbuWbuWbkDaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabuXcrfbsfbutbnLbuYbkNbuZbmlbjwbuYbjwbjwbjwbsjbvabhYbvbbnXbqPbvcbvdbvebnXbnXbnXbvfboabtRbobaXNbqWbvgbmCbvhbvibvjbvkbohbmCaaaaaaaadbvlbvmbpCbvnbvoaadaaaaaabsBbvpbvqbvrbvsbvtbvubvvbrhcCfaIPcCcbovbovbvxbvybrubvzbvAbvBbvCbvCbvBbvAbvBbvAbvBbvAbvBbvAbfzbfzbuvbvDbtdbvEbvFbpZbuxbvGbvHbvIbvJbqgbvKbvLbvMbvNbvObuGbuGbvPbuGbuGbvQbvRbvSbvTbvUbuGbvVbvWbvXbvYbvYbvYbvZbvZbvZbvZbvZbwabwbbwcbwdbwcbwebwcbqFbwfbEnbwhbwibwjbkDaadaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwkbwlbwkbwmbwnbwmbwmbwmbwmbwmbwobwpbjwbsjbwqbhYbwrbwsbwtbwubwvbwwbwxbwxbwxbwwbwwcCgbobaKebwzbqXbmCbwAbwBbwCbwDbwEbmCaaaaaaaadbwFbwGbsxbwHbwIaadaaaaaabsBbwJbwKbwLbwMbvtbvubvvbrhbziaIPcCcbwObwPbwQbvybwRbwSbvAbwTbwUbwVbwWbwXbwYbwZbxabwZbxbbvAbhccribuvbxcbtdbxdbxebxfbxgbxhbxibxibxjbxkbxlbxmbxnbxobxpbxqbxrbxqbxqbxsbxqbxqbxtbxubxqbxqbxvbxwbxxbvYbxybxzbxAbxBbxCbxDbvZbxEbxFbxGbxHbxIbxFbxJbqFbwfbhIbxKbxLbxMbkDaaaaaaaaaaaaaaaaaaaaaaadbxNaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
|
||||
@@ -72,6 +72,7 @@
|
||||
|
||||
#define STATUS_EFFECT_ICHORIAL_STAIN /datum/status_effect/ichorial_stain //Prevents a servant from being revived by vitality matrices for one minute.
|
||||
|
||||
#define STATUS_EFFECT_STASIS /datum/status_effect/incapacitating/stasis //Halts biological functions like bleeding, chemical processing, blood regeneration, walking, etc
|
||||
/////////////
|
||||
// NEUTRAL //
|
||||
/////////////
|
||||
|
||||
@@ -72,6 +72,8 @@
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/wings, GLOB.wings_list)
|
||||
if(!GLOB.moth_wings_list.len)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_wings, GLOB.moth_wings_list)
|
||||
if(!GLOB.moth_markings_list.len)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_markings, GLOB.moth_markings_list)
|
||||
|
||||
//CIT CHANGES - genitals and such
|
||||
if(!GLOB.cock_shapes_list.len)
|
||||
@@ -145,6 +147,7 @@
|
||||
"legs" = pick("Normal Legs","Digitigrade Legs"),
|
||||
"caps" = pick(GLOB.caps_list),
|
||||
"moth_wings" = pick(GLOB.moth_wings_list),
|
||||
"moth_markings" = pick(GLOB.moth_markings_list),
|
||||
"taur" = "None",
|
||||
"mam_body_markings" = pick(snowflake_markings_list),
|
||||
"mam_ears" = pick(snowflake_ears_list),
|
||||
|
||||
@@ -20,6 +20,11 @@
|
||||
/proc/SQLtime(timevar)
|
||||
return time2text(timevar || world.timeofday, "YYYY-MM-DD hh:mm:ss")
|
||||
|
||||
/proc/station_time(display_only = FALSE, wtime=world.time)
|
||||
return ((((wtime - SSticker.round_start_time) * SSticker.station_time_rate_multiplier) + SSticker.gametime_offset) % 864000) - (display_only? GLOB.timezoneOffset : 0)
|
||||
|
||||
/proc/station_time_timestamp(format = "hh:mm:ss", wtime)
|
||||
return time2text(station_time(TRUE, wtime), format)
|
||||
|
||||
GLOBAL_VAR_INIT(midnight_rollovers, 0)
|
||||
GLOBAL_VAR_INIT(rollovercheck_last_timeofday, 0)
|
||||
|
||||
@@ -35,6 +35,7 @@ GLOBAL_LIST_EMPTY(wings_list)
|
||||
GLOBAL_LIST_EMPTY(wings_open_list)
|
||||
GLOBAL_LIST_EMPTY(r_wings_list)
|
||||
GLOBAL_LIST_EMPTY(moth_wings_list)
|
||||
GLOBAL_LIST_EMPTY(moth_markings_list)
|
||||
GLOBAL_LIST_EMPTY(caps_list)
|
||||
|
||||
GLOBAL_LIST_INIT(ghost_forms_with_directions_list, list("ghost")) //stores the ghost forms that support directional sprites
|
||||
|
||||
@@ -5,11 +5,13 @@ SUBSYSTEM_DEF(vis_overlays)
|
||||
init_order = INIT_ORDER_VIS
|
||||
|
||||
var/list/vis_overlay_cache
|
||||
var/list/unique_vis_overlays
|
||||
var/list/currentrun
|
||||
var/datum/callback/rotate_cb
|
||||
|
||||
/datum/controller/subsystem/vis_overlays/Initialize()
|
||||
vis_overlay_cache = list()
|
||||
unique_vis_overlays = list()
|
||||
rotate_cb = CALLBACK(src, .proc/rotate_vis_overlay)
|
||||
return ..()
|
||||
|
||||
@@ -31,20 +33,23 @@ SUBSYSTEM_DEF(vis_overlays)
|
||||
return
|
||||
|
||||
//the "thing" var can be anything with vis_contents which includes images
|
||||
/datum/controller/subsystem/vis_overlays/proc/add_vis_overlay(atom/movable/thing, icon, iconstate, layer, plane, dir, alpha=255)
|
||||
. = "[icon]|[iconstate]|[layer]|[plane]|[dir]|[alpha]"
|
||||
var/obj/effect/overlay/vis/overlay = vis_overlay_cache[.]
|
||||
if(!overlay)
|
||||
overlay = new
|
||||
overlay.icon = icon
|
||||
overlay.icon_state = iconstate
|
||||
overlay.layer = layer
|
||||
overlay.plane = plane
|
||||
overlay.dir = dir
|
||||
overlay.alpha = alpha
|
||||
vis_overlay_cache[.] = overlay
|
||||
/datum/controller/subsystem/vis_overlays/proc/add_vis_overlay(atom/movable/thing, icon, iconstate, layer, plane, dir, alpha = 255, add_appearance_flags = NONE, unique = FALSE)
|
||||
var/obj/effect/overlay/vis/overlay
|
||||
if(!unique)
|
||||
. = "[icon]|[iconstate]|[layer]|[plane]|[dir]|[alpha]|[add_appearance_flags]"
|
||||
overlay = vis_overlay_cache[.]
|
||||
if(!overlay)
|
||||
overlay = _create_new_vis_overlay(icon, iconstate, layer, plane, dir, alpha, add_appearance_flags)
|
||||
vis_overlay_cache[.] = overlay
|
||||
else
|
||||
overlay.unused = 0
|
||||
else
|
||||
overlay.unused = 0
|
||||
overlay = _create_new_vis_overlay(icon, iconstate, layer, plane, dir, alpha, add_appearance_flags)
|
||||
overlay.cache_expiration = -1
|
||||
var/cache_id = "\ref[overlay]@{[world.time]}"
|
||||
unique_vis_overlays += overlay
|
||||
vis_overlay_cache[cache_id] = overlay
|
||||
. = overlay
|
||||
thing.vis_contents += overlay
|
||||
|
||||
if(!isatom(thing)) // Automatic rotation is not supported on non atoms
|
||||
@@ -56,6 +61,17 @@ SUBSYSTEM_DEF(vis_overlays)
|
||||
else
|
||||
thing.managed_vis_overlays += overlay
|
||||
|
||||
/datum/controller/subsystem/vis_overlays/proc/_create_new_vis_overlay(icon, iconstate, layer, plane, dir, alpha, add_appearance_flags)
|
||||
var/obj/effect/overlay/vis/overlay = new
|
||||
overlay.icon = icon
|
||||
overlay.icon_state = iconstate
|
||||
overlay.layer = layer
|
||||
overlay.plane = plane
|
||||
overlay.dir = dir
|
||||
overlay.alpha = alpha
|
||||
overlay.appearance_flags |= add_appearance_flags
|
||||
return overlay
|
||||
|
||||
/datum/controller/subsystem/vis_overlays/proc/remove_vis_overlay(atom/movable/thing, list/overlays)
|
||||
thing.vis_contents -= overlays
|
||||
if(!isatom(thing))
|
||||
@@ -68,8 +84,11 @@ SUBSYSTEM_DEF(vis_overlays)
|
||||
/datum/controller/subsystem/vis_overlays/proc/rotate_vis_overlay(atom/thing, old_dir, new_dir)
|
||||
var/rotation = dir2angle(old_dir) - dir2angle(new_dir)
|
||||
var/list/overlays_to_remove = list()
|
||||
for(var/i in thing.managed_vis_overlays)
|
||||
for(var/i in thing.managed_vis_overlays - unique_vis_overlays)
|
||||
var/obj/effect/overlay/vis/overlay = i
|
||||
add_vis_overlay(thing, overlay.icon, overlay.icon_state, overlay.layer, overlay.plane, turn(overlay.dir, rotation))
|
||||
overlays_to_remove += overlay
|
||||
for(var/i in thing.managed_vis_overlays & unique_vis_overlays)
|
||||
var/obj/effect/overlay/vis/overlay = i
|
||||
overlay.dir = turn(overlay.dir, rotation)
|
||||
remove_vis_overlay(thing, overlays_to_remove)
|
||||
|
||||
@@ -80,6 +80,44 @@
|
||||
desc = "You've fallen asleep. Wait a bit and you should wake up. Unless you don't, considering how helpless you are."
|
||||
icon_state = "asleep"
|
||||
|
||||
//STASIS
|
||||
/datum/status_effect/incapacitating/stasis
|
||||
id = "stasis"
|
||||
duration = -1
|
||||
tick_interval = 10
|
||||
alert_type = /obj/screen/alert/status_effect/stasis
|
||||
var/last_dead_time
|
||||
|
||||
/datum/status_effect/incapacitating/stasis/proc/update_time_of_death()
|
||||
if(last_dead_time)
|
||||
var/delta = world.time - last_dead_time
|
||||
var/new_timeofdeath = owner.timeofdeath + delta
|
||||
owner.timeofdeath = new_timeofdeath
|
||||
owner.tod = station_time_timestamp(wtime=new_timeofdeath)
|
||||
last_dead_time = null
|
||||
if(owner.stat == DEAD)
|
||||
last_dead_time = world.time
|
||||
|
||||
/datum/status_effect/incapacitating/stasis/on_creation(mob/living/new_owner, set_duration, updating_canmove)
|
||||
. = ..()
|
||||
update_time_of_death()
|
||||
|
||||
/datum/status_effect/incapacitating/stasis/tick()
|
||||
update_time_of_death()
|
||||
|
||||
/datum/status_effect/incapacitating/stasis/on_remove()
|
||||
update_time_of_death()
|
||||
return ..()
|
||||
|
||||
/datum/status_effect/incapacitating/stasis/be_replaced()
|
||||
update_time_of_death()
|
||||
return ..()
|
||||
|
||||
/obj/screen/alert/status_effect/stasis
|
||||
name = "Stasis"
|
||||
desc = "Your biological functions have halted. You could live forever this way, but it's pretty boring."
|
||||
icon_state = "stasis"
|
||||
|
||||
//OTHER DEBUFFS
|
||||
/datum/status_effect/his_wrath //does minor damage over time unless holding His Grace
|
||||
id = "his_wrath"
|
||||
|
||||
@@ -88,11 +88,13 @@
|
||||
if(istype(AM,/mob/living))
|
||||
var/mob/living/AMob = AM
|
||||
AMob.grabbedby(src)
|
||||
|
||||
return TRUE
|
||||
stop_pulling()
|
||||
if(AM.pulledby)
|
||||
log_combat(AM, AM.pulledby, "pulled from", src)
|
||||
AM.pulledby.stop_pulling() //an object can't be pulled by two mobs at once.
|
||||
|
||||
pulling = AM
|
||||
AM.pulledby = src
|
||||
grab_state = gs
|
||||
@@ -102,19 +104,44 @@
|
||||
var/mob/M = AM
|
||||
log_combat(src, M, "grabbed", addition="passive grab")
|
||||
visible_message("[src] has grabbed [M] passively.</span>")
|
||||
|
||||
return TRUE
|
||||
|
||||
//move character into tile whos grabbing you
|
||||
/atom/movable/proc/adjust_position()
|
||||
|
||||
var/pull_dir = get_dir(src, pulledby)
|
||||
if (pulledby <> null)
|
||||
switch(pull_dir)
|
||||
if(NORTH)
|
||||
animate(src, pixel_x=0, pixel_y=8, time=5)
|
||||
if(NORTHEAST)
|
||||
animate(src, pixel_x=8, pixel_y=8, time=5)
|
||||
if(NORTHWEST)
|
||||
animate(src, pixel_x=-8, pixel_y=8, time=5)
|
||||
if(SOUTHEAST)
|
||||
animate(src, pixel_x=8, pixel_y=-8, time=5)
|
||||
if(SOUTHWEST)
|
||||
animate(src, pixel_x=-8, pixel_y=-8, time=5)
|
||||
if(SOUTH)
|
||||
animate(src, pixel_x=0, pixel_y=-8, time=5)
|
||||
if(WEST)
|
||||
animate(src, pixel_x=-8, pixel_y=0, time=5)
|
||||
if(EAST)
|
||||
animate(src, pixel_x=8, pixel_y=0, time=5)
|
||||
|
||||
|
||||
/atom/movable/proc/stop_pulling()
|
||||
if(pulling)
|
||||
pulling.pulledby = null
|
||||
var/mob/living/ex_pulled = pulling
|
||||
pulling = null
|
||||
grab_state = 0
|
||||
|
||||
if(isliving(ex_pulled))
|
||||
var/mob/living/L = ex_pulled
|
||||
L.update_canmove()// mob gets up if it was lyng down in a chokehold
|
||||
|
||||
|
||||
/atom/movable/proc/Move_Pulled(atom/A)
|
||||
if(!pulling)
|
||||
return
|
||||
@@ -132,9 +159,12 @@
|
||||
return
|
||||
step(pulling, get_dir(pulling.loc, A))
|
||||
|
||||
|
||||
|
||||
/atom/movable/proc/check_pulling()
|
||||
if(pulling)
|
||||
var/atom/movable/pullee = pulling
|
||||
|
||||
if(pullee && get_dist(src, pullee) > 1)
|
||||
stop_pulling()
|
||||
return
|
||||
@@ -149,6 +179,11 @@
|
||||
stop_pulling()
|
||||
return
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////
|
||||
// Here's where we rewrite how byond handles movement except slightly different
|
||||
// To be removed on step_ conversion
|
||||
@@ -220,6 +255,7 @@
|
||||
// place due to a Crossed, Bumped, etc. call will interrupt
|
||||
// the second half of the diagonal movement, or the second attempt
|
||||
// at a first half if step() fails because we hit something.
|
||||
|
||||
if (direct & NORTH)
|
||||
if (direct & EAST)
|
||||
if (step(src, NORTH) && moving_diagonally)
|
||||
@@ -276,6 +312,7 @@
|
||||
if(. && pulling && pulling == pullee) //we were pulling a thing and didn't lose it during our move.
|
||||
if(pulling.anchored)
|
||||
stop_pulling()
|
||||
|
||||
else
|
||||
var/pull_dir = get_dir(src, pulling)
|
||||
//puller and pullee more than one tile away or in diagonal position
|
||||
@@ -283,6 +320,7 @@
|
||||
pulling.Move(T, get_dir(pulling, T)) //the pullee tries to reach our previous position
|
||||
if(pulling && get_dist(src, pulling) > 1) //the pullee couldn't keep up
|
||||
stop_pulling()
|
||||
|
||||
if(pulledby && moving_diagonally != FIRST_DIAG_STEP && get_dist(src, pulledby) > 1)//separated from our puller and not in the middle of a diagonal move.
|
||||
pulledby.stop_pulling()
|
||||
|
||||
|
||||
@@ -179,12 +179,15 @@ Class Procs:
|
||||
L.update_canmove()
|
||||
occupant = null
|
||||
|
||||
/obj/machinery/proc/can_be_occupant(atom/movable/am)
|
||||
return occupant_typecache ? is_type_in_typecache(am, occupant_typecache) : isliving(am)
|
||||
|
||||
/obj/machinery/proc/close_machine(atom/movable/target = null)
|
||||
state_open = FALSE
|
||||
density = TRUE
|
||||
if(!target)
|
||||
for(var/am in loc)
|
||||
if (!(occupant_typecache ? is_type_in_typecache(am, occupant_typecache) : isliving(am)))
|
||||
if (!(can_be_occupant(am)))
|
||||
continue
|
||||
var/atom/movable/AM = am
|
||||
if(AM.has_buckled_mobs())
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
var/obj/item/reagent_containers/beaker = null
|
||||
var/static/list/drip_containers = typecacheof(list(/obj/item/reagent_containers/blood,
|
||||
/obj/item/reagent_containers/food,
|
||||
/obj/item/reagent_containers/glass))
|
||||
|
||||
/obj/item/reagent_containers/glass,
|
||||
/obj/item/reagent_containers/chem_pack))
|
||||
/obj/machinery/iv_drip/Initialize()
|
||||
. = ..()
|
||||
update_icon()
|
||||
|
||||
@@ -0,0 +1,137 @@
|
||||
#define STASIS_TOGGLE_COOLDOWN 50
|
||||
/obj/machinery/stasis
|
||||
name = "Lifeform Stasis Unit"
|
||||
desc = "A not so comfortable looking bed with some nozzles at the top and bottom. It will keep someone in stasis."
|
||||
icon = 'icons/obj/machines/stasis.dmi'
|
||||
icon_state = "stasis"
|
||||
density = FALSE
|
||||
can_buckle = TRUE
|
||||
buckle_lying = 90
|
||||
circuit = /obj/item/circuitboard/machine/stasis
|
||||
idle_power_usage = 40
|
||||
active_power_usage = 340
|
||||
var/stasis_enabled = TRUE
|
||||
var/last_stasis_sound = FALSE
|
||||
var/stasis_can_toggle = 0
|
||||
var/mattress_state = "stasis_on"
|
||||
var/obj/effect/overlay/vis/mattress_on
|
||||
|
||||
/obj/machinery/stasis/examine(mob/user)
|
||||
..()
|
||||
var/turn_on_or_off = stasis_enabled ? "turn off" : "turn on"
|
||||
to_chat(user, "<span class='notice'>Alt-click to [turn_on_or_off] the machine.</span>")
|
||||
|
||||
/obj/machinery/stasis/proc/play_power_sound()
|
||||
var/_running = stasis_running()
|
||||
if(last_stasis_sound != _running)
|
||||
var/sound_freq = rand(5120, 8800)
|
||||
if(_running)
|
||||
playsound(src, 'sound/machines/synth_yes.ogg', 50, TRUE, frequency = sound_freq)
|
||||
else
|
||||
playsound(src, 'sound/machines/synth_no.ogg', 50, TRUE, frequency = sound_freq)
|
||||
last_stasis_sound = _running
|
||||
|
||||
/obj/machinery/stasis/AltClick(mob/user)
|
||||
if(world.time >= stasis_can_toggle && user.canUseTopic(src))
|
||||
stasis_enabled = !stasis_enabled
|
||||
stasis_can_toggle = world.time + STASIS_TOGGLE_COOLDOWN
|
||||
playsound(src, 'sound/machines/click.ogg', 60, TRUE)
|
||||
play_power_sound()
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/stasis/Exited(atom/movable/AM, atom/newloc)
|
||||
if(AM == occupant)
|
||||
var/mob/living/L = AM
|
||||
if(L.IsInStasis())
|
||||
thaw_them(L)
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/stasis/proc/stasis_running()
|
||||
return stasis_enabled && is_operational()
|
||||
|
||||
/obj/machinery/stasis/update_icon()
|
||||
. = ..()
|
||||
var/_running = stasis_running()
|
||||
var/list/overlays_to_remove = managed_vis_overlays
|
||||
|
||||
if(mattress_state)
|
||||
if(!mattress_on || !managed_vis_overlays)
|
||||
mattress_on = SSvis_overlays.add_vis_overlay(src, icon, mattress_state, layer, plane, dir, alpha = 0, unique = TRUE)
|
||||
|
||||
if(mattress_on.alpha ? !_running : _running) //check the inverse of _running compared to truthy alpha, to see if they differ
|
||||
var/new_alpha = _running ? 255 : 0
|
||||
var/easing_direction = _running ? EASE_OUT : EASE_IN
|
||||
animate(mattress_on, alpha = new_alpha, time = 50, easing = CUBIC_EASING|easing_direction)
|
||||
|
||||
overlays_to_remove = managed_vis_overlays - mattress_on
|
||||
|
||||
SSvis_overlays.remove_vis_overlay(src, overlays_to_remove)
|
||||
|
||||
if(occupant)
|
||||
SSvis_overlays.add_vis_overlay(src, 'icons/obj/machines/stasis.dmi', "tubes", LYING_MOB_LAYER + 0.1, plane, dir) //using vis_overlays instead of normal overlays for mouse_opacity here
|
||||
|
||||
if(stat & BROKEN)
|
||||
icon_state = "stasis_broken"
|
||||
return
|
||||
if(panel_open || stat & MAINT)
|
||||
icon_state = "stasis_maintenance"
|
||||
return
|
||||
icon_state = "stasis"
|
||||
|
||||
/obj/machinery/stasis/obj_break(damage_flag)
|
||||
. = ..()
|
||||
play_power_sound()
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/stasis/power_change()
|
||||
. = ..()
|
||||
play_power_sound()
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/stasis/proc/chill_out(mob/living/target)
|
||||
if(target != occupant)
|
||||
return
|
||||
var/freq = rand(24750, 26550)
|
||||
playsound(src, 'sound/effects/spray.ogg', 5, TRUE, 2, frequency = freq)
|
||||
target.SetStasis(TRUE)
|
||||
target.ExtinguishMob()
|
||||
use_power = ACTIVE_POWER_USE
|
||||
|
||||
/obj/machinery/stasis/proc/thaw_them(mob/living/target)
|
||||
target.SetStasis(FALSE)
|
||||
if(target == occupant)
|
||||
use_power = IDLE_POWER_USE
|
||||
|
||||
/obj/machinery/stasis/post_buckle_mob(mob/living/L)
|
||||
if(!can_be_occupant(L))
|
||||
return
|
||||
occupant = L
|
||||
if(stasis_running())
|
||||
chill_out(L)
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/stasis/post_unbuckle_mob(mob/living/L)
|
||||
thaw_them(L)
|
||||
if(L == occupant)
|
||||
occupant = null
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/stasis/process()
|
||||
if( !( occupant && isliving(occupant)) )
|
||||
use_power = IDLE_POWER_USE
|
||||
return
|
||||
var/mob/living/L_occupant = occupant
|
||||
if(stasis_running())
|
||||
if(!L_occupant.IsInStasis())
|
||||
chill_out(L_occupant)
|
||||
else if(L_occupant.IsInStasis())
|
||||
thaw_them(L_occupant)
|
||||
|
||||
/obj/machinery/stasis/screwdriver_act(mob/living/user, obj/item/I)
|
||||
. = default_deconstruction_screwdriver(user, "stasis_maintenance", "stasis", I)
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/stasis/crowbar_act(mob/living/user, obj/item/I)
|
||||
return default_deconstruction_crowbar(I)
|
||||
|
||||
#undef STASIS_TOGGLE_COOLDOWN
|
||||
@@ -419,6 +419,7 @@
|
||||
"name" = "[customsender]",
|
||||
"job" = "[customjob]",
|
||||
"message" = custommessage,
|
||||
"emoji_message" = emoji_parse(custommessage),
|
||||
"targets" = list("[customrecepient.owner] ([customrecepient.ownjob])")
|
||||
))
|
||||
// this will log the signal and transmit it to the target
|
||||
|
||||
@@ -106,10 +106,11 @@
|
||||
return "Everyone"
|
||||
return data["targets"][1]
|
||||
|
||||
/datum/signal/subspace/pda/proc/format_message()
|
||||
/datum/signal/subspace/pda/proc/format_message(emojify = FALSE)
|
||||
var/message = emojify ? data["emoji_message"] : data["message"]
|
||||
if (logged && data["photo"])
|
||||
return "\"[data["message"]]\" (<a href='byond://?src=[REF(logged)];photo=1'>Photo</a>)"
|
||||
return "\"[data["message"]]\""
|
||||
return "\"[message]\" (<a href='byond://?src=[REF(logged)];photo=1'>Photo</a>)"
|
||||
return "\"[message]\""
|
||||
|
||||
/datum/signal/subspace/pda/broadcast()
|
||||
if (!logged) // Can only go through if a message server logs it
|
||||
|
||||
@@ -7,6 +7,14 @@
|
||||
/obj/item/stack/cable_coil = 1,
|
||||
/obj/item/stack/sheet/glass = 2)
|
||||
|
||||
/obj/item/circuitboard/machine/stasis
|
||||
name = "Lifeform Stasis Unit (Machine Board)"
|
||||
build_path = /obj/machinery/stasis
|
||||
req_components = list(
|
||||
/obj/item/stack/cable_coil = 3,
|
||||
/obj/item/stock_parts/manipulator = 1,
|
||||
/obj/item/stock_parts/capacitor = 1)
|
||||
|
||||
/obj/item/circuitboard/machine/vr_sleeper
|
||||
name = "VR Sleeper (Machine Board)"
|
||||
build_path = /obj/machinery/vr_sleeper
|
||||
|
||||
@@ -714,6 +714,7 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
return
|
||||
if((last_text && world.time < last_text + 10) || (everyone && last_everyone && world.time < last_everyone + PDA_SPAM_DELAY))
|
||||
return
|
||||
var/emoji_message = emoji_parse(message)
|
||||
if(prob(1))
|
||||
message += "\nSent from my PDA"
|
||||
// Send the signal
|
||||
@@ -734,7 +735,8 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
"name" = "[owner]",
|
||||
"job" = "[ownjob]",
|
||||
"message" = message,
|
||||
"targets" = string_targets
|
||||
"targets" = string_targets,
|
||||
"emoji_message" = emoji_message
|
||||
))
|
||||
if (picture)
|
||||
signal.data["photo"] = picture
|
||||
@@ -751,13 +753,13 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
// Log it in our logs
|
||||
tnote += "<i><b>→ To [target_text]:</b></i><br>[signal.format_message()]<br>"
|
||||
// Show it to ghosts
|
||||
var/ghost_message = "<span class='name'>[owner] </span><span class='game say'>PDA Message</span> --> <span class='name'>[target_text]</span>: <span class='message'>[signal.format_message()]</span>"
|
||||
var/ghost_message = "<span class='name'>[owner] </span><span class='game say'>PDA Message</span> --> <span class='name'>[target_text]</span>: <span class='message'>[signal.format_message(TRUE)]</span>"
|
||||
for(var/mob/M in GLOB.player_list)
|
||||
if(isobserver(M) && M.client && (M.client.prefs.chat_toggles & CHAT_GHOSTPDA))
|
||||
to_chat(M, "[FOLLOW_LINK(M, user)] [ghost_message]")
|
||||
// Log in the talk log
|
||||
user.log_talk(message, LOG_PDA, tag="PDA: [initial(name)] to [target_text]")
|
||||
to_chat(user, "<span class='info'>Message sent to [target_text]: \"[message]\"</span>")
|
||||
to_chat(user, "<span class='info'>Message sent to [target_text]: \"[emoji_message]\"</span>")
|
||||
if (!silent)
|
||||
playsound(src, 'sound/machines/terminal_success.ogg', 15, 1)
|
||||
// Reset the photo
|
||||
@@ -787,7 +789,7 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
hrefstart = "<a href='?src=[REF(L)];track=[html_encode(signal.data["name"])]'>"
|
||||
hrefend = "</a>"
|
||||
|
||||
to_chat(L, "[icon2html(src)] <b>Message from [hrefstart][signal.data["name"]] ([signal.data["job"]])[hrefend], </b>[signal.format_message()] (<a href='byond://?src=[REF(src)];choice=Message;skiprefresh=1;target=[REF(signal.source)]'>Reply</a>)")
|
||||
to_chat(L, "[icon2html(src)] <b>Message from [hrefstart][signal.data["name"]] ([signal.data["job"]])[hrefend], </b>[signal.format_message(TRUE)] (<a href='byond://?src=[REF(src)];choice=Message;skiprefresh=1;target=[REF(signal.source)]'>Reply</a>)")
|
||||
|
||||
update_icon(TRUE)
|
||||
|
||||
|
||||
@@ -364,7 +364,7 @@
|
||||
STR.max_combined_w_class = 200
|
||||
STR.max_items = 50
|
||||
STR.insert_preposition = "in"
|
||||
STR.can_hold = typecacheof(list(/obj/item/reagent_containers/pill, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/glass/bottle))
|
||||
STR.can_hold = typecacheof(list(/obj/item/reagent_containers/pill, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/glass/bottle,/obj/item/reagent_containers/chem_pack))
|
||||
|
||||
/*
|
||||
* Biowaste bag (mostly for xenobiologists)
|
||||
|
||||
@@ -259,8 +259,8 @@ GLOBAL_VAR(restart_counter)
|
||||
|
||||
s += "<b>[station_name()]</b>";
|
||||
s += " ("
|
||||
s += "<a href=\"https://citadel-station.net/home/\">" //Change this to wherever you want the hub to link to. CIT CHANGE - links to cit's website on the hub
|
||||
s += "Citadel" //Replace this with something else. Or ever better, delete it and uncomment the game version. CIT CHANGE - modifies the hub entry link
|
||||
s += "<a href=\"http://hyperstation13.com//\">" //Change this to wherever you want the hub to link to. CIT CHANGE - links to cit's website on the hub
|
||||
s += "Website" //Replace this with something else. Or ever better, delete it and uncomment the game version. CIT CHANGE - modifies the hub entry link
|
||||
s += "</a>"
|
||||
s += ")\]" //CIT CHANGE - encloses the server title in brackets to make the hub entry fancier
|
||||
s += "<br>[CONFIG_GET(string/servertagline)]<br>" //CIT CHANGE - adds a tagline!
|
||||
|
||||
@@ -104,6 +104,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
"body_markings" = "None",
|
||||
"legs" = "Normal Legs",
|
||||
"moth_wings" = "Plain",
|
||||
"moth_markings" = "None",
|
||||
"mcolor2" = "FFF",
|
||||
"mcolor3" = "FFF",
|
||||
"mam_body_markings" = "Plain",
|
||||
@@ -459,6 +460,20 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
if(mutant_category >= MAX_MUTANT_ROWS)
|
||||
dat += "</td>"
|
||||
mutant_category = 0
|
||||
|
||||
if("moth_markings" in pref_species.default_features)
|
||||
if(!mutant_category)
|
||||
dat += APPEARANCE_CATEGORY_COLUMN
|
||||
|
||||
dat += "<h3>Moth markings</h3>"
|
||||
|
||||
dat += "<a href='?_src_=prefs;preference=moth_markings;task=input'>[features["moth_markings"]]</a><BR>"
|
||||
|
||||
mutant_category++
|
||||
if(mutant_category >= MAX_MUTANT_ROWS)
|
||||
dat += "</td>"
|
||||
mutant_category = 0
|
||||
|
||||
if("tail_human" in pref_species.default_features)
|
||||
if(!mutant_category)
|
||||
dat += APPEARANCE_CATEGORY_COLUMN
|
||||
@@ -1788,6 +1803,12 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
if(new_moth_wings)
|
||||
features["moth_wings"] = new_moth_wings
|
||||
|
||||
if("moth_markings")
|
||||
var/new_moth_markings
|
||||
new_moth_markings = input(user, "Choose your character's markings:", "Character Preference") as null|anything in GLOB.moth_markings_list
|
||||
if(new_moth_markings)
|
||||
features["moth_markings"] = new_moth_markings
|
||||
|
||||
if("s_tone")
|
||||
var/new_s_tone = input(user, "Choose your character's skin-tone:", "Character Preference") as null|anything in GLOB.skin_tones
|
||||
if(new_s_tone)
|
||||
|
||||
@@ -291,6 +291,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
S["feature_lizard_body_markings"] >> features["body_markings"]
|
||||
S["feature_lizard_legs"] >> features["legs"]
|
||||
S["feature_moth_wings"] >> features["moth_wings"]
|
||||
S["feature_moth_markings"] >> features["moth_markings"]
|
||||
S["feature_human_tail"] >> features["tail_human"]
|
||||
S["feature_human_ears"] >> features["ears"]
|
||||
|
||||
@@ -433,6 +434,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
features["body_markings"] = sanitize_inlist(features["body_markings"], GLOB.body_markings_list)
|
||||
features["feature_lizard_legs"] = sanitize_inlist(features["legs"], GLOB.legs_list)
|
||||
features["moth_wings"] = sanitize_inlist(features["moth_wings"], GLOB.moth_wings_list)
|
||||
features["moth_markings"] = sanitize_inlist(features["moth_markings"], GLOB.moth_markings_list, "None")
|
||||
|
||||
joblessrole = sanitize_integer(joblessrole, 1, 3, initial(joblessrole))
|
||||
job_civilian_high = sanitize_integer(job_civilian_high, 0, 65535, initial(job_civilian_high))
|
||||
@@ -507,6 +509,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
WRITE_FILE(S["feature_lizard_body_markings"] , features["body_markings"])
|
||||
WRITE_FILE(S["feature_lizard_legs"] , features["legs"])
|
||||
WRITE_FILE(S["feature_moth_wings"] , features["moth_wings"])
|
||||
WRITE_FILE(S["feature_moth_markings"] , features["moth_markings"])
|
||||
|
||||
//Custom names
|
||||
for(var/custom_name_id in GLOB.preferences_custom_names)
|
||||
|
||||
@@ -399,7 +399,7 @@
|
||||
return TRUE
|
||||
if(!O.reagents || !O.reagents.reagent_list.len) // other empty containers not accepted
|
||||
return FALSE
|
||||
if(istype(O, /obj/item/reagent_containers/syringe) || istype(O, /obj/item/reagent_containers/glass/bottle) || istype(O, /obj/item/reagent_containers/glass/beaker) || istype(O, /obj/item/reagent_containers/spray) || istype(O, /obj/item/reagent_containers/medspray))
|
||||
if(istype(O, /obj/item/reagent_containers/syringe) || istype(O, /obj/item/reagent_containers/glass/bottle) || istype(O, /obj/item/reagent_containers/glass/beaker) || istype(O, /obj/item/reagent_containers/spray) || istype(O, /obj/item/reagent_containers/medspray)|| istype(O, /obj/item/reagent_containers/chem_pack))
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
|
||||
@@ -66,3 +66,55 @@
|
||||
/datum/sprite_accessory/moth_wings/snow
|
||||
name = "Snow"
|
||||
icon_state = "snow"
|
||||
|
||||
/datum/sprite_accessory/moth_markings // the markings that moths can have. finally something other than the boring tan
|
||||
icon = 'icons/mob/moth_markings.dmi'
|
||||
color_src = null
|
||||
|
||||
/datum/sprite_accessory/moth_markings/none
|
||||
name = "None"
|
||||
icon_state = "none"
|
||||
|
||||
/datum/sprite_accessory/moth_markings/reddish
|
||||
name = "Reddish"
|
||||
icon_state = "reddish"
|
||||
|
||||
/datum/sprite_accessory/moth_markings/royal
|
||||
name = "Royal"
|
||||
icon_state = "royal"
|
||||
|
||||
/datum/sprite_accessory/moth_markings/gothic
|
||||
name = "Gothic"
|
||||
icon_state = "gothic"
|
||||
|
||||
/datum/sprite_accessory/moth_markings/whitefly
|
||||
name = "White Fly"
|
||||
icon_state = "whitefly"
|
||||
|
||||
/datum/sprite_accessory/moth_markings/lovers
|
||||
name = "Lovers"
|
||||
icon_state = "lovers"
|
||||
|
||||
/datum/sprite_accessory/moth_markings/punished
|
||||
name = "Punished"
|
||||
icon_state = "punished"
|
||||
|
||||
/datum/sprite_accessory/moth_markings/firewatch
|
||||
name = "Firewatch"
|
||||
icon_state = "firewatch"
|
||||
|
||||
/datum/sprite_accessory/moth_markings/deathhead
|
||||
name = "Deathshead"
|
||||
icon_state = "deathhead"
|
||||
|
||||
/datum/sprite_accessory/moth_markings/poison
|
||||
name = "Poison"
|
||||
icon_state = "poison"
|
||||
|
||||
/datum/sprite_accessory/moth_markings/ragged
|
||||
name = "Ragged"
|
||||
icon_state = "ragged"
|
||||
|
||||
/datum/sprite_accessory/moth_markings/moonfly
|
||||
name = "Moon Fly"
|
||||
icon_state = "moonfly"
|
||||
@@ -4,7 +4,7 @@
|
||||
set invisibility = 0
|
||||
if (notransform)
|
||||
return
|
||||
if(..()) //not dead
|
||||
if(..() && !IsInStasis()) //not dead and not in stasis
|
||||
// GROW!
|
||||
if(amount_grown < max_grown)
|
||||
amount_grown++
|
||||
|
||||
@@ -28,21 +28,22 @@
|
||||
if (QDELETED(src))
|
||||
return 0
|
||||
|
||||
if(.) //not dead
|
||||
handle_active_genes()
|
||||
if(!IsInStasis())
|
||||
if(.) //not dead
|
||||
handle_active_genes()
|
||||
|
||||
if(stat != DEAD)
|
||||
//heart attack stuff
|
||||
handle_heart()
|
||||
if(stat != DEAD)
|
||||
//heart attack stuff
|
||||
handle_heart()
|
||||
|
||||
if(stat != DEAD)
|
||||
//Stuff jammed in your limbs hurts
|
||||
handle_embedded_objects()
|
||||
if(stat != DEAD)
|
||||
//Stuff jammed in your limbs hurts
|
||||
handle_embedded_objects()
|
||||
dna.species.spec_life(src) // for mutantraces
|
||||
|
||||
//Update our name based on whether our face is obscured/disfigured
|
||||
name = get_visible_name()
|
||||
|
||||
dna.species.spec_life(src) // for mutantraces
|
||||
|
||||
if(stat != DEAD)
|
||||
return 1
|
||||
|
||||
@@ -719,6 +719,8 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
S = GLOB.legs_list[H.dna.features["legs"]]
|
||||
if("moth_wings")
|
||||
S = GLOB.moth_wings_list[H.dna.features["moth_wings"]]
|
||||
if("moth_markings")
|
||||
S = GLOB.moth_markings_list[H.dna.features["moth_markings"]]
|
||||
if("caps")
|
||||
S = GLOB.caps_list[H.dna.features["caps"]]
|
||||
if("ipc_screen")
|
||||
|
||||
@@ -9,28 +9,29 @@
|
||||
stamdamageoverlaytemp = 0
|
||||
update_damage_hud()
|
||||
|
||||
if(stat != DEAD) //Reagent processing needs to come before breathing, to prevent edge cases.
|
||||
handle_organs()
|
||||
if(!IsInStasis())
|
||||
if(stat != DEAD) //Reagent processing needs to come before breathing, to prevent edge cases.
|
||||
handle_organs()
|
||||
|
||||
. = ..()
|
||||
. = ..()
|
||||
|
||||
if (QDELETED(src))
|
||||
return
|
||||
if (QDELETED(src))
|
||||
return
|
||||
|
||||
if(.) //not dead
|
||||
handle_blood()
|
||||
if(.) //not dead
|
||||
handle_blood()
|
||||
|
||||
if(stat != DEAD)
|
||||
var/bprv = handle_bodyparts()
|
||||
if(bprv & BODYPART_LIFE_UPDATE_HEALTH)
|
||||
updatehealth()
|
||||
update_stamina()
|
||||
if(stat != DEAD)
|
||||
var/bprv = handle_bodyparts()
|
||||
if(bprv & BODYPART_LIFE_UPDATE_HEALTH)
|
||||
updatehealth()
|
||||
update_stamina()
|
||||
|
||||
if(stat != DEAD)
|
||||
handle_brain_damage()
|
||||
if(stat != DEAD)
|
||||
handle_brain_damage()
|
||||
|
||||
if(stat != DEAD)
|
||||
handle_liver()
|
||||
if(stat != DEAD)
|
||||
handle_liver()
|
||||
|
||||
if(stat == DEAD)
|
||||
stop_sound_channel(CHANNEL_HEARTBEAT)
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
if (notransform)
|
||||
return
|
||||
|
||||
if(..())
|
||||
if(..() && !IsInStasis())
|
||||
|
||||
if(!client)
|
||||
if(stat == CONSCIOUS)
|
||||
|
||||
@@ -33,43 +33,45 @@
|
||||
return
|
||||
if(!loc)
|
||||
return
|
||||
var/datum/gas_mixture/environment = loc.return_air()
|
||||
if(!IsInStasis())
|
||||
if(stat != DEAD)
|
||||
//Mutations and radiation
|
||||
handle_mutations_and_radiation()
|
||||
|
||||
if(stat != DEAD)
|
||||
//Mutations and radiation
|
||||
handle_mutations_and_radiation()
|
||||
if(stat != DEAD)
|
||||
//Breathing, if applicable
|
||||
handle_breathing(times_fired)
|
||||
|
||||
if(stat != DEAD)
|
||||
//Breathing, if applicable
|
||||
handle_breathing(times_fired)
|
||||
handle_diseases()// DEAD check is in the proc itself; we want it to spread even if the mob is dead, but to handle its disease-y properties only if you're not.
|
||||
|
||||
handle_diseases()// DEAD check is in the proc itself; we want it to spread even if the mob is dead, but to handle its disease-y properties only if you're not.
|
||||
if (QDELETED(src)) // diseases can qdel the mob via transformations
|
||||
return
|
||||
|
||||
if (QDELETED(src)) // diseases can qdel the mob via transformations
|
||||
return
|
||||
if(stat != DEAD)
|
||||
//Random events (vomiting etc)
|
||||
handle_random_events()
|
||||
|
||||
if(stat != DEAD)
|
||||
//Random events (vomiting etc)
|
||||
handle_random_events()
|
||||
//Handle temperature/pressure differences between body and environment
|
||||
var/datum/gas_mixture/environment = loc.return_air()
|
||||
if(environment)
|
||||
handle_environment(environment)
|
||||
|
||||
//Handle temperature/pressure differences between body and environment
|
||||
if(environment)
|
||||
handle_environment(environment)
|
||||
|
||||
|
||||
//stuff in the stomach
|
||||
handle_stomach()
|
||||
|
||||
handle_gravity()
|
||||
|
||||
if(stat != DEAD)
|
||||
handle_traits() // eye, ear, brain damages
|
||||
handle_status_effects() //all special effects, stun, knockdown, jitteryness, hallucination, sleeping, etc
|
||||
|
||||
handle_fire()
|
||||
|
||||
//stuff in the stomach
|
||||
handle_stomach()
|
||||
|
||||
handle_gravity()
|
||||
|
||||
if(machine)
|
||||
machine.check_eye(src)
|
||||
|
||||
if(stat != DEAD)
|
||||
handle_traits() // eye, ear, brain damages
|
||||
if(stat != DEAD)
|
||||
handle_status_effects() //all special effects, stun, knockdown, jitteryness, hallucination, sleeping, etc
|
||||
|
||||
if(stat != DEAD)
|
||||
return 1
|
||||
|
||||
@@ -339,7 +339,7 @@
|
||||
death()
|
||||
|
||||
|
||||
/mob/living/incapacitated(ignore_restraints, ignore_grab)
|
||||
/mob/living/incapacitated(ignore_restraints, ignore_grab, ignore_stasis)
|
||||
if(stat || IsUnconscious() || IsStun() || IsKnockdown() || recoveringstam || (!ignore_restraints && restrained(ignore_grab))) // CIT CHANGE - adds recoveringstam check here
|
||||
return TRUE
|
||||
|
||||
@@ -603,7 +603,7 @@
|
||||
..(pressure_difference, direction, pressure_resistance_prob_delta)
|
||||
|
||||
/mob/living/can_resist()
|
||||
return !((next_move > world.time) || incapacitated(ignore_restraints = TRUE))
|
||||
return !((next_move > world.time) || incapacitated(ignore_restraints = TRUE, ignore_stasis= TRUE))
|
||||
|
||||
/mob/living/verb/resist()
|
||||
set name = "Resist"
|
||||
@@ -1011,6 +1011,8 @@
|
||||
var/has_legs = get_num_legs()
|
||||
var/has_arms = get_num_arms()
|
||||
var/ignore_legs = get_leg_ignore()
|
||||
var/in_stasis = IsInStasis()
|
||||
var/canmove = !buckled && (pulledby) && !chokehold && !IsFrozen() && !in_stasis && (has_arms || ignore_legs || has_legs)
|
||||
var/pinned = resting && pulledby && pulledby.grab_state >= GRAB_AGGRESSIVE // Cit change - adds pinning for aggressive-grabbing people on the ground
|
||||
if(ko || move_and_fall || IsStun() || chokehold) // Cit change - makes resting not force you to drop everything
|
||||
drop_all_held_items()
|
||||
|
||||
@@ -138,6 +138,14 @@
|
||||
priority_absorb_key["stuns_absorbed"] += amount
|
||||
return TRUE
|
||||
|
||||
/////////////////////////////////// STASIS ///////////////////////////////////
|
||||
|
||||
/mob/living/proc/IsInStasis()
|
||||
. = has_status_effect(STATUS_EFFECT_STASIS)
|
||||
|
||||
/mob/living/proc/SetStasis(apply, updating = TRUE)
|
||||
. = apply ? apply_status_effect(STATUS_EFFECT_STASIS, null, updating) : remove_status_effect(STATUS_EFFECT_STASIS)
|
||||
|
||||
/////////////////////////////////// DISABILITIES ////////////////////////////////////
|
||||
|
||||
/mob/living/proc/add_quirk(quirk, spawn_effects) //separate proc due to the way these ones are handled
|
||||
|
||||
@@ -2,6 +2,14 @@
|
||||
///MEDICAL Boards//
|
||||
///////////////////
|
||||
|
||||
/datum/design/board/stasis
|
||||
name = "Machine Design (Lifeform Stasis Unit)"
|
||||
desc = "The circuit board for a stasis unit."
|
||||
id = "stasis"
|
||||
build_path = /obj/item/circuitboard/machine/stasis
|
||||
category = list("Medical Machinery")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/board/limbgrower
|
||||
name = "Machine Design (Limb Grower Board)"
|
||||
desc = "The circuit board for a limb grower."
|
||||
|
||||
@@ -508,7 +508,7 @@
|
||||
display_name = "Cryostasis Technology"
|
||||
description = "Smart freezing of objects to preserve them!"
|
||||
prereq_ids = list("adv_engi", "biotech")
|
||||
design_ids = list("splitbeaker", "noreactsyringe", "cryotube", "cryo_Grenade")
|
||||
design_ids = list("splitbeaker", "noreactsyringe", "cryotube", "cryo_Grenade", "stasis")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2000)
|
||||
export_price = 4000
|
||||
|
||||
|
||||
|
After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 103 KiB After Width: | Height: | Size: 103 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 758 B |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 758 B |
|
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.4 KiB |
@@ -149,8 +149,8 @@
|
||||
should_draw_citadel = TRUE
|
||||
species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR)
|
||||
inherent_biotypes = list(MOB_ORGANIC, MOB_HUMANOID, MOB_BUG)
|
||||
mutant_bodyparts = list("mam_ears", "mam_body_markings", "mam_tail", "taur", "moth_wings", "mam_snouts")
|
||||
default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_tail" = "None", "mam_ears" = "None", "moth_wings" = "Plain", "mam_snouts" = "Bug", "mam_body_markings" = "Moth", "taur" = "None")
|
||||
mutant_bodyparts = list("mam_ears", "mam_body_markings", "mam_tail", "taur", "moth_wings","moth_markings", "mam_snouts")
|
||||
default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_tail" = "None", "mam_ears" = "None", "moth_wings" = "Plain","moth_markings" = "None", "mam_snouts" = "Bug", "mam_body_markings" = "Moth", "taur" = "None")
|
||||
attack_verb = "flutter" //wat?
|
||||
attack_sound = 'sound/weapons/slash.ogg'
|
||||
miss_sound = 'sound/weapons/slashmiss.ogg'
|
||||
|
||||
@@ -605,6 +605,7 @@
|
||||
#include "code\game\machinery\Sleeper.dm"
|
||||
#include "code\game\machinery\slotmachine.dm"
|
||||
#include "code\game\machinery\spaceheater.dm"
|
||||
#include "code\game\machinery\stasis.dm"
|
||||
#include "code\game\machinery\status_display.dm"
|
||||
#include "code\game\machinery\suit_storage_unit.dm"
|
||||
#include "code\game\machinery\syndicatebeacon.dm"
|
||||
|
||||